2020-03-17 20:15:49
WordPress本身是一个非常强大的CMS(内容管理系统),功能强大。但是也正是因为其强大的特性,使其很容易被利用,造成服务器的不稳定甚至崩溃。最容易遭受攻击的就是xmlrpc.php这个文件,攻击者只要每秒发送1个post请求到此文件,不出1分钟,一台512M内存Debian7系统的VPS就会崩溃,php进程和Mysql占用内存过高而导致无法访问。在尝试了网上流传的多个防攻击手段之后,fail2ban是效果最好的一个,下面就简单记录一下过程,供大家参考。
在服务器出现异常的时候,首先去分析Nginx日志, /var/log/nginx/access.log ,从代码中可以发现如下可以IP不断发送Post请求到xmlrpc.php,每个IP的发送频率大概在2秒钟一次,严格来说频率并不高但足以让php和mysql进程崩溃。
185.188.204.16 - - [15/Jul/2017:23:51:07 -0400] "POST /xmlrpc.php HTTP/1.0" 502 574 "-" "*****"
185.188.204.6 - - [15/Jul/2017:23:51:08 -0400] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "*****"
185.188.204.8 - - [15/Jul/2017:23:51:08 -0400] "POST /xmlrpc.php HTTP/1.0" 502 574 "-" "*****"
185.188.204.14 - - [15/Jul/2017:23:51:08 -0400] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "*****"
185.188.204.16 - - [15/Jul/2017:23:51:08 -0400] "POST /xmlrpc.php HTTP/1.0" 502 574 "-" "*****"
185.188.204.7 - - [15/Jul/2017:23:51:08 -0400] "POST /xmlrpc.php HTTP/1.0" 502 574 "-" "*****"
185.188.204.12 - - [15/Jul/2017:23:51:09 -0400] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "*****"
185.188.204.11 - - [15/Jul/2017:23:51:09 -0400] "POST /xmlrpc.php HTTP/1.0" 502 574 "-" "*****"
185.188.204.15 - - [15/Jul/2017:23:51:09 -0400] "POST /xmlrpc.php HTTP/1.0" 502 574 "-" "*****"
185.188.204.11 - - [15/Jul/2017:23:51:09 -0400] "POST /xmlrpc.php HTTP/1.0" 502 574 "-" "*****"
安装fail2ban和iptables,这样能使用ipotables对攻击进行防御,想对于其它js和php的防御方式自动化更高,更为高效。
apt-get install fail2ban iptables
使用jail.local设定
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
vi /etc/fail2ban/jail.local
[xmlrpc]
enabled = true
filter = xmlrpc
action = iptables[name=xmlrpc, port=http, protocol=tcp]
logpath = /var/log/nginx/access.log
bantime = 43600
maxretry = 2
vi /etc/fail2ban/filter.d/xmlrpc.conf
[Definition]
failregex = ^<HOST> .*POST .*xmlrpc.php.*
ignoreregex =
设置好之后重启fail2ban服务既可生效
service fail2ban restart
查看fail2ban日志查看防御情况
tail -f /var/log/fail2ban.log
2017-07-15 23:51:38,265 fail2ban.jail : INFO Creating new jail 'ssh'
2017-07-15 23:51:38,266 fail2ban.jail : INFO Jail 'ssh' uses Gamin
2017-07-15 23:51:38,287 fail2ban.filter : INFO Set maxRetry = 6
2017-07-15 23:51:38,288 fail2ban.filter : INFO Set findtime = 600
2017-07-15 23:51:38,288 fail2ban.actions: INFO Set banTime = 600
2017-07-15 23:51:38,320 fail2ban.jail : INFO Creating new jail 'xmlrpc'
2017-07-15 23:51:38,320 fail2ban.jail : INFO Jail 'xmlrpc' uses Gamin
2017-07-15 23:51:38,321 fail2ban.filter : INFO Added logfile = /var/log/nginx/access.log
2017-07-15 23:51:38,322 fail2ban.filter : INFO Set maxRetry = 2
2017-07-15 23:51:38,323 fail2ban.filter : INFO Set findtime = 600
2017-07-15 23:51:38,323 fail2ban.actions: INFO Set banTime = 43600
2017-07-15 23:51:38,328 fail2ban.jail : INFO Jail 'ssh' started
2017-07-15 23:51:38,329 fail2ban.jail : INFO Jail 'xmlrpc' started
# 以上日志显示自定义的xmlrpc filter已经生效
2017-07-15 23:51:45,350 fail2ban.actions: WARNING [xmlrpc] Ban 185.188.204.8
2017-07-15 23:51:45,361 fail2ban.actions: WARNING [xmlrpc] Ban 185.188.204.9
2017-07-15 23:51:45,368 fail2ban.actions: WARNING [xmlrpc] Ban 185.188.204.6
2017-07-15 23:51:45,376 fail2ban.actions: WARNING [xmlrpc] Ban 185.188.204.7
2017-07-15 23:51:45,382 fail2ban.actions: WARNING [xmlrpc] Ban 185.188.204.16
2017-07-15 23:51:45,387 fail2ban.actions: WARNING [xmlrpc] Ban 185.188.204.14
2017-07-15 23:51:45,392 fail2ban.actions: WARNING [xmlrpc] Ban 185.188.204.15
2017-07-15 23:51:45,400 fail2ban.actions: WARNING [xmlrpc] Ban 185.188.204.12
2017-07-15 23:51:45,415 fail2ban.actions: WARNING [xmlrpc] Ban 185.188.204.10
2017-07-15 23:51:45,426 fail2ban.actions: WARNING [xmlrpc] Ban 185.188.204.11
# 以上日志则显示成功防御对xmlrpc进行攻击的IP等情况
参考链接:http://rbgeek.wordpress.com/2014/09/11/block-wordpress-xmlprc-php-ddos-attacks-using-fail2ban/
WordPress插件:http://wordpress.org/plugins/wp-fail2ban/
Related posts:
WordPress 启用HTTPS设置 Wp Super Cache + Nginx规则 Akismet:强大的反垃圾评论插件 浅谈博客的友情链接与链接 WordPress移除静态资源版本号CentOS LNMP WordPress自动更新需填写FTP解决方法
04-06
Ubuntu 16.04使用Docker部署WordPress
06-13
centos7.3下配置LAMP部署WordPress博客
07-04
解决WordPress的Fatal Error: Out of Memory
05-02
配置WordPress使用LS-Cache缓存数据
02-17
php-fpm性能优化实例分析
05-13
php面试笔记(7)-php基础知识-文件及目录处理考点
05-31
CentOS-5 yum安装nginx php53 mysql55 lnmp环境
04-18
centos 7安装redis及php-redis扩展
05-09
centos系统安装配置phpMyAdmin数据库管理工具
04-27
CDNFly防CC规则介绍
05-18
中国移动SIM 卡号( ICCID )的含义
06-04
刺客信条奥德赛中的野猪为什么会主动攻击,荒野大镖客2中的野猪为什么见人就跑,哪种情况是野猪的真实习性?
05-30
在调用BIOS缺省设置后,按ACCESS IBM键没有反应
07-11
笔记本无法连接CMCC-EDU无线的解决思路
06-27
9个常用iptables配置实例
03-29
WordPress启用memcached
04-20
WordPress评论与回复慢的原因及解决方法
02-19
WordPress重定向循环的几种解决方法
07-23
php 5.2/5.3 Hash漏洞补丁发布
07-15
WampServer(php集成环境安装包)下载 v3.0.6中文
378.36 MB
下载CCTalk下载
167.03M
下载Adobe Dreamweaver CC 2019中文版
320.02 MB
下载Adobe Dreamweaver CC下载
1015MB
下载Adobe Illustrator CC 2017下载
1.91GB
下载Adobe Illustrator CC 2019破解版
2 GB
下载Adobe Muse CC 2017破解版 v2017.1.0.821 附汉化方法
1.71MB
下载Adobe Photoshop CC 2015(图像处理软件)破解版
3.25G
下载网易CC下载
109.7M
下载CC清理器下载
15.57 MB
下载WordPress下载 v5.2.3官方中文版
12M
下载php开发工具下载
22.56 MB
下载adobe media encoder CC 2019下载
1.26GB
下载lightroom CC(图像编辑器软件)v2.0 免费版
1157.12MB
下载musiCCube下载
2.8M
下载rCC阅读器 v2.0 官方版
33.99MB
下载skyCC组合营销软件(网络营销软件) V8.0 免费版
75.8M
下载网易CC直播下载
134M
下载