「コアファイル書き込み権限の制限」とは何をすることか
まず言葉をほぐします。
ここでいう「コアファイル」は、WordPress 本体のファイルのことです。
wp-admin/wp-includes/
ルート直下の wp-settings.php や wp-login.php など
これらは「WordPress そのものを動かすためのファイル」であって、
本来、日常的に中身を書き換えるものではありません。
「コアファイル書き込み権限の制限」とは、ざっくり言うと、
WordPress 本体のファイルを、
勝手に書き換えられないようにする(=書き込み禁止に近づける)
ということです。
人間のミスや、攻撃者の侵入によって、
コアファイルが簡単に書き換えられないようにする——これが目的です。
なぜ「書き込み権限」を絞るとセキュリティが上がるのか
攻撃者が「ファイルを書き換える」ことで何ができるか
もし攻撃者がサーバーに侵入できたとしても、
ファイルを書き換えられるかどうか
新しいファイルをアップロードできるかどうか
で、できることのレベルが大きく変わります。
コアファイルに書き込み権限がある状態だと、攻撃者は例えばこうできます。
wp-config.php にバックドアを仕込むwp-login.php を改造してログイン情報を盗むwp-includes 内に不正なPHPファイルを紛れ込ませる
一度これをやられると、
表面上は普通に動いているように見える
でも裏でずっと悪さをされ続ける
という、かなり厄介な状態になります。
「書けない」だけで攻撃の難易度が一気に上がる
逆に、コアファイルが「読み取り専用」に近い状態になっていると、
侵入できたとしても、ファイルを書き換えられない
=バックドアを埋め込むのが難しくなる
という状況になります。
セキュリティの世界では、
侵入されないようにする
だけでなく
侵入されても被害を広げにくくする
という発想がとても大事です。
コアファイルの書き込み権限を絞るのは、
まさに「被害の広がり方を制限する」ための一手です。
どのファイル・ディレクトリをどう扱うべきかの考え方
大きく分けて「変わる場所」と「変わらない場所」がある
WordPress のファイル構成を、ざっくり2種類に分けて考えると分かりやすいです。
ほとんど変わらない場所(コア)wp-admin/wp-includes/
ルート直下の多くのファイル
頻繁に変わる場所(コンテンツ・拡張)wp-content/uploads/(画像などのアップロード)wp-content/themes/(テーマ)wp-content/plugins/(プラグイン)
本来、「書き込みが必要なのは後者だけ」です。
前者(コア)は、アップデート時以外は基本的に書き換える必要がありません。
つまり、
コア部分:できるだけ書き込み禁止に近づける
コンテンツ部分:WordPress から書き込みできるようにしておく
というのが理想的な状態です。
例題:権限のイメージ
ざっくりしたイメージとしては、
wp-admin/ や wp-includes/:所有者だけ読み書き、Webサーバーユーザーは読み取りのみwp-content/uploads/:Webサーバーユーザーも書き込み可能
のように、
「Webサーバー(=WordPress が動いているユーザー)」が
どこまで書けるかを意識して分ける、という考え方です。
実務的にどうやって「書き込み権限を制限」するのか(考え方レベル)
ファイル・ディレクトリのパーミッションを見直す
Linux サーバーでは、ファイルやディレクトリに
読み(r)
書き(w)
実行(x)
の権限を、所有者・グループ・その他に対して設定できます。
よくある「数字の権限」は、例えばこんな意味です。
644:所有者は読み書き、その他は読み取りのみ
755:所有者は読み書き実行、その他は読み取り+実行
コアファイルについては、
所有者(サーバー管理者)は書ける
Webサーバーユーザー(その他)は読めるだけ
という状態にしておくのが理想です。
逆に、
コアファイルが 777(誰でも読み書き実行)
ディレクトリも 777 で開放
のような状態は、かなり危険です。
WordPress 自身に「ファイルを書かせない」設定もある
wp-config.php には、
WordPress からの自動更新やファイル編集を制限するための定数
を設定することもできます。
例えば、
管理画面からテーマ・プラグイン・コアを勝手に更新させない
管理画面からファイル編集を禁止する
といった設定を組み合わせることで、
「WordPress 自身がコアファイルを書き換える機会」を減らす
=攻撃者にとっても書き換えのチャンスが減る
という状態を作れます。
例題:権限が緩い場合に起きがちなこと
パターン1:マルウェアがコアファイルに紛れ込む
権限が緩いサーバーで、何らかの脆弱性から侵入されたとします。
攻撃者は、
wp-includes/ の中に不正なPHPファイルを置くwp-config.php に怪しいコードを1行だけ追加する
といったことを簡単にできます。
その結果、
表面的にはサイトは普通に動く
でも、裏でスパムメール送信やリダイレクトが仕込まれている
という状態になり、
発見も復旧も非常に難しくなります。
パターン2:アップデートのたびに上書きされて分かりにくくなる
コアファイルに不正なコードを埋め込まれた場合、
WordPress をアップデートすると一部が上書きされる
でも別の場所にバックドアが残っている
ということもあります。
権限が緩いと、
「どこまで汚染されているか」が分かりにくくなり、
クリーンな状態に戻すのがどんどん難しくなります。
プログラミングの感覚で捉える「コアファイル書き込み権限の制限」
これは「本番環境のコードを読み取り専用に近づける」設計
アプリケーション開発では、
本番環境のコードは基本的に書き換えない
デプロイ時だけ、ビルド済みのコードを配置する
という運用が理想です。
WordPress でも同じで、
コアコード(wp-admin, wp-includes)は
本番環境ではほぼ読み取り専用
という状態にしておくのが、設計として健全です。
「動いているアプリ自身が、自分のコードを書き換えられる」状態は、
セキュリティ的にはかなり危険な構造です。
「書ける場所」を最小限にするのがセキュリティの基本
セキュリティ設計の基本のひとつは、
書き込み可能な場所を最小限にする
という考え方です。
書ける場所が多いほど、
バックドアを仕込める場所も多くなる
ログや設定を勝手に変えられる可能性も増える
ということになります。
WordPress で言えば、
本当に書き込みが必要なのはwp-content/uploads/ など一部だけ
という前提に立って、
それ以外の場所は「できるだけ書けないようにする」
=コアファイルの書き込み権限を絞る
というのが、エンジニアとしての自然な発想です。
まとめ:コアファイルの書き込み制限は「被害の広がり方を抑えるための土台」
「コアファイル書き込み権限の制限」というのは、
WordPress 本体のファイルを、簡単には書き換えられない状態にする
=侵入されても、バックドアを埋め込まれにくくする
という、防御の“土台づくり”です。
押さえておきたいポイントは、
コア部分(wp-admin, wp-includes など)は基本読み取り専用に近づける
書き込みが必要なのは主に wp-content 周りだけ
権限が緩いと、侵入されたときに「どこまで汚染されたか」が分からなくなる
という3つです。
今日一度、サーバーのファイル権限を眺めてみてください。
「とりあえず全部 777」にして動かしている状態から、
「書ける場所と書けない場所を意識して分けている状態」に変わるだけで、
あなたの WordPress は、セキュリティ設計のレベルが一段上がります。


