如何知道我的站点是否正在使用xmlrpc.php文件?

时间:2016-05-25 作者:LewisJWright

我已经接管了我工作的一个网站,该网站是由一位以前的员工开发的,最近该网站似乎通过使用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)" (显然这不是谷歌机器人,因为谷歌没有理由发布到此文件。)

我相信有很多解决方法(This tutorial) 但我倾向于直接阻止对文件的访问。然而,我不确定这个站点是否实际使用xmlrpc允许您使用的服务。有没有什么特别的方法可以检查之前的开发人员是否已经准备好使用wordpress xmlrpc功能?我是否可以检查特定文件中的功能/是否有任何突出显示以确定用途的内容?

这方面的任何帮助都将是巨大的!

EDIT: 像这样的东西有用吗?

<FilesMatch "^(xmlrpc\\.php)">
    Order Deny,Allow
    # IP address Whitelist
    Allow from xxx.xxx.xxx.xxx
    Deny from all
</FilesMatch>
如果我允许从服务器的ip地址,这是否适用于插件等,或者他们是否都有自己的ip地址需要添加?

2 个回复
最合适的回答,由SO网友:dan9vu 整理而成

这看起来像垃圾邮件机器人或枚举,而不是DDoS攻击。当然,您应该查看您的资源消耗、IP地址的动态以及有效负载。

1. Blocking access to xmlrpc.php file.:

我认为你不应该:

这帮不了你survive a real DDoS attack.@cybmeta 他说,这可能会破坏许多第三方服务我经常记录所有向xmlrpc.php, 使用iptables设置速率限制。然后,阻止那些肯定是邪恶的IP。

2. How to know if your site is using xmlrpc.php

xmlrpc 输入函数名或文件名,以便浏览主题和插件以检查是否有匹配项xmlrpc.php 哪一个define(\'XMLRPC_REQUEST\', true) 因此,您可以使用:
if ( defined(\'XMLRPC_REQUEST\') && XMLRPC_REQUEST ) {
    // Log something.
    // Or exit immediately if something is evil in the request.
}
请注意,您不能在主题/插件文件中使用该代码。xmlrpc.php 独立于主题和插件,因此您必须将其放入wp-config.php 文件

SO网友:cybmeta

正如您所描述的,您是DDoS攻击的受害者(或者可能不是,我只是假设您知道)。这些类型的攻击可以针对动态网站的任何部分,例如索引。php或xml rpc。php文件。

在我看来,the right solution is not to block the attacked part but to block the attacker.

因此,不要在WrodPress中阻塞XML-RPC API,它被大量插件和外部客户端使用;只有当你真正知道自己在做什么及其后果时,才能阻止它。相反,可以在服务器级别阻止攻击者,例如,您可以在服务器防火墙或中将攻击者的IP列入黑名单。htaccess。