XML-RPC 是 WordPress 的 API, 給開發者開發手機 Apps, 桌面應用程式或其他服務時, 可以跟 WordPress 溝通, 從遠端能達到很多需要登入 WordPress 後台才能做的工作。xmlrpc.php 則是負責這個 API 的檔案, 而很多針對 WordPress 的 DDOS 攻擊也是針對這個檔案。
早前在一台 VPS 上面, MySQL 的使用資源很高, 停止 Apache 後便沒有問題, 查看 Apache 的紀錄檔後, 發現有大量存取 xmlrpc.php 的紀錄, 平均每秒鐘有幾個存取的紀錄, 由於攻擊的 ip 有十多個, 所以還沒有給 mod_evasive 攔截。
解決方法除了逐一攔截那些 ip 外, 就是直接禁止存取 xmlrpc.php 檔案, 原因是我應該不會用到那個功能。
以下設定可以放在 httpd.conf 或 .htaccess, 如果加到 httpd.conf, 需要重新啟動 Apache:
1 2 3 4 |
<Files xmlrpc.php> order deny,allow deny from all </Files> |
當有人嘗試存取 xmlrpc.php 時, 會回傳 403 Forbidden, 而加入以上設定後, 主機的狀況立即回復正常。