nginx 防御 WordPress xmlrpc.php 攻击一例

评论(0)

因为国内vps很贵,且主网站一般都放于国内,
所以一般在国内都用“虚拟主机”来运维网站,
一则是因为省钱,一则是为省心。
近期因一客户需求,需要在国外运维一vps用来布设 WordPress

起因

很少替客户做网站运维,一般都是代码成熟后将代码整体交付给客户方,
再由客户运维人员进行日常运维,这样可以省去很多不必要的麻烦。

  1. 参与运维代码问题和运维问题会分不清楚。
  2. 运维支出?替客户运维网站…客户给的运维费用太少,且要随叫随处理问题。

最近的这个客户是一比较好的朋友,即不懂代码,又不懂运维,
所以我责无旁贷的做了全套,重要的是还没有收取额外的费用……

遭受 xmlrpc.php 爆破攻击

首先被vps提供商的推送通知从梦中惊醒。
vps_warning_2016

大体的意思是:
“鉴于服务器cpu较高的占用率,以对本vps的cpu使用率进行了限制,
当cpu使用率降低至符合要求时,本限制将在60-120分钟内被取消。”
“当然,你可以(花钱)升级你的vps等级至更高的等级… …”

好了,一个 WordPress 网站即便是代码写的再不好,
也不至于跑不起来啊,
2核 512内存,感觉调优后跑10个wp问题不大。

先查一下日志:
发现有几个国外IP,以每秒钟10几次的速度向“空主机头”的xmlrpc.php文件POST数据。
以下只截取其中一段。

85.143.210.174 – – [22/Aug/2016:09:23:30 +0800] “POST /xmlrpc.php HTTP/1.0”
85.143.210.174 – – [22/Aug/2016:09:23:31 +0800] “POST /xmlrpc.php HTTP/1.0”
85.143.210.174 – – [22/Aug/2016:09:23:32 +0800] “POST /xmlrpc.php HTTP/1.0”

查阅了一下网上的资料,貌似是在爆破攻击。
后端php处理比较耗费资源,再遭受爆破攻击的同时,产生了大量资源消耗。
被vps提供商侦测到后限制cpu使用率导致整个网站产生502错误。

利用 nginx 的 blockip.conf 屏蔽攻击IP

首先想到的办法是,利用nginx 的 blockip.conf 屏蔽攻击IP,
这样得到屏蔽IP来的请求时会自动403返回给请求方,
经过一天测试较大的缓解了系统压力,并且取消了使用率限制。
过程如下:
/usr/local/nginx/conf/目录下找到你主机的配置文件 nginx.conf
http 模块中加入一行include blocksip.conf;

http{
...
include blocksip.conf;
...
}

/usr/local/nginx/conf/目录下找到配置文件 blocksip.conf
没有的话就自己建立一个,每行一个屏蔽的ip,效果如下

...
deny 85.143.210.174;
...

再到命令行界面重启一下nginx即可

总结

经过一系列处理,vps的cpu使用率终于算是降下来了。
当然防 xmlrpc.php 爆破攻击只是其中一个。
独立运维vps后尝到了很多莫名其妙的攻击,
后面会慢慢整理出来。