WordPress 如何關閉 XML-RPC 服務,避免資安攻擊風險

WordPress 如何關閉 XML-RPC 服務,避免資安攻擊風險

為了提升 WordPress 站台安全性,我安裝了防火牆及防毒外掛 Wordfence,此外掛提供了基本的站台防護能力,且提供即時惡意攻擊監控,我在即時監控的記錄中發現了有外部駭客正不斷的暴力攻擊 /xmlrpc.php 應用程式。

此駭客來至世界各地的主機,攻擊時間幾乎是 24 小時不停歇,從記錄中發現駭客使用不同的帳號密碼嘗試登入服務。
除了此 xmlrpc.php 的登入攻擊,還有 wp-login.php 也同樣遭遇暴力登入攻擊,如何解決 wp-login.php 暴力登入攻擊可參考另一篇文章: WordPress WPS Hide Login 外掛教學,隱藏登入網址,防止暴力登入攻擊

這一篇文章將會來教學如何關閉 XML-RPC 服務,避免資安攻擊風險

什麼是 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 呼叫要求。

XML-RPC 服務連線測試

測試網址: https://xmlrpc.eritreo.it/
在 Address 上輸入WordPress 網址的 /xmlrpc.php 後,再自己決定是否輸入帳號密碼測試 XML-RPC 系統回應。

XML-RPC 服務連線測試

按下「Check」查看系統回應。
若不輸入帳號密碼且 XML-RPC 正常運作中,則會要求再次輸入帳號密碼登入。

XML-RPC 服務連線測試

若出現其他的錯誤回應,則表示測試連線不成功。

如何關閉 XML-RPC 服務

方法1: 安裝 Disable XML-RPC 外掛

外掛名稱: Disable XML-RPC
官網介紹: https://tw.wordpress.org/plugins/disable-xml-rpc/
在後台「安裝外掛」輸入「Disable XML-RPC」後安裝並啟用外掛。

如何關閉 XML-RPC 服務

安裝後並啟用就好了,不需要特別的設定,啟用此外掛之後,它會停用 XML-RPC 的方法,但不會阻擋連線,所以在測試的時候會發現一樣可連線 /xmlrpc.php ,但執行服務呼叫時會發生錯誤。

如何關閉 XML-RPC 服務

方法2: 修改 php 檔案,停用 XML-RPC

開啟「外觀 > 佈景主題編輯器」

右側「佈景主題檔案」選擇「functions.php」,在語法內增加指令

修改完「更新檔案」。
此修改會停用 XML-RPC 的方法,但不會阻擋連線,所以在測試的時候會發現一樣可連線 /xmlrpc.php ,但執行服務呼叫時會發生錯誤。

方法3: 停用 xmlrpc.php 系統回應 (適用 Apache 架站)

如果你不想安裝外掛,可修改 Apache 站台底下 WordPress 根目錄的 .htaccess 文件,設定網站拒絕回應 xmlrpc.php 頁面
在文件底部增加此語法

語法中 allow from 127.0.0.1 指的是允許本機 IP 可接受連線,你也可以改為你可連線的 IP,若不會使用 XML-RPC可以刪除這一行。

設定完成記錄重啟 Apache 網站服務。

方法4: 停用 xmlrpc.php 系統回應 (適用 IIS 架站)

如果你不想安裝外掛,可修改 IIS 站台底下 WordPress 根目錄的 web.config 文件,設定網站拒絕回應 xmlrpc.php 頁面
在文件內增加此語法,並放在 <configuration> 範圍內

語法中 <add ipAddress=”127.0.0.1″ subnetMask=”255.255.255.255″ allowed=”true” /> 指的是允許本機 IP 可接受連線,你也可以改為你可連線的 IP,若不會使用 XML-RPC可以刪除這一行。

完整語法參考

設定完成記錄重啟 IIS 網站服務。

修改完後再執行網址測試,就會回應 500 錯誤。

使用 XML-RPC 服務測試時,也會得到 500 錯誤。

重點整理

  1. Wordfence 提供防毒及防火牆功能
  2. XML-RPC 服務預設為開啟狀態,卻會遭受惡意攻擊
  3. XML-RPC 提供對外程式呼叫服務
  4. 使用 Disable XML-RPC 外掛或修改原始碼關閉服務
  5. 可直接設定網站伺服器拒絕回應 xmlrpc.php

相關學習文章

如果你在學習上有不懂的地方,需要諮詢服務,可以參考站長服務,我想辨法解決你的問題
如果文章內容有過時、不適用或錯誤的地方,幫我在下方留言通知我一下,謝謝

加入社團一起討論

關注我的 IG

One thought on “WordPress 如何關閉 XML-RPC 服務,避免資安攻擊風險

  1. XML-RPC 服務連線測試
    測試網址: https://xmlrpc.eritreo.it/
    這個網站好像已經停止使用了?
    安裝 Disable XML-RPC 外掛以後直接開啟 xmlrpc.php 好像還是可以看見內容
    不知道除了還有沒有其他測試 xmlrpc 用的網站?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

11 + one =


The reCAPTCHA verification period has expired. Please reload the page.