All In One WP Security & Firewallを導入してWordPressのセキュリティ対策を行いました

6月ごろより不正ログイン攻撃に悩まされていました。

ログイン履歴を見たところ、当ブログのユーザーIDで不正ログインを試みた形跡が。その数2万超!(滝汗)
ss2014-08-02 12.39.40

これでログイン突破されなかったのはちょっとした奇跡だと言えそう。

その前に、ログイン時に2段階認証をかけるGoogle Authenticator が謎の不調でサイトの表示が崩れてしまう現象があり、外してしまっていたのも原因の一つ。

こりゃいかんということで、いくつかセキュリティの設定やプラグインを試したところ、All In One WP Security & Firewallというプラグインがとても使いやすく、深い設定もできるものだった。

以下、設定のご紹介。


まずプラグインのダッシュボード。

ss2014-08-02 13.25.04

 

左上のSecurity Strength Meter が緑色のゾーンになるまで設定を行えば、とりあえずは一安心レベル?らしい。
あと、右下のCritical Features Status の4つの設定をしっかりしておくこと。

  • Admin Username(管理者ユーザーの変更)
  • Login Lockdown(ログイン時のロックダウン設定)
  • File Permission(WPシステムファイルの属性変更)
  • Basic Firewall(Firewallの設定)

の4つですね。

全般的な設定画面。

ss2014-08-02 16.36.07

 

.htaccessファイルやwp-config.phpファイルの操作、リストア等を行える。

User Account」設定

管理者権限ユーザーの作成、投稿の表示名やパスワード強度の確認ができる。

 

管理者権限ユーザーは必ず「admin」以外にしよう。
ss2014-08-02 12.41.43

ログインIDと、投稿に表示される名前は違うものに設定すること。今回ユーザーIDで2万回もログイン試行されたのは、おそらくここが同じだったため類推されたと思われる。
ss2014-08-02 12.42.00

パスワード強度のチェックも行おう。現在のパスワード強度は突破まで730年6ヶ月かかる。今回はこれのおかげで不正ログイン突破されるのを防げたようなものだ。
ss2014-08-02 12.43.00

Login Lockdown」設定

具体的には「○分間に●回以上ログイン失敗したら△分ロックアウトさせる」設定。自分のサイトで情報がしっかり保持されているのであれば、ガチガチにしてしまって良いと思う。自分の設定は「2分間に3回ログイン失敗したら600分ロックアウト」にしている。ID総当たり攻撃にとても有効だと思う。
ss2014-08-02 12.43.21

User Registration」設定

自動で新しいユーザーが作られないように、承認をマニュアル化する。また、登録画面にCaptcha認証コードを表示させるようにする。複数ユーザーで運用しているサイトには有効だと思う。
ss2014-08-02 12.49.10

Change Database Prefix」設定

データベースの接頭語をプラグイン管理画面上で変更できる。たいていの場合「wp_」になっていると思うが、データベース改ざんの危険性もあるので任意の接頭語に変更しておく。
また、データベースを3週間ごとに自動バックアップするように設定した。
ss2014-08-02 12.49.44

File Permissions」設定

システムファイルの属性を確認する。以前にWordPressへの大規模攻撃があった時にこの辺の設定は見直しておいたので、そのままオールグリーンだった。レンタルサーバーでの運用は大規模攻撃の的になりやすいので、この部分はきっちり設定しておきたいところ。
ss2014-08-02 12.50.52

Ban IPs or User Agents」設定

変な事してくる輩はIPやユーザーエージェントごとBanして差しあげよう。
ss2014-08-02 12.53.29

Firewall」設定

プラグイン単体でファイアウォールを設定できる。簡単なFWルールも設定できる。
ss2014-08-02 12.53.51

※「xmlrpc.php」にアクセスできなくなるので、WordPressのiOSアプリを使っている場合、「Pingback Protection」設定を無効にする必要があるので注意。

Brute Force」設定

ブルートフォースアタックへの対策。ログインページURLの変更、ログインページにCaptcha認証コードを設置、IPアドレスのホワイトリスト設定等。
ss2014-08-02 18.10.15

Scanner」設定

ファイルの改ざん監視、マルウェア、データベーススキャンの設定。ファイル改ざん監視は2週間に1回にしている。
ss2014-08-02 18.19.12

その他、メンテナンスモードにする設定や、右クリック禁止設定等もできる。

これらの設定を行うことで、1日数十ある不正ログインをブロックしている。あとは最後の手段として管理画面自体にベーシック認証をかけようと思っている。

まとめ

しかしまあ思いっきり標的になっているようであまり笑えない状況ではあるが、とりあえずこれで様子見をできるくらいのセキュリティにはなったと思う。
少なくとも、パスワードを強固なものにしておくログイン試行に対する防御をしておく、この2点だけで相当違ってくると思う。

こんなログが毎日数十件たまっていく。
こんなログが毎日数十件たまっていく。

All In One WP Security & Firewall、お勧めできるセキュリティ・プラグインです。

2017年6月6日追記 wpXクラウドサーバ移行でも問題解決

サーバをさくらインターネットからwpXクラウドサーバに移行したところ、不正ログインが全く無くなった。
上記の「Cookie Based Brute Force Login Prevention」を設定していたが、wpXサーバに移行して設定をOFFにしてみたところ、移行後の半年間、大規模攻撃だけでなく、ちまちました小規模なアタックも全く無くなった。

>ブログのサーバをさくらインターネットからwpXクラウドに移転しました
https://hetaremac.com/web/5267/

サーバ設定にある「ダッシュボードアクセス制限設定」がかなり効いているみたい。アクセス制限の他にも「ダッシュボードログイン試行回数制限設定」というのもある。wpXサーバであれば、このプラグインは設定しなくても良いかもしれない。
WordPressしか使わないという人には、wpXサーバはかなりお薦めと思われます。


各設定項目の日本語訳について

各設定項目の日本語訳について、以下のブログ様の記事が非常に詳しく掲載されています。参考になります。