IPアドレスのブロックの自動化

IPアドレスのブロックの自動化

私は Apache2 を実行している Ubuntu 12.04 マシンを持っており、約 10 個の WordPress ウェブサイトをホストしています。

最近、私はクライアントからの攻撃を受けました。その攻撃は、'xmlrpc.php' という WordPress ファイルに POST リクエストを送信しているようです。

これらの悪意のあるリクエストを送信する IP アドレスをブロックする方法は面倒な手動プロセスであり、何らかの方法でこれを自動化したいと考えています。

サーバーの負荷が高いことに気づいたら、次のアクションを実行します。

  1. すべての仮想ホストアクセスファイルに対してapachetopを実行します。これにより、行われているすべてのリクエストが表示されるので、xmlrpc.phpにリクエストが行われているかどうかを確認できます。

  2. どの IP がサーバーを攻撃しているかを特定したら、攻撃元の IP アドレスごとに次のコマンドを実行します。sudo iptables -A INPUT -s 94.102.52.95 -j DROP

  3. すべてのIPアドレスがブロックリストに追加されると、サーバーの負荷はすぐに通常のレベルに下がります。

このプロセスを自動化する方法はありますか? xmlrpc.php 内に、リクエストを送信したすべての IP アドレスをブロック リストに追加するコードを記述しようと考えています。これを行う方法について、何かアイデアをお持ちの方はいらっしゃいますか?

前もって感謝します!

答え1

すべての IP をブロックすることがこの問題の解決策だとは思いません。POST アクションを実行している IP は、おそらく世界中の感染またはハッキングされた PC です。すべてをブラックリストに登録しても、IPtables が飽和状態になるだけです。WP サイトがハッキングされている場合は、サイトをオフラインにして、顧客に混乱を解消してすべてのコンポーネントを更新するように通知することをお勧めします。

悪意のあるコードのアップロードを防ぐために、mod_security をインストールすることができます。また、mod_security に特定のページへの POST リクエストをブロックするように指示することもできます。これにより、404 が返されるだけになり、負荷が軽減されます (ハッキングも阻止されます)。

上記の方法でも問題が解決せず、すべての IP をブロックしたい場合 (iptables が膨大になるのを防ぐため、しばらくしてから IP を削除するようにしてください)、access.log を追跡して IP をブロックするスクリプトを作成できます (たとえば、cronjob/sleep を含むシェル スクリプト、またはさらに良い方法として、perl/python の優れたデーモン)。

関連情報