WordPress のセキュリティ対策:効果が出る順番
「WordPress セキュリティ対策」で検索すると、20項目のリストが見つかります。問題は、項目が間違っていることではなく、すべてが同じ重みで並べられていることです。最初の3つは、残りの17項目を合わせたよりも効果があります。
第1位:アップデート、それも速やかに
乗っ取られたサイトの多くは、巧妙な攻撃ではなく、何週間も前からアップデートが出ているプラグインの既知の脆弱性によって陥落しています。自動化された大量スキャンが探しているのは、まさにそれです。
実際には、セキュリティアップデートは自動で、機能アップデートは簡単に確認してから手動で行います。そして、アップデートへの不安が先送りの理由にならないよう、アップデートのたびに事前にバックアップポイントを作成します。
2年間アップデートされていないプラグインは、動いていてもリスクです。この機会に整理しましょう。使っていないものは、無効化ではなく削除すべきです。
第2位:ログイン
2番目に多い侵入口はパスワードです。次の4つの対策を、この順番で行います。
- ログイン失敗の回数を制限します。これで、自動化されたパスワード推測の足場がなくなります。
- 少なくとも公開権限を持つすべてのユーザーに、パスワード強度を強制します。
- 少なくとも管理者には、二要素認証を有効にします。
- ユーザー名「admin」のアカウントは作らず、必要以上に高いロールも付与しません。
ログイン URL の変更は5つ目の対策ですが、効果はより弱いものです。大量スキャンを遠ざけて負荷を減らせますが、上の4つの対策のどれの代わりにもなりません。利用する場合は、保存する前に新しいアドレスを書き留めておきましょう。
第3位:堅牢化――一度設定したら、あとは忘れてよい
- 管理画面でのファイル編集を無効にする(悪意のあるコードは、そこから仕込まれることが最も多い)
- 何も必要としていなければ、XML-RPC を無効にする
- ディレクトリ一覧の表示を防ぐ
- uploads フォルダーでの PHP 実行を禁止する
- REST API 経由のユーザー列挙を制限する
- セキュリティヘッダーを設定する
これらのスイッチは運用上のコストがかからず、それぞれが既知の抜け道を1つずつ塞ぎます。リスト全体の中で、最も費用対効果の高い項目です。
第4位:変化を把握する
ここからは、防ぐことではなく、気づくことが目的になります。価値があるのは次の2つです。
コア照合は、WordPress のファイルを api.wordpress.org のチェックサムと比較します。コアファイルが変更されていたら、それは非常に明確な兆候です。そこを変更する正当な理由は、誰にもないからです。
ファイル監視は、ファイルの状態を記録し、そこからのずれを報告します。その精度は、記録した時点の状態次第です。感染後に記録した状態は、悪意のあるコードを正常な状態として扱ってしまいます。
サイトが確実にクリーンだと分かっているうちに、状態を記録してください。理想は、新規インストールの直後か、検証済みの復元の直後です。
第5位:ファイアウォールとスキャン
どちらも有効な対策ですが、どちらもあえて下位に置いています。PHP で動くファイアウォールは WordPress が起動し始めてから初めて動作するため、Web サーバーの手前にあるファイアウォールの代わりにはなりません。スキャンが見つけるのは、そのパターンに似たものであって、あらゆる悪意のあるコードではありません。
ルールの数よりも重要なのは、誤検知の扱い方です。概要表示がずっと赤のままのツールは、もう何も守っていません。通知をクリックして消す癖をつけさせるだけです。ですから、ファイアウォールはまず1週間、報告だけの状態で動かし、ログに目を通してから、ブロックさせるようにしてください。
よく上位に挙げられるが、そこにふさわしくないもの
| 対策 | 過大評価される理由 |
|---|---|
| WordPress のバージョンを隠す | 攻撃者は、脆弱性をとにかく試してみる |
| ログイン URL の変更 | スキャンは遠ざけるが、強力なパスワードの代わりにはならない |
| 大量のファイアウォールルール | ルールを増やして増えるのは誤検知であって、保護ではない |
| バックアップのないセキュリティプラグイン | 感染後に重要なのは元に戻す手段であり、警告ではない |
ほぼすべてのリストが見落としている点
セキュリティプラグインはインシデントを防ぎ、バックアップはインシデントを乗り越えさせてくれます。どちらか一方を選ばなければならないなら、バックアップを選ぶべきです。ほかのすべてが失敗したときにも役に立つ、唯一の対策だからです。