WordPress pingback DDOS攻击 nginx防护图文教程

来源: 老季博客
日期: 2016-4-7
作者: 腾讯云/服务器VPS推荐评测/Vultr
阅读数: 123

最近老狼的站老是被攻击,最后分析日志后发现是Wordpress 的 pingback 漏洞导致的DDOS攻击,日志如下:

Wordpress pingback DDOS攻击 nginx防护图文教程

192.241.x.x – – [07/Apr/2016:12:22:44 +0800] “GET /index.php HTTP/1.0″ 200 “-” “WordPress/3.9.2; http://www.x.x; verifying pingback from 69.30.x.x” “-“

这里很明显,全部都是Wordpress。下面我们给出防护nginx,apache的防护方案教程(请根据自己的WEB服务器判断是哪一种):

Nginx:

在?location / 区块种添加如下代码:

# WordPress Pingback Request Denial
if ($http_user_agent ~* “WordPress”) {
return 403;
}

这样的话有请求也不会去找PHP了,nginx及时的返回403,如果连接过多的话需要修改nginx中 worker_connections的参数值,可以把它增加到更大的值。

Apache:

在配置文件中添加:

BrowserMatchNoCase WordPress wordpress_ping
BrowserMatchNoCase WordPress wordpress_ping
Order Deny,Allow
Deny from env=wordpress_ping

然后reload服务。再观察日志,可以看到全部返回403了。网站也恢复了正常访问。

Wordpress pingback DDOS攻击 nginx防护图文教程

如果上面的方法还是无法正常访问那就需要用到iptables了。

IPTABLES防护:

cat /var/log/nginx/access.log | grep “verifying pingback from” > pingback_attack.log

然后用php分析日志,导入到iptables规则中。

<?php
error_reporting(0);

$reqs = file(“pingback_attack.log”);

foreach ($reqs as $req) {
$ip = explode(” – – “, $req);
$ip_address[$ip[0]]++;
}

arsort($ip_address);

foreach ($ip_address as $ip=>$attack_times) {
print “# WordPress IP. Attacked {$attack_times} times<br />”;
print “iptables -A INPUT -s {$ip} -j DROP<br />”;
}

?>

然后将输出的内容执行到iptables规则里面。

链接到文章: https://jiloc.com/40346.html

3 replies on “WordPress pingback DDOS攻击 nginx防护图文教程”

风轻云淡说道:

我是宝塔linux,N版本。按照你说的步骤,是把那个返回403的代码加入到哪里呢?网站配置里面?

babytomas说道:

返回 403 的话压力还是比较大,直接返回 400 吧。

Loc影院说道:

403 是直接nginx返回的,只要不去请求php,效果都差不多。

回复 babytomas 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注