Brute force attack との戦い

先般リリースした 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 ライフを!

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください