[教學] WordPress 關閉 XML-RPC 強化安全加白名單防止 DDOS 攻擊

[教學] WordPress 關閉 XML-RPC 強化安全加白名單防止 DDOS 攻擊

對於自架站 WordPress 用戶來說,最需要擔心莫過於網站有漏洞,或是主機被 DDOS 攻擊導致資源吃滿情況,常遇到莫過於 XML-RPC 不斷被存取導致 CPU / RAM 使用率飆高情況,這時候又該怎麼辦呢?可以透過外掛關閉 xmlrpc.php 或是藉由 .htaccess 甚至是採用 CloudFlare 服務朋友,你也能夠透過防火牆設定來下指令進行,亦能將特定 IP 加入白名單避免部分服務無法使用情況,這問題真的是碰到才知道該如何解決,若有類似困擾朋友參考阿福圖文教學,避免網站掛掉讀者無法造訪情況。


 

前言:

 

[教學] WordPress 關閉 XML-RPC 強化安全加白名單防止 DDOS 攻擊

[教學] WordPress 關閉 XML-RPC 強化安全加白名單防止 DDOS 攻擊

 

發現到短暫改用 VPS 主機搭配 CyberPanel 面板,居然有天無緣無故 CPU 使用率始終維持在 9X% 上下,導致用戶瀏覽網頁速度慢,更別說我要登入後台完全卡死情況。

 

這時候的我馬上想到要來檢查 Log 檔案,發現有特定區段 IP 不斷針對 xmlrpc 連線 (如下),造成存取頻繁進而使得 CPU 負載過大問題,這時候又該怎麼辦呢,可參考下方圖文教學。

 

119.28.XXX.XXX – – [17/Mar/2021:15:08:15 +0800] "POST /xmlrpc.php HTTP/1.1" 200 271 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

 

XML-RPC 用途說明

 

自從 WordPress 3.5 版本起支援 xmlrpc (remote procedure call),可用於遠程呼叫方便於手機 App 發佈文章,只是這道門常被當作漏洞攻擊,只透過電腦發文沒有用手機 (包含 Windows Live Writer) 編輯修改習慣,那麼我想將 XML-RPC 服務關閉或是把特定 IP 加入白名單,才能避免透過 XML-RPC 測試後台使用者帳密與更換 User-Agent 字串暴力測試,如此一來就可以杜絕不少 DDOS 攻擊。

 

使用教學1 (搭配外掛或佈景函數指令)

 

[教學] WordPress 關閉 XML-RPC 強化安全加白名單防止 DDOS 攻擊

[教學] WordPress 關閉 XML-RPC 強化安全加白名單防止 DDOS 攻擊

 

外掛名稱:Disable XML-RPC
連結:https://wordpress.org/plugins/disable-xml-rpc-api/

 

說明:透過修改 .httacess 檔案防止造訪 xmlrpc.php 檔案 (會跳出 403 錯誤提示畫面如上圖),禁止 Pingback 通知功能降低 CPU 載入與 SPAM 濫發。

 

[教學] WordPress 關閉 XML-RPC 強化安全加白名單防止 DDOS 攻擊

 

外掛名稱:stop XML-RPC Attacks (適用 Jetpack 使用者)
連結:https://tw.wordpress.org/plugins/stop-xml-rpc-attacks/
說明:會將常用行動 App 呼叫 XML-RPC 及危險 methods 移除,並可正常使用 Jetpack 服務。

 

 

#免安裝外掛修改佈景主題方式#

 

參考資料:

1. How to Disable XML-RPC in WordPress – WPBeginner

2. How To Safely Disable XMLRPC In WordPress (While Keeping Jetpack) – Startup Hero

 

說明:可透過建立子佈景主題方式,透過 FTP 或是後台佈景主題編輯器當中 functions.php 新增程式碼:

 

add_filter( ‘xmlrpc_enabled’, ‘__return_false’);

 

然後修改 WordPress 目錄中 .htaccess 檔新增以下規則來拒絕白名單以外所有 IP 連線到 xmlrpc.php。

 

<Files xmlrpc.php>
    order deny,allow
    deny from all
    Allow from 192.0.64.0/18
    Allow from 192.0.80.0/20
    Allow from 192.0.96.0/20
    Allow from 192.0.112.0/20
    Allow from 195.234.108.0/22
    Allow from 185.64.140.0/22
    Allow from 76.74.255.0/25
    Allow from 76.74.248.128/25
    Allow from 198.181.116.0/24
    Allow from 64.34.206.0/24
    Allow from 2620:115:C000::/40
    Allow from 122.248.245.244/32
    Allow from 54.217.201.243/32
    Allow from 54.232.116.4/32
</Files>

 

對於使用 Jetpack 外掛朋友,雖然可以透過外掛關閉 XML-PRC 連線,但有些時候會造成異常無法使用,藉由 .htaccess 外加上方白名單 (參考 JetPack 官方連線 IP 資訊),就能正常運作不受影響啦。

 

使用教學2 (採用 CloudFlare 方式)

 

說明:本站目前使用 CloudFlare 網域代管及 CDN 功能,除了可以加快速度與擋掉高密度 DoS / DDoS 攻擊,假如是針對特定 Port 或是文件如 WordPress xmlrpc.php,你亦可藉由防火牆規則進行過濾動作,至於該怎麼做下面有詳細圖文步驟。

 

參考資料:

1. Block xmlrpc.php requests from Cloudflares firewall apart from JetPack – WP Beaches

2. Blocking XMLRPC Access In WordPress Using CloudFlare – SERT MEDIA

3. WordPress Jetpack and Cloudflare

 

[教學] WordPress 關閉 XML-RPC 強化安全加白名單防止 DDOS 攻擊

 

登錄 CloudFlare 帳戶點選“Firewall 防火牆”選項,然後按“Create firewall rule” 建立防火牆規則。

 

:CloudFlare 免費版最多能夠添加五個自定義防火牆規則。

 

[教學] WordPress 關閉 XML-RPC 強化安全加白名單防止 DDOS 攻擊

 

上方依序填入描述名稱及防火牆規則,可手動輸入或點選上圖 Edit expression 進行文字編輯,直接將下方我整理代碼給複製貼上 (參考自 Jetpack 白名單)。

 

(not ip.src in {192.0.64.0/18 192.0.80.0/20  192.0.96.0/20 192.0.112.0/20 195.234.108.0/22 185.64.140.0/22 76.74.255.0/25 76.74.248.128/25 198.181.116.0/24 64.34.206.0/24 2620:115:C000::/40 122.248.245.244/32 54.217.201.243/32 54.232.116.4/32} and http.request.uri contains "xmlrpc.php")

 

[教學] WordPress 關閉 XML-RPC 強化安全加白名單防止 DDOS 攻擊

 

網頁下方選擇 Block 封鎖,只要不在名單內 IP 都無法造訪。

 

[教學] WordPress 關閉 XML-RPC 強化安全加白名單防止 DDOS 攻擊

 

過一會兒會顯示統計數據,可以觀察到用來阻擋特定 IP 還有 XML-RPC 封鎖與白名單,從上圖可看到已經阻擋兩萬多筆 IP 攻擊其成效很不錯。

 

[教學] WordPress 關閉 XML-RPC 強化安全加白名單防止 DDOS 攻擊

 

將 WordPress xmlrpc.php 給限制訪問後,可以發現到 VPS 主機 CPU 使用率馬上下降,看來這對於阻擋 DDOS 攻擊或大量垃圾郵件發送,真的是有很好防堵效果!!! 省去由伺服器端動作造成效能大打折扣情況,算是簡單好上手方式,有遇到類似問題朋友不妨多多使用,相信對各位很有幫助的。

 

留言板