使用.htaccess防止DDOS攻击无法使用永久链接

时间:2013-02-20 15:26:59

标签: wordpress .htaccess permalinks ddos

我们已成为WordPress网站上恶意DDOS攻击的受害者。

值得庆幸的是,它们应该很容易被删除,因为它们是GET请求,并在URL的末尾添加了字符串?ptrxcz。

考虑到这一点,我们已经设置了规则,为使用.htacess实现此目的的请求提供403权限错误页面。问题是这些似乎不适用于安装的永久链接。

这是我的完整.htaccess文件。

RewriteEngine On
RewriteCond %{QUERY_STRING} .*ptrxcz.*
RewriteRule (.*) - [F]

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

开头部分是使用ptrxcz将用户重定向到403页面。如果我删除它下面的WordPress规则,这可以很好地工作,但包含它们之后它就永远不会有效。

令人沮丧地使用带有QUERY_STRING搜索的负正则表达式正确反向工作(使用查询字符串阻止除请求之外的所有内容,如下所示:

RewriteCond %{QUERY_STRING} !.*ptrxcz.*

(注意添加!)

有没有人有任何想法:

  1. 为什么它不能与永久链接一起使用
  2. 如何使用永久链接
  3. 为什么查询字符串上的负正则表达式有效但不是正数。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,但是它非常严重,我提出了一个小型Web服务器作为前端并过滤掉这些请求。相关的iptables规则是:

iptables -A INPUT -p tcp --dport 80 -m string --to 70 --algo bm --string'ptrxcz_'-j DROP

它指示系统检查请求的前70个字符,如果找到'ptrxcz_',则静默删除请求。我尝试返回错误消息,但错误代码消耗的带宽不值得,因为连接的另一端永远不会有用户读取错误。

我创建了一篇描述我采取的步骤的博客文章:

http://web.htcomp.net/?pageid=85&blogid=2

拉​​里

答案 1 :(得分:0)

如果您使用QUERY_STRING替换上面代码中的THE_REQUEST,那么这样可以正常工作,并且完全符合WordPress中的要求。