先般リリースした WordPress プラグイン「Crazy Bone (狂骨)」で、ブルートフォースアタックのログを見て、もろもろ設定変更したので、メモ代わりに。
特徴として、非常に多くの IP アドレスからのアタックがあるため、ブラックリストでの IP アドレス制限は現実的ではありません。
IP アドレス制限を行うなら、ホワイトリストでの制限をかけないとですが、それをやると出先でブログを書こうとかするとメンドくさいです。
そこで、以下の対策を行いました。
- 狙われやすいアカウント名でのログイン試行は、WordPress 読み込み前に拒否
- ユーザーエージェントでの wp-login.php へのアクセス制限
狙われやすいアカウントへのアクセスを拒否する
Login LockDown プラグインとか使って、ログイン失敗時に特定 IP アドレスからのアクセスを拒絶しても良いんですが、これだと結局 WordPress 用にプロセスが起動してしまい、短時間に集中してブルートフォースアタックが行われた場合のサーバ負荷も馬鹿になりません。
そこで、wp-config.php の行頭に以下のコードを挿入して、特定のアカウントが指定された場合 WordPress 自体を起動させないようにしました。
ユーザーエージェントで拒否する
ログを見ているとユーザーエージェントを、以下の値に偽装しているモノが多かったので、これらからの wp-login.php へのアクセスを拒否するように nginx の設定ファイルを書き換えました。
- Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0
- compatible; Indy Library
僕が使ってる PC は、今のところ Mac だけなので、Windows NT がユーザーエージェントに含まれる場合には拒否しちゃいます。
location ~* wp-login\.php$ { if ($http_user_agent ~* "(Windows NT|compatible; Indy Library)") { return 403; } (略) }
これで、サーバへのストレスもかなり減りました。
皆様も、良い Mac ライフを!