マルウェア駆除サービスに戻る
セキュリティ設定読了目安 12分

WordPressファイルパーミッション設定ガイド
── 推奨値一覧とwp-config.phpの保護方法

ファイルパーミッション(権限設定)は、WordPressセキュリティの基本中の基本です。 設定が甘いと、マルウェアがファイルを書き換え放題になります。 逆に厳しすぎると、WordPress自体が正常に動作しなくなります。 この記事では、WordPress公式が推奨するパーミッション値と、 実際のサーバー環境に合わせた設定方法を解説します。

パーミッションの基礎知識

Linuxサーバー上のファイルパーミッションは、3桁の数字で表されます。 各桁は「所有者(Owner)」「グループ(Group)」「その他(Others)」の権限を示し、 数字は「読み取り(4)」「書き込み(2)」「実行(1)」の合計値です。

数値権限記号表記説明
7読み+書き+実行rwx全ての操作が可能
6読み+書きrw-読み書き可能、実行不可
5読み+実行r-x読み取りと実行が可能、書き込み不可
4読みのみr--読み取りのみ可能
0権限なし---一切のアクセス不可

例えば755は、 所有者が「読み+書き+実行(7)」、グループが「読み+実行(5)」、その他が「読み+実行(5)」を意味します。 ディレクトリの場合、「実行」はそのディレクトリに入る(cd)権限を指します。

お困りですか?専門家に無料で相談できます

マルウェア感染の疑いがある場合、早期対応が被害を最小限に抑えます。 まずはLINEで無料相談をご利用ください。

wp-config.phpの保護方法【3つのアプローチ】

wp-config.phpには データベースの接続情報、認証キー、テーブルプレフィックスなど、 サイトの最重要情報が含まれています。このファイルの保護は最優先事項です。

1パーミッションを400または440に設定

# 所有者のみ読み取り可能(最も厳格)
chmod 400 wp-config.php

# 所有者とグループが読み取り可能
# (一部のサーバーではWebサーバーがグループに属するため440が必要)
chmod 440 wp-config.php

# 動作しない場合は600を試す
chmod 600 wp-config.php

※ 設定後にサイトが表示されなくなった場合は、サーバーのPHP実行ユーザーとファイル所有者が異なる可能性があります。 その場合は440または600に変更してください。

2.htaccessでWebからのアクセスを遮断

# .htaccessに追加(WordPress直下の.htaccess)
<Files wp-config.php>
  Order Allow,Deny
  Deny from all
</Files>

この設定により、ブラウザからwp-config.phpに直接アクセスしても403エラーが返されます。 PHPからの内部読み込みには影響しません。

3ドキュメントルートの1階層上に移動

WordPressは、ドキュメントルートにwp-config.phpが 見つからない場合、自動的に1階層上のディレクトリを探します。 この仕様を利用して、Webからアクセスできない場所にファイルを移動できます。

# 例: ドキュメントルートが /home/user/public_html/ の場合
mv /home/user/public_html/wp-config.php /home/user/wp-config.php

# 移動後のパーミッション設定
chmod 400 /home/user/wp-config.php

※ マルチサイト環境や一部のサーバー構成では動作しない場合があります。 移動後は必ずサイトの動作確認を行ってください。

uploadsフォルダのPHP実行禁止設定

wp-content/uploads/フォルダは 画像やPDFなどのメディアファイルをアップロードする場所ですが、 マルウェアがPHPファイルをここに設置するケースが非常に多いです。 uploadsフォルダ内でPHPの実行を禁止することで、仮にマルウェアファイルが設置されても実行を防げます。

Apache(.htaccess)の場合

wp-content/uploads/.htaccessを作成して以下を記述:

# PHP実行を禁止
<Files "*.php">
  Order Allow,Deny
  Deny from all
</Files>

# 念のためPHP以外の実行ファイルも禁止
<FilesMatch "\.(php|phtml|php3|php4|php5|php7|phps|cgi|pl|asp|aspx|shtml|shtm|fcgi|fpl|jsp|htm|html|wml)$">
  Order Allow,Deny
  Deny from all
</FilesMatch>

Nginxの場合

Nginx設定ファイル(nginx.conf または サイト設定ファイル)に追加:

# uploadsディレクトリ内のPHP実行を禁止
location ~* /wp-content/uploads/.*\.php$ {
    deny all;
    return 403;
}

一括設定コマンド集

SSH接続後に実行するコマンド

# WordPressルートディレクトリに移動
cd /path/to/wordpress

# 全ディレクトリを755に設定
find . -type d -exec chmod 755 {} \;

# 全ファイルを644に設定
find . -type f -exec chmod 644 {} \;

# wp-config.phpを厳格に設定
chmod 400 wp-config.php

# .htaccessを644に設定
chmod 644 .htaccess

# 管理画面からのファイル編集を無効化(wp-config.phpに追記)
# ※ テーマエディタ・プラグインエディタが使えなくなります
echo "define('DISALLOW_FILE_EDIT', true);" >> wp-config.php

DISALLOW_FILE_EDITを設定すると、 WordPress管理画面の「テーマエディター」と「プラグインエディター」が無効になります。 これはセキュリティ上推奨される設定ですが、管理画面からファイルを編集する必要がある場合は FTP/SFTPを使用してください。

パーミッション設定後のトラブルシューティング

サイトが真っ白になった(500エラー)

原因: wp-config.phpのパーミッションが厳しすぎる可能性

対処法: FTPで接続し、wp-config.phpのパーミッションを440→600→644の順に試してください。サーバーのPHP実行ユーザーとファイル所有者が異なる環境では、400/440では読み取れない場合があります。

画像がアップロードできない

原因: wp-content/uploads/のパーミッションが不足

対処法: uploadsディレクトリのパーミッションが755であることを確認してください。また、ディレクトリの所有者がWebサーバーのユーザー(www-data, apache, nginx等)と一致しているか確認してください。

プラグインのインストール・更新ができない

原因: wp-content/のパーミッションまたは所有者の問題

対処法: wp-content/plugins/のパーミッションが755であること、所有者がWebサーバーユーザーであることを確認してください。FTP情報を求められる場合は、wp-config.phpにFS_METHOD定数を設定する方法もあります。

パーマリンク設定が保存できない

原因: .htaccessが書き込み不可

対処法: .htaccessのパーミッションを一時的に644に変更し、パーマリンク設定を保存後、必要に応じて444に戻してください。

まとめ

ファイルパーミッションの設定は地味な作業ですが、 マルウェア感染の被害を大幅に軽減できる重要な対策です。 特にwp-config.phpの保護とuploadsフォルダのPHP実行禁止は、 多くのマルウェア攻撃を無効化できます。

パーミッション設定だけでは完全な防御にはなりませんが、 WAFやセキュリティプラグインと組み合わせることで、 多層防御の重要な一角を担います。 サーバー移行やWordPressの再インストール後は、 パーミッションが初期値に戻っている場合があるため、必ず確認してください。

マルウェアの不安を 今すぐ解消しませんか?

リバースハックはWordPress専門のセキュリティチームです。 マルウェア駆除から再発防止まで、ワンストップでサポートします。 まずはお気軽にご相談ください。

最短即日対応
緊急時も迅速に対応
再感染30日保証
駆除後の安心サポート
相談無料
LINEで気軽に相談OK

※ 相談は無料です。お見積もりだけでもお気軽にどうぞ。

この記事をシェア