最近经常发现自己的站点遭受攻击,查询了一下日志,发现有大量的访问xmlrpc.php,造成CPU、内存、流量等居高不下。网上很多教程提示如何禁用xmlrpc.php,否则很容易被暴力破解、DDoS攻击导致瘫痪。如何禁用呢?像搬主题这些站点使用OpenLiteSpeed环境的,设置完还不生效的,如何解决?这里搬主题就分享一下解决教程。
什么是xmlrpc.php?
XML-RPC是支持WordPress与其他系统之间通信的规范。它通过使用HTTP作为传输机制和XML作为编码机制来标准化这些通信来实现此目的。
在WordPress的早期版本中,默认情况下已关闭XML-RPC。但是从3.5版开始,默认情况下已启用它。这样做的主要原因是允许WordPress移动应用程序与您的WordPress安装进行对话。
如果您的站点上启用了XML-RPC,则黑客可能会利用xmlrpc.php在短时间内向您的站点发送大量的pingback,从而在您的站点上发起DDoS攻击。这可能会使服务器超载,并使站点无法正常运行。
因为xmlrpc.php随每个请求发送身份验证信息,所以黑客可以使用它来尝试访问您的站点。这样的暴力攻击可能使他们可以插入内容,删除代码或破坏数据库。
如果攻击者向您的站点发送了足够多的请求,每个请求使用不同的用户名和密码对,则它们最终有可能会被攻击到正确的请求,从而使他们可以访问您的站点。因此,如果您正在运行WordPress的最新版本(使用REST API与外部系统进行通信),则应禁用xmlrpc.php。
如何判断自己的站点启用了xmlrpc.php?
其实很简单,只要访问你的域名/xmlrpc.php就知道了,如搬主题的https://www.banzhuti.com/xmlrpc.php,如果未禁用的状态如下:
如何禁用了后的状态一般为403,如下:
如何禁用xmlrpc.php?
这里主要总结了6种方法,大家可以根据自己的需要进行使用
第一种是屏蔽 XML-RPC (pingback) 的功能
在自己的WordPress主题的functions.php文件中添加如下代码
add_filter('xmlrpc_enabled', '__return_false');
第二种方法就是通过.htaccess添加如下代码屏蔽xmlrpc.php文件的访问
# protect xmlrpc <Files xmlrpc.php> Order Deny,Allow Deny from all </Files>
第三种同样的是修改.htaccess文件加跳转
如果有用户访问xmlrpc.php文件,然后让其跳转到其他不存在或者存在的其他页面,降低自身网站的负担。
# protect xmlrpc <IfModule mod_alias.c> Redirect 301 /xmlrpc.php http://example.com/custom-page.php </IfModule>
第四种阻止pingback端口
在WordPress主题的functions.php文件中添加
add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback_ping' ); function remove_xmlrpc_pingback_ping( $methods ) { unset( $methods['pingback.ping'] ); return $methods; }
第五种添加服务器配置
Nginx配置添加如下代码禁止访问该文件
location ~* /xmlrpc.php { deny all; }
Apache配置禁止访问该文件:
<IfModule mod_alias.c> Redirect 301 /xmlrpc.php http://baidu.com </IfModule>
第六种安装插件
安装WordPress安全插件,可以试一下【iThemes Security Pro汉化中文专业版|WordPress最佳安全防护插件介绍】或【WPMU Dev Defender Pro 3.3.3完美汉化中文版|WordPress高级防火墙安全防护插件】
为什么在OpenLiteSpeed环境下不生效?
不懂大家有没有发现,以上这些办法都试了之后,发现xmlrpc.php还是能访问,觉得很奇怪,为什么呢?
比如在主题里增加代码add_filter(‘xmlrpc_enabled’, ‘__return_false’);后,结果还是不生效,到底是怎么回事呢?这里搬主题经过测试发现,只能在.htaccess文件添加代码的方法才有效。
添加如下代码:
<IfModule mod_rewrite.c> RewriteRule ^(xmlrpc\.php|wp-trackback\.php) - [F,L] </IfModule>
并且,修改了.htaccess文件后,还需要重启LiteSpeed服务。
重启命令如下:
/usr/local/lsws/bin/lswsctrl restart
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容