あなたが望むのはFail2banです(これがLinuxマシンであると仮定すると、あなたは言いませんでした...)
Fail2banとは何ですか?
Fail2banはシステムログを解析し、ブロックする特定の正規表現を探します。一致(または構成方法に応じて同じIPからの複数の一致)が見つかると、通常はIPTablesを介してブロックします。通常、これはSSHまたはWebサーバーに対する失敗した認証試行をブロックするために使用されます。
一定の時間(数分、数日、それらがどれだけ持続するかに依存します)それらを禁止するように設定し、その後再試行しない限り禁止が期限切れになります。
これは、ボットをスキャンするphpmyadminをブロックするのにどのように役立ちますか?
これは、存在しないphpmyadminフォルダーにアクセスしようとするなど、攻撃の一般的な兆候と一致させるために簡単に使用できます。そのような試みに一致する正しい正規表現を見つけ出し、正当なユーザーをブロックしないようにする必要があります。
このブログ投稿で与えられた設定は、逐語的に機能するか、セットアップに多少の調整が必要な場合があります。
なぜブロックする必要があるのですか?404エラーはそれほど費用がかかりません
iptablesでそれらをブロックすることにはいくらかの用途があります-可能性は、phpmyadminの脆弱性をチェックしている場合、機能する何かを見つけるまで、他のサービスの脆弱性を試すことです。それらを禁止すると、ほとんどのボット/スクリプトはしばらくしてあきらめ、より良いターゲットに移動します。
スキャンの費用はそれほどかかりませんが(実際に脆弱性が見つかった場合を除き)、ログがあふれ、Webサーバーでの攻撃や問題の発見が困難になります。
以下のコメントにあるように、Fail2banにはいくつかのシステムリソースが必要です。しかし、それほどではありません。少なくとも、Fail2banに起因するパフォーマンスの問題は一度もなかったと言えます。しかし、パスワードをブルートフォースしようとする非常に攻撃的なスクリプトや、サーバーで1秒間に何千ものSQLインジェクション試行やその他のエクスプロイトを投げることにより、パフォーマンスの問題が発生しました。それらをファイアウォールレベルでブロックすると、サーバー/アプリケーションレベルでブロックするよりもはるかに少ないリソースで済みます。また、カスタムスクリプトを実行してIPアドレスを禁止するように拡張することもできます。そのため、IPtablesで禁止する代わりに、ハードウェアファイアウォールで禁止したり、同じ人があなたを攻撃しようとしている場合に誰かにメールを送って文句を言うことができますISPに送信するか、ファイアウォールでデータセンターをブロックします。
他のヒントはありますか?
誤って自分がロックアウトされないように、管理するいくつかのIPアドレスをホワイトリストに登録することを強くお勧めします。