在WordPress .htaccess中使用额外的重写规则来阻止DDOS攻击

时间:2013-02-20 11:14:51

标签: wordpress .htaccess ddos

我们突然成为被告知是DDOS攻击的受害者。我们正在尝试使用一些.htaccess规则来阻止违规参数,使用以下内容显示对主页上发出的任何帖子请求的403禁止页面以及查询字符串开头的特定字段的任何请求:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^(ptrxcz|xclzve).* [NC]

RewriteRule ^(.*)$ http://%{REMOTE_ADDR} [F,L]

RewriteEngine On

RewriteCond %{REQUEST_METHOD} POST

RewriteCond %{REQUEST_URI} /

RewriteRule ^(.*)$ http://%{REMOTE_ADDR} [F,L]

基本上,每当我使用wget在SSH中使用违规查询字符串访问文件但在浏览器窗口中没有访问时,这种方法就可以正常工作。

此外,Postmaster Google Chrome添加阻止了对主页的帖子请求,但是curl -d请求没有被阻止,因此我发现很难确定哪些工具可以信任,因为它们会给出不同的结果(浏览器) ,SSH,Postmaster)。

我也使用永久链接的Wordpress,我想知道这些是否会以某种方式影响它,因为这些是.htaccess文件中唯一的其他内容。一旦我从.htaccess文件中删除它们,我就会按预期工作。这是我现行规则之后的Wordpress .htaccess。

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>

此外,如果我更改我的WordPress前规则并删除[F]和REMOTE_ADDR部分并将其替换为以下内容以将其重定向到不存在的URL,则会重定向,这意味着它可能是相关的到[F]和REMOTE_ADDR部分。

RewriteEngine On

RewriteCond %{QUERY_STRING} ^(ptrxcz|xclzve).* [NC]

RewriteRule ^(.*)$ http://www.pleasegoawayandnevercomebackagain.com [R=301,L]

RewriteEngine On

RewriteCond %{REQUEST_METHOD} POST

RewriteCond %{REQUEST_URI} ^/$

RewriteRule ^(.*)$ http://www.pleasegoawayandnevercomebackagain.com [R=301,L]

除了以上和进一步调查。以下规则有效:

RewriteEngine On

RewriteCond %{QUERY_STRING} !.*test.* [NC]

RewriteRule ^(.*)$ http://%{REMOTE_ADDR} [F]

这里的区别是我正在检查查询字符串值的否定匹配。这意味着除了查询字符串中包含test的那些页面外,每个页面都被禁止。您是否知道为什么负面匹配有效但积极搜索不起作用?这是一个语法问题,还是与在htaccess重写条件中搜索正值有关?

2 个答案:

答案 0 :(得分:0)

可能对您有所帮助的一些想法:

  1. 确保在.htaccess文件中保留#BEGIN WordPress和#END WordPress。将其余部分放在你上面的规则上

  2. 尝试安装插件:更好的WP安全性:http://wordpress.org/extend/plugins/better-wp-security/ - 它可以节省生命:)

答案 1 :(得分:0)

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