web-dev-qa-db-ja.com

ボットがxmlrpc.phpにヒットし、サーバーに高い負荷がかかる

最近、wordpress xmlrpc.phpに多くのヒットがあり、最終的にサーバーに高い負荷がかかります。

すべてのxmlrpc.phpを127.0.0.1に書き直そうとしましたが、あまり役に立ちませんでした。 Apacheはまだ接続を処理していたので。結局、この種の接続を使用してブロックしました

iptables -I INPUT 1 -p tcp --dport 80 -m string --string "xmlrpc.php" --algo bm -j DROP

残念ながら、これらすべてが、jetpackなどのxmlrpc.phpを使用しているプラ​​グインで問題を引き起こしています。

誰もがこの種の問題の経験があり、これを処理する方法についていくつかの提案がありますか?

編集:wordpress IP範囲からのアクセスを許可するルールを追加することは可能ですか?ブロッキングルールは文字列を使用しているため、そのルールはどのようになりますか?

1

説明したファイアウォールルールには2つの問題があります。

  1. すべてをブロックするだけでなく、レート制限を設ける必要があります。

  2. ファイアウォールで文字列モジュールを使用することは、パフォーマンス上の理由からあまり賢明ではありません。

最良の選択は、Apacheの前にHAProxyを配置することです。それを行う方法とその理由の詳細については、 この投稿 で私の答えを見ることができます。

3

この種のことでの私の個人的な経験は、問題に「パッチを当てる」ことを避けることです。 1つのリンクにヒットする1つのボットをブロックしないでください。他のボットが入って他のリンクにアクセスします。サーバーに対する繰り返しのヒットをブロックする、ある種のブルートフォース/ DoS保護を設定する必要があります。

ModSecurity はこれに最適であり、WebサーバーとしてApacheを使用している場合はApacheが組み込まれています。

あなたがそうでないなら、あなたはワードプレスについて言及しました。 Wordpressには 複数 この種の反復的なアクティビティをブロックするためのプラグインがあります。WordFenceは、クライアントの使用に成功した優れたプラグインです。

全体として、単一のインスタンスを修正するだけでなく、根本原因を修正することをお勧めします。

2
stobiewankenobi

私の提案はこの問題に関するものです。このコードを追加してアクセスをブロックしてみてください

.htaccess
<Files "xmlrpc.php">
Order Deny,Allow
Deny from all
</Files>
1
Ramesh Chand