前書き
某所で利用するために作成した表題の内容のメモだが、お蔵入りになったようなのでここに記す。対象としているのは個人や研究室内でウェブサイト構築のため、WordPressを利用(しようと)しているnewbie。
書きたい項目はほかにもいくつかあるけど、とりあえずはこれだけ。
1. 不要なファイルの削除
WordPressの導入などで設置した不要なファイルは、用が済んだら速やかに削除すること。あるいは適切なアクセス制限を行うこと。代表的だと思っているのは以下の3つ。
- phpMyAdmin
- phpinfo.php
- Search Replace DB
phpMyAdminをWordPressの導入時にDBを作成するために導入したのだと思われるが、通常使うことは無いから、削除しておいて欲しい。
phpinfo.php の中身は <?php phpinfo();
となっていて、PHP実行環境の情報が漏洩するだけで直接的な被害は無いが、このようなファイルが残っていることに管理状況を疑ってしまう。
Search Replace DBのバージョン4より前には、自動的に wp-config.php を読んでくれるという神機能があった。
また、不要なプラグインについても、無効化ではなく削除する。例えば「FileManagerプラグインの脆弱性を利用したファイルアップロード」は、プラグインが無効であっても影響を受ける。
2. アカウント管理の実施
- 複数人でアカウントを使い回さないようにする(鉄則だがあまり守られてないように思える)。
- 簡単なパスワードを利用させないよう徹底する。
- 必要がなくなったアカウントは削除することが望ましいが、投稿した記事の所有者が変更されるため、残す場合はパスワードとメールアドレスの変更を行う。
3. アカウント登録内容の確認
WordPressがインストールされているサイトの wp-json/wp/v2/users にアクセスすると、登録されているユーザ名や詳細などが取得できる。脆弱性ではなく仕様とのことなので、登録内容に注意する。
あるいは、設定等により wp-json/wp/v2 へのアクセスをブロックする。ブロック方法によってはプラグインなどの動作に支障が出る可能性がある。https://developer.wordpress.org/rest-api/
4. 管理画面へのアクセス元IPの制限
可能であれば、 wp-login.php へのアクセス可能なIPアドレスを制限する。スマホアプリによる記事投稿などを利用していない場合は xmlrpc.php についても同様に制限する。
WordPressのユーザアカウントのパスワードを「ユーザID+生年月日」みたいなものに変更されても、影響を受けにくくできる。
5. WordPressおよびプラグインのアップデート
自動アップデートによる運用が望ましいが、場合によってはサイトが正常に表示されなくなる。カスタマイズを行っている場合は自動アップデートに注意が必要。検証用サイトを構築してアップデートに問題が無いかを検証してからアップデートを実施するのが定石だが、片手間に運用されているサイトだと敬遠されがち。
6. 自動化された定期的なバックアップの実施
WordPressの脆弱性を突かれて不正アクセスされた場合は、原則的にバックアップから復元することになる。そのため、定期的にWordPressのインストールされたディレクトリ配下とDBの内容をバックアップしておく。もしWordPressのアップデートで不具合が生じた場合にもバックアップを復元することで対応することができる。
7. アップロードディレクトリ上でスクリプトの実行を制限する
wp-content/uploads ディレクトリに.htaccessを設置するなどにより、PHPスクリプトの実行を制限する。これにより、不正なPHPスクリプトを uploads ディレクトリにアップロードして実行するタイプの攻撃を阻止する。
プラグインによってはこのディレクトリ内に実行ファイルを設置する場合があるため、設定の際は注意が必要。
8. セキュリティ用プラグインの導入
システム監査プラグイン(Wordfence Securityなど)を導入し、WordPressシステムの改ざんや不正なログインを検知できるようにする。
また、多要素認証プラグインを導入し、不正なログインを防ぐ。wp-login.php へのアクセス元IP制限が可能な場合は見送っても良いと考える。
9. WAF(Web Application Firewall)の導入
mod_securityなどのWAFを導入することでWordPressの未知の脆弱性に対応できる可能性がある。ただし、WAFの設定を誤るとWordPressに記事が投稿できないなど一部の機能の動作に問題が発生する。