WordPress Tips | セキュリティ:コアファイル書き込み権限の制限

web Web
スポンサーリンク

「コアファイル書き込み権限の制限」とは何をすることか

まず言葉をほぐします。
ここでいう「コアファイル」は、WordPress 本体のファイルのことです。

wp-admin/
wp-includes/
ルート直下の wp-settings.phpwp-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 は、セキュリティ設計のレベルが一段上がります。

Web
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました