我有一台運行 Apache2 的 Ubuntu 12.04 機器,它託管大約 10 個 WordPress 網站。
最近,我受到了客戶端的攻擊,這些客戶似乎將 POST 請求發送到名為“xmlrpc.php”的 WordPress 文件
我阻止發送這些惡意請求的 IP 位址的方式是一個繁瑣的手動過程,我想以某種方式自動執行此過程。
一旦我注意到我的伺服器負載很高,我就會執行以下操作:
我在所有虛擬主機存取檔案上運行 apachetop。這顯示了所有發出的請求,以便我可以查看是否向 xmlrpc.php 發出了任何請求
一旦確定哪些 IP 正在攻擊我的伺服器,我就會對每個違規 IP 位址執行以下命令:
sudo iptables -A INPUT -s 94.102.52.95 -j DROP
當所有 IP 位址都添加到我的封鎖清單中時,我的伺服器負載立即下降到正常水平
有沒有辦法自動化這個流程?我正在考慮在 xmlrpc.php 中編寫一些程式碼,將任何 IP 位址新增到我的封鎖清單中,以查找發送請求的任何 IP。有誰知道如何做到這一點?
先致謝!
答案1
我不認為阻止每個 IP 是解決此問題的方法。執行 POST 操作的 IP 最有可能是世界各地受感染/被駭客攻擊的 PC。只有將每個 IPtables 列入黑名單,您的 IPtables 才會被淹沒。如果 WP 網站已被駭客攻擊,我建議將其關閉並通知客戶清理混亂並更新所有元件。
您可以安裝 mod_security 以防止上傳惡意程式碼。您還可以指示 mod_security 完全阻止該特定頁面的 POST 請求,它只會返回 404,這將為您節省一些負載(並阻止駭客攻擊)。
如果上述仍然沒有幫助,並且您想阻止每個 IP(我會確保在一段時間後刪除它們,以防止巨大的 iptables),您可以製作腳本跟踪 access.log 並阻止 IP(例如 shell帶有cronjob/ sleep 的腳本,或更好:perl/python 中的一個不錯的守護進程)。