web-dev-qa-db-ja.com

自分のサイトがxmlrpc.phpファイルを使用しているかどうかはどうすればわかりますか?

私は以前の従業員によって開発された私が仕事をしているウェブサイトを引き継いでいます、最近このサイトはこのようなログエントリによって証明されたxmlrpc pingbackの使用による一連のDDoS攻撃の犠牲者です

154.16.63.40 - - [22/May/2016:06:52:49 +0100] "POST /xmlrpc.php HTTP/1.1" 200 596 "-" "Googlebot/2.1 (+http://www.google.com/bot.html)"(グーグルがこのファイルに投稿する理由はないので、明らかにこれはグーグルボットではありません。)

これには多くの解決策があると思います( このチュートリアル )が、ファイルへのアクセスを完全にブロックすることに傾いている傾向があります。しかし、私はこのサイトが実際にxmlrpcがあなたに使用を許可するサービスを使用しているかどうか不明です。前の開発者がwordpress xmlrpc機能を使用するために何かを準備しているかどうかを確認することができる特別な方法はありますか?特定のファイル内の機能をチェックできますか?/用途を特定するために叫ぶ何かがありますか?

これで任意の助けが素晴らしいでしょう!

編集: このようなことが役に立ちますか?

<FilesMatch "^(xmlrpc\.php)">
    Order Deny,Allow
    # IP address Whitelist
    Allow from xxx.xxx.xxx.xxx
    Deny from all
</FilesMatch>

もし私がサーバーのIPアドレスから許可するなら、これはプラグインなどのために働くでしょうか、またはそれらはすべて追加される必要があるだろう彼ら自身のIPアドレスを持っていますか?

3
LewisJWright

これは、DDoS攻撃ではなく、スパムボットや列挙型のように見えます。確かに、あなたはあなたのリソース消費、IPアドレスのダイナミックス、そしておそらくペイロードを調べるべきです。

1. xmlrpc.phpファイルへのアクセスをブロックしています。

私はあなたがすべきではないと思います:

  1. それはあなたを助けることはできません 本当のDDoS攻撃に耐える
  2. @cybmeta が言ったように、それは多くの第三者サービスを壊すかもしれません。
  3. IPが偽造される可能性があり、XML-RPCサービスを使用するすべてのIPを一覧表示できないため、特定のIPからのアクセスを許可することも役に立ちません。

私はよくxmlrpc.phpにリクエストを出したすべてのIPをログに記録します。iptablesを使ってレート制限を設定します。それから、きっと悪であるIPをブロックしてください。

2.あなたのサイトがxmlrpc.phpを使っているかどうかを知る方法

  1. XML-RPCサービスを使用するWordPressの関数とリソースは、関数名またはファイル名にxmlrpcという文字列が含まれているので、テーマとプラグインを調べて、一致するものがあるかどうかを確認できます。
  2. WordPressのすべてのXML-RPCリクエストは、define('XMLRPC_REQUEST', true)であるxmlrpc.phpを通過するので、次のものを使用できます。
if ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST ) {
    // Log something.
    // Or exit immediately if something is evil in the request.
}

テーマ/プラグインファイルでコードを使用することはできません。 xmlrpc.phpはテーマやプラグインから独立しているので、wp-config.phpファイルに入れる必要があります。

2
MinhTri

あなたが説明したように、あなたはDDoS攻撃の犠牲者でした(あるいはそうではないかもしれませんが、私はあなたがそれを知っているとだけ仮定します)。これらの種類の攻撃は、動的なWebサイトのあらゆる部分、たとえばindex.phpファイルまたはxml-rpc.phpファイルに対して行われる可能性があります。

私の観点からは、 正しい解決策は攻撃された部分をブロックするのではなく攻撃者をブロックすることです

そのため、WrodPressでXML-RPC APIをブロックしないでください。これは多数のプラグインと外部クライアントによって使用されます。自分がしていることとその結果を本当に知っている場合にのみブロックしてください。代わりに、サーバーレベルで攻撃者をブロックしてください。たとえば、サーバーファイアウォールまたは.htaccessで攻撃者のIPをブラックリストに登録することができます。

3
cybmeta