今天,我想打开本博客,居然发现我的博客报:
504 Gateway Time-out
这是为何呢?难道我的服务器所在位置的网络有问题?dns解析不正常?还是程序运行太慢? 赶快登录ec2后台,将服务器重启,10秒左右不到,我重新访问我的博客,访问正常,然后仅仅过了不到一分钟,我的博客再次出现错误:
504 Gateway Time-out
看来有有外部力量在破坏我的博客服务器。赶快登录服务器后台,查看下cpu
top
后台发现有好几个php5-fpm进程在执行,cpu使用率在20%~30%波动,我的博客访问量很小,不应该有这么多php5-fpm进程的,博客内容做了缓存,更不应该出现这么高的使用率。
继续查看nginx访问日志,
tail -f /var/log/nginx/access.log
发现如下持续频繁的访问:
从日志看,攻击者ip 为185.130.5.209, 因为访问频繁而导致499,也有502网关错误,这个499可以理解,而502属于攻击者频繁访问,导致php处理速度变慢引起。
先屏蔽这个ip,阻止它继续攻击,
sudo iptables -A INPUT -s 185.130.5.209 -j DROP
继续观察日志,
tail -f /var/log/nginx/access.log
发现攻击ip发生变化,
看来攻击程序会变更自己的ip来伪装自己,那干脆直接屏蔽整个ip段:
sudo iptables -A INPUT -s 185.130.5.0/16 -j DROP
继续观察日志发现,攻击停止,博客访问恢复。
说明这样可以暂时拦截攻击,那保存刚才的iptables配置,
sudo iptables-save
这样就可以避免下次服务器重启而导致配置丢失。
我们接着分析下这个攻击。攻击者请求wordpress的xmlrpc.php,
185.130.5.195 - - [06/Feb/2016:13:56:20 +0000] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
xmlrpc是wordpress提供的apic,允许开发客户端来进行发布、更新等操作,而攻击者进行持续试探一般也是为了通过暴力方式获取博客密码,然后进行各种非法操作。所以,如果没有使用xmlrpc,可以通过disable xmlrpc插件将这个功能禁用,但如果用了,则就要给服务器配置一套防火墙来避免大流量攻击。配置防火墙属于非常专业的工作,需要进行深入研究进行。但对于ec2和阿里云这样的服务器来说,可以直接购买对应服务即可。
以下攻击的数据,从图中可以看到,攻击者一直在持续进行攻击试探,最后在我屏蔽ip后各项数据直线降了下来。
环境信息:ubuntu, nginx, wordpress.
以上