WordPressをデフォルトの設定で、ゆるゆるのパスワードにしていると簡単に抜かれてしまうということが分かった今日この頃。
ということで、いろいろとサイトを見たり、実践したりしたことをまとめることにしました。
門を固める
そもそもログイン画面で敵を止める必要があります。(理想はログイン画面にすら到達できなくすることですが)
パスワードの複雑化
パスワードについては最近こんな記事がありました。
2万5000年かかっても破られない究極パスワードの設定方法(1/4) - ウレぴあ総研
どんなものかと思いきや、実は12桁にするだけでまず抜かれないパスワードになるとのこと。(もちろん半角英数字、大文字小文字まぜこぜの辞書アタックにも引っかからない文字列で構成されたものです。)
よく8ケタ推奨といいますが、今では8ケタは危ないらしいです。
12桁だっていずれは危なくなるでしょうが、とりあえず今のところは12桁以上にしておいたほうがよいでしょう。
リトライの回数制限を設ける
デフォルトでは、Wordpressは何度でもログインのチャレンジができます。
これではいつか破られるかもしれません。
というわけで、プラグインを使って回数制限を設けましょう。
リトライの回数制限を設けるプラグイン:Limit Login Attempts
指定した回数失敗すると、しばらくログインできなくなり、またそんなことがあった場合メールで知らせてくれたりします。
万が一ログインされてしまったら
万が一ログインされてしまった場合でも、被害を最小限に留める必要があります。
出力される内容はエスケープする
スクリプトを埋め込まれないよう、よほどコードを書いたりするサイトでない限り、出力されるものはすべてエスケープ処理をしておきましょう。これはテンプレートを地道に編集するしかないです。
もちろん内容フィールドのpタグやaタグなどまでエスケープされては困りますが、scriptという記述を全角に置換したり、strip_tagsで許可したタグのみ出力されるようにすれば、投稿記事に悪意のあるスクリプトを埋め込まれてそのまま出力されると言う心配は少なくなります。
あと、投稿にPHPを書けるプラグインを入れるのも、できるだけやめましょう。
テーマを管理画面から編集できなくする
テーマは管理画面から編集できなくしておいたほうが良いでしょう。
通常、メニューの外観>テーマ編集で管理画面からもテーマを編集することができますが、wp-config.phpに
define('DISALLOW_FILE_EDIT', TRUE);
と記述すると、メニューから「テーマ編集」が消え、編集画面が表示できなくなります。
サイト構築中であれば必要かもしれませんが、公開後はそれほど触ることもありませんし、直上げすれば済むことですので、この設定をしておいたほうが良いかと思います。
ちなみにプラグイン編集もできなくなります。
プラグインでテーマが正常か確認する
テーマに異常がないか確認してくれるプラグイン:AntiVirus
このプラグインは、手動でもスキャンできますし、設定しておくと1日ごとに定期スキャンをし、異常があったときはメールで知らせてくれるという便利機能まであります。
注意点として、いいね!ボタンなどのiframeにまで反応してしまうので、最初の手動スキャンで個別に許可しておきましょう。
その他としては
- WordPressのバージョンを常に最新にする。
- プラグインも常に最新のものにする。
- wp-config.php、htaccessにはアクセスできなくする。
- 可能であれば管理画面はSSL接続する。
- 可能であれば管理画面にアクセスできるIPを制限する。
- WordPressのバージョンを隠す。
- ユーザー名に「admin」は使わない。ある場合は同権限のユーザーを作って削除するか、通常以上の複雑なパスワードを施す。
- 定期的にバックアップは取る。
- 定期的にパスワードを変更する。
といったところでしょうか。
サイトの性質上できないものや、そもそも効果があるのか疑問なものもありますが、やれるものであればやっておいて損はないかと思います。
参照サイト
WordPressのセキュリティを徹底強化 | CSSPRO