如何防止xmlrpc.php上的DOS攻击

我们最近在我们的主网站上发生DOS攻击时遇到了麻烦,它使用Apache httpd 2.2.9和Drupal 6.35运行。 这个攻击是Dupal的xmlrpc.php的一个post,这个漏洞已经在最近的Drupal版本中被修补了。 因为这是一个较老的版本,所以利用漏洞的修复不在我们的Drupal安装中,也不会因为我们在三个月内迁移到托pipe平台。

我最初尝试通过重命名xmlrpc.php来抵消DOS,它返回一个404,但是这仍然足以为每个post创build一个apache线程。结果是多个线程结合消耗了大量的内存,所以仍然有一个问题。

所以,基于更多的Googlesearch,我刚刚修改了以下的.htaccess

<Files "xmlrpc.php"> Order Allow,Deny deny from all </Files> 

从这里开始,大概不会再为每个调用创build一个httpd线程。

这是否足够,你觉得呢? 我可以更进一步,通过启用VPC跟踪stream量的function,find并阻止IP地址,但我不知道这是否有效,因为这些攻击可能来自一堆被劫持的系统。 虽然我很好奇, 有什么想法吗?

一个Deny块仍然需要apache来处理这个请求,看看它是否与一个拒绝匹配,并且最有可能和404一样的“成本”。

你说'DOS',但是你的意思是一个实际的攻击还是随机扫描仪? 随机扫描程序通常不会驱动足够的stream量来制作404/403的问题。

这是ELB的背后吗? 如果没有,你应该能够看到访问日志中的源地址。 你可以看看实现一个像Fail2Ban这样的工具来监视这个模式,并且放入一个临时的iptables规则来阻止访问这个IP一段时间。

如果它位于ELB之后,则可以执行类似的操作,除了编写自定义填充以对包含ELB的VPC子网ACL进行操作。