为了提升 WordPress 站台安全性,我安装了防火墙及防毒外挂 Wordfence,此外挂提供了基本的站台防护能力,且提供即时恶意攻击监控,我在即时监控的记录中发现了有外部骇客正不断的暴力攻击 /xmlrpc.php 应用程序。
此骇客来至世界各地的主机,攻击时间几乎是 24 小时不停歇,从记录中发现骇客使用不同的帐号密码尝试登入服务。
除了此 xmlrpc.php 的登入攻击,还有 wp-login.php 也同样遭遇暴力登入攻击,如何解决 wp-login.php 暴力登入攻击可参考另一篇文章: WordPress WPS Hide Login 外挂教学,隐藏登入网址,防止暴力登入攻击。
这一篇文章将会来教学如何关闭 XML-RPC 服务,避免资安攻击风险
XML-RPC 是 WordPress 提供对外远端程序呼叫 (Remote Procedure Call ; RPC) 的 API 接口,可提供外部系统透过 XML-RPC API 执行远端发文管理。
常用外部服务例如 Blogger, metaWeblog, Movable Type 或是 Pingback 等等,可与 XML-RPC 串接服务。
XML-RPC 使用 http 协定作为传送机制,串接页面为 /xmlrpc.php,在 3.5 版开始,预设会启用此功能。
WordPress 预设开启对外 API 服务,同时也潜藏着资安风险,在 2014 年曾经发生过一次大规模的攻击事件,是由 XML-RPC 漏洞所引起,如果你的网站并没有使用 XML-RPC 服务,建议关闭 XML-RPC 服务以避免资安风险。
如果用网址打开 WordPress 的 /xmlrpc.php 页面,会显示此回应讯息。
此讯息为 XML-RPC 服务正启用,但只接受 POST 呼叫要求。
测试网址: https://xmlrpc.eritreo.it/
在 Address 上输入WordPress 网址的 /xmlrpc.php 後,再自己决定是否输入帐号密码测试 XML-RPC 系统回应。
按下「Check」查看系统回应。
若不输入帐号密码且 XML-RPC 正常运作中,则会要求再次输入帐号密码登入。
若出现其他的错误回应,则表示测试连线不成功。
外挂名称: Disable XML-RPC
官网介绍: https://tw.wordpress.org/plugins/disable-xml-rpc/
在後台「安装外挂」输入「Disable XML-RPC」後安装并启用外挂。
安装後并启用就好了,不需要特别的设定,启用此外挂之後,它会停用 XML-RPC 的方法,但不会阻挡连线,所以在测试的时候会发现一样可连线 /xmlrpc.php ,但执行服务呼叫时会发生错误。
开启「外观 > 布景主题编辑器」
右侧「布景主题档案」选择「functions.php」,在语法内增加指令
add_filter('xmlrpc_enabled', '__return_false');
修改完「更新档案」。
此修改会停用 XML-RPC 的方法,但不会阻挡连线,所以在测试的时候会发现一样可连线 /xmlrpc.php ,但执行服务呼叫时会发生错误。
如果你不想安装外挂,可修改 Apache 站台底下 WordPress 根目录的 .htaccess 文件,设定网站拒绝回应 xmlrpc.php 页面
在文件底部增加此语法
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
allow from 127.0.0.1
</Files>
语法中 allow from 127.0.0.1 指的是允许本机 IP 可接受连线,你也可以改为你可连线的 IP,若不会使用 XML-RPC可以删除这一行。
设定完成记录重启 Apache 网站服务。
如果你不想安装外挂,可修改 IIS 站台底下 WordPress 根目录的 web.config 文件,设定网站拒绝回应 xmlrpc.php 页面
在文件内增加此语法,并放在 范围内
<location path="xmlrpc.php">
<system.webServer>
<security>
<ipSecurity allowUnlisted="false">
<add ipAddress="127.0.0.1" subnetMask="255.255.255.255" allowed="true" />
</ipSecurity>
</security>
</system.webServer>
</location>
语法中 指的是允许本机 IP 可接受连线,你也可以改为你可连线的 IP,若不会使用 XML-RPC可以删除这一行。
完整语法参考
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<location path="xmlrpc.php">
<system.webServer>
<security>
<ipSecurity allowUnlisted="false">
<add ipAddress="127.0.0.1" subnetMask="255.255.255.255" allowed="true" />
</ipSecurity>
</security>
</system.webServer>
</location>
</configuration>
设定完成记录重启 IIS 网站服务。
修改完後再执行网址测试,就会回应 500 错误。
使用 XML-RPC 服务测试时,也会得到 500 错误。
WordPress WPS Hide Login 外挂教学,隐藏登入网址,防止暴力登入攻击
WordPress 强制使用 https 连线 (使用 SSL 凭证)
如何在 WordPress 设定 Google reCAPTCHA 保护(登入、留言、联络)表单,免遭恶意攻击
>>: Day11 Redis组态档设定-EVENT NOTIFICATION/GOPHER SERVER/ADVANCED CONFIG/ACTIVE DEFRAGMENTATION
UML Notifier 的 UML 主要是根据 Ant Design 的设计画出来的,而在 Ma...
在 App 需求中 若页面需要通过 URL 渲染远端 HTML 页面 若页面资料提供的是 html...
假设你今天很辛苦的把flask前後端都写好了, 在自己的电脑上运行,操作都没问题,终於把难缠的bug...
二元树(Binary Tree)是最广泛被使用的树状资料结构,简单来说即为每个节点最多只能有两个子节...
试算表不是只有 GoogleSheet 跟 Excel ... 爲什麽试算表需要多人协作? 在不能多...