如需VPS代购、PHP开发、服务器运维等服务,请联系博主QQ:337003006
就在两天前博客服务器遭到DDOS攻击,刚开始发起者使用SYN攻击443端口,导致Nginx资源耗尽,带宽跑满。将流量牵引到国外也无济于事,也只能关机睡觉了,一波又一波的攻击过后。放弃SYN攻击,而是利用WordPress的pingback发起DDOS攻击,导致网站无法访问。
关闭pingback功能
pingback在wordpress简体中文中译作“引用”,其实本意便是通知对方这个地方有和你相关的事情发生。一般情况很少用到,索性直接关闭。在后台 -> 设置 -> 讨论 -> 接受从其它博客的链接通知(pingback和trackback)
,将勾选去掉并保存。
修改Nignx配置
如果您使用的Nginx作为WEB服务器,那么可以将下面的代码添加到主机配置文件中,通常在/usr/local/nginx/conf/vhost/youdomain.conf
,添加到server段内,并service nginx reload
重载nginx
if ($http_user_agent ~* "WordPress") { return 403; }
CURL测试
我们可以使用CURL模拟请求一下,看是否生效,返回403错误则说明配置成功。
内容补充
发现Nginx禁止来自WordPress的user_agent后虽然403错误了,但是仍然产生大量请求导致耗费服务器资源。可以将下面的代码添加到主题目录的functions.php
文件中。
add_filter( 'xmlrpc_methods', function( $methods ) { unset( $methods['pingback.ping'] ); return $methods; } );
其它说明
如果您的网站在第三方开启的CDN服务,需要阻止wordpress pingback攻击,可以设置将wordpress的U-AGENT请求加入黑名单。更多详细内容请参见乌云漏洞上的一篇文章:http://drops.wooyun.org/news/1062