「WordPressのセキュリティ対策をした方がいい」とはよく言われますが、では具体的に何をするのか、なぜそれが効くのかまで説明されることは多くありません。
この記事では、WordPressのセキュリティ対策として実施すべき12項目を、専門用語をなるべく使わずに、ひとつずつ解説します。ご自身で対応される方の参考になれば幸いです。
読んでみて「これは自分には難しそう」と感じた項目があれば、その部分だけご相談いただいても構いません。
もくじ
1. なぜ「うちは大丈夫」が通用しないのか
2. ログインの入口を固める(項目1〜4)
3. 入られたときの被害を小さくする(項目5〜8)
4. 余計な情報を表に出さない(項目9〜11)
5. 万一に備える(項目12)
6. 12項目やっても、続かなければ意味がない
7. 時間がない方へ:まずこの3つだけ
8. 最後に
1. なぜ「うちは大丈夫」が通用しないのか
WordPressへの攻撃の大半は、人が「あなたのサイト」を選んで行うものではありません。プログラムが自動で、世界中のサイトを片っ端から叩いて回っています。
サイトの規模も、アクセス数も、業種も関係ありません。判断基準は「入れる穴が開いているかどうか」だけです。
だからこそ、穴を順番に塞ぐという地味な作業に意味があります。
2. ログインの入口を固める(項目1〜4)
攻撃の入口は、ほとんどが「ログイン画面」です。ここを固めるだけで大半は防げます。
▼項目1. ログイン画面のURLを変更する
WordPressのログイン画面は、初期状態ではどのサイトも同じ場所(/wp-login.php)にあります。攻撃プログラムはまずここを叩きに来ます。
場所を変えると、入口そのものが見つからなくなります。根本的な防御ではありませんが、無差別攻撃の記録が激減するため、本当の異常に気づきやすくなるという効果もあります。
※変更後のURLは必ず控えを取ってください。忘れるとご自身も入れなくなります。
▼項目2. ログインの失敗回数を制限する
初期状態のWordPressは、パスワードを何万回間違えても何も起きません。攻撃プログラムはこの性質を利用して、機械的にパスワードを試し続けます。
「5回失敗したら30分ロック」を設定するだけで、この攻撃手法そのものが成立しなくなります。手間に対する効果が最も大きい対策です。
▼項目3. 管理画面へのアクセスを日本国内に限定する
日本向けのサイトであれば、管理画面に海外からアクセスする必要はまずありません。攻撃の大半は海外からなので、これを一括で遮断すると攻撃の総量が劇的に減ります。
※海外出張中はご自身も入れなくなる点だけご注意ください。
▼項目4. XML-RPCという古い窓口を閉じる
外部アプリからWordPressを操作するための、古い仕組みです。この窓口には「1回の通信で大量のパスワードを試せてしまう」という性質があり、項目2の回数制限を回避する抜け道として悪用されます。
現在この機能が必要なケースはほとんどありません。ただし、スマートフォンのWordPressアプリやJetpackを使っている場合は動かなくなるため、事前の確認が必要です。
3. 入られたときの被害を小さくする(項目5〜8)
対策をしても、可能性はゼロになりません。「入られた後どうなるか」を変えておくことも、同じくらい重要です。
▼項目5. 管理画面からプログラムを書き換えられないようにする
WordPressには、管理画面からテーマやプラグインのプログラムを直接編集できる機能があります。便利な機能ですが、侵入された瞬間に「サーバー上で好きなプログラムを実行できる状態」に直結します。
この機能を止めておくと、被害が致命傷から軽傷に変わります。
▼項目6. 使っていないユーザーを整理する
制作会社、退職した担当者、過去の外注先のアカウントが「管理者」権限のまま残っているケースが、非常に多くあります。管理者権限は、サイトを丸ごと作り替えられる権限です。
記事を書くだけの人は「投稿者」に権限を下げる。心当たりのないアカウントは削除する。これだけでリスクが減ります。
▼項目7. 設定ファイルを外から読めないようにする
wp-config.php というファイルには、サイトのデータベースに接続するための情報が、そのままの文字で書かれています。この1ファイルが読まれるだけで、中身をすべて持っていかれる可能性があります。
外部から直接アクセスできないよう、サーバー側で蓋をします。
▼項目8. フォルダの中身が一覧表示されないようにする
サーバーの設定によっては、フォルダのアドレスに直接アクセスすると、中のファイル一覧がそのまま表示されてしまいます。使っているプラグインもテーマも筒抜けになり、攻撃者に「どこを攻めればいいか」の地図を渡すことになります。
4. 余計な情報を表に出さない(項目9〜11)
▼項目9. 投稿者名とログイン用の名前を分ける
初期設定のままだと、記事の「投稿者」欄にログイン用のユーザー名がそのまま表示されます。ログインに必要な2つの情報のうち、片方をサイト上で公開しているのと同じ状態です。
▼項目10. ユーザー名の一覧が外部から取れないようにする
実は初期状態のWordPressは、ある特定のアドレスにアクセスするだけで、サイトの全ユーザー名を誰にでも返してしまいます。
ご自身のサイトURLの末尾に /wp-json/wp/v2/users を付けてアクセスしてみてください。名前が出てきたら、対策が必要な状態です。
▼項目11. WordPressのバージョン情報を隠す
ページのソースに、バージョン番号が書き出されています。攻撃側から見ると「このバージョンに効く攻撃はどれか」を調べる手がかりになります。単体の危険度は低いですが、渡す必要のない情報は渡さないに越したことはありません。
5. 万一に備える(項目12)
▼項目12. 自動バックアップを設定する
ここまでの11項目は「入られないための対策」でした。この項目だけは「入られた後に助かるための対策」です。
どれだけ対策しても、可能性はゼロになりません。復旧できるバックアップが1つあるかどうかで、被害額が数十倍変わります。
ポイントは、サーバーとは別の場所に保管することです。サーバー自体が侵害された場合、同じサーバー上のバックアップも汚染されている可能性があるためです。
6. 12項目やっても、続かなければ意味がない
12項目をすべて実施しても、半年放置すれば元の状態に戻ります。新しい弱点は毎月見つかり、更新は毎月必要になるからです。
セキュリティ対策は一度きりの工事ではなく、歯磨きに近い性質のものです。実際、被害に遭うサイトの大半は「対策していなかった」のではなく「対策した後、続かなかった」サイトです。
毎月30分、カレンダーに予定を入れてください。
①バックアップを取る → ②プラグインを更新する → ③本体とテーマを更新する → ④表示を確認する
この4ステップです。金曜の夜や連休前は避けて、問題が起きても対応できる時間帯に行ってください。
7. 時間がない方へ:まずこの3つだけ
・ログインの失敗回数を制限する(10分)
・パスワードを推測できないものに変える(10分)
・自動バックアップを設定する(20分)
合計40分です。これだけでも、実際に起きている被害のかなりの部分は防げます。
8. 最後に
セキュリティに「絶対」はありません。それを保証するサービスがあれば、むしろ疑った方がいいと思います。
できるのは、狙われる確率を下げることと、万一のときに素早く戻せる状態を用意しておくこと。この2つだけです。逆に言えば、この2つは確実に効果があります。
ご自身での対応が難しい場合は、下記のサービスでお引き受けしています。作業後は、どの項目をなぜ実施したかをまとめたレポートをお渡しするので、「何をしたか分からない」状態にはなりません。
▼WordPressのセキュリティ対策を代行します
また、サービスをお気に入り登録いただいた方には、全24項目版のチェックリスト(PDF・17ページ)を無料でお渡ししています。ご購入は不要ですので、お気軽にお気に入り登録をお願いします。