xmlrpc.php 被攻擊了!Nginx 一個設定擋掉 DoS / DDoS 攻擊

小蛙有一天在翻 log 的時候突然看到一堆存取 xmlrpc.php 的記錄,源源不絕的出現,Google 了一下解法,大概記錄一下。

問題

大概長這樣,源源不絕噴出來~

3KDFhEgXQqV5xnNddnU6EPEcXtoInEIEbA31OLz9g6stnHLfFmyuE1URoS6jSROzERmftu7cnqoO5z 0w5xktXpbHLuuLnSKcB0EZ40oReXqOEAkcoHeysUwpJ0mrVvHNHheK9ks3olq3evrG0plAzDYbFOP0MWotxarthexkemsfJFl9zhAkVIrCeBRDnpJ3v k64E7iMbO8PdfokSIKqJaRBbzNCFjeUtylEF0SsQA1NAQnMCKrYOT7kAvXODGVYu76MiG64ASeaWqmCRSWFKQ tMORASab7e2cif3iKsca1vUa0nTxmekt19WTanDPKMHFYfWBaGEfciyEiupjewFVF639tP0CZANwn7 Ya4fjztdVBqRmPdVfi 1HRI1A L3R4sVHj30 0d4eKm9fXuS pRpGdJUdw9tjbOhAAbVzNWi Di1zx1GLr7ViDUgi04cQsB1XU8fxfJUmU1vzoTzR2IyfUTP2kfQAT6twlg FZ2W1fKr8RAcSdiY o9QjDZ9aUxT2OU mBtYxdcXOujdrnGye8Vf0WWhKzNRlc7EtuITpnI1GPlkcdTdiC5keGyT93OmuRyacmvVBoub69OSo2pxhVu2cVridwDo roW3f DnVS j7jAY8qajjBnYlpZ vL XLo1WNJaJ9ECWc IgPcaJdjJMSrSVQVKyVMogOj28yegowLFNkG0T7FIG8HHBc0SjETi2q1qLLU5TEM5Hw=w1383 h984 no xmlrpc.php 被攻擊了!Nginx 一個設定擋掉 DoS / DDoS 攻擊

DoS / DDoS 在維基百科的翻譯是

阻斷服務攻擊(英語:denial-of-service attack,簡稱DoS攻擊)亦稱洪水攻擊,是一種網路攻擊手法,其目的在於使目標電腦的網路系統資源耗盡,使服務暫時中斷或停止,導致其正常用戶無法存取。
駭客使用網路上兩個或以上被攻陷的電腦作為「殭屍」向特定的目標發動「阻斷服務」式攻擊時,稱為分散式阻斷服務攻擊(distributed denial-of-service attack,簡稱DDoS攻擊)。

阻斷服務攻擊

解決方法

小蛙有掛 Cloudflare CDN,標榜可以擋掉一些 DoS / DDoS,不過 log 裡還是能看到一大堆記錄,小蛙參考了兩篇文章,基本做法都差不多。

第一篇參考自 Deny Access to WordPress xmlrpc.php with NGINX
第二篇參考自 資安:WordPress 禁止 xmlrpc.php 攻擊

從 WordPress 3.5 以後,xmlrpc 預設是開啟的,記得很久以前小蛙的主機也被密集攻擊過一次

FhKs2UkzZvIaSjWZKS amd5 dI 4uTeDohDkNOrRufWfiDkI9074 DADh7civNpwc3DdwmFInZ5gfcb9HZZkIDdtsgZ WhgdHsl48MlRF9d2X8YFmTQ8eJu3Nd4ahHr4whSW4KAwyga v45WD0U04bebwkhSFuM7Q2qehETsKzkJYDkDRbB88Jx rs4 23btd4j2K2Jn9 zDWXeQiC6Dt9VjMQN aKk8n68Tov0qJhh8Xi0txJeX5dz96wd 2OQd3YuDdoF1uTjCyX ggGH5QW5s9LX2CnxGv2jYkKmRLJeamrXu8pM9uF116WDT6IO32dDK 5g2vp37G02o 99NPFWBittYcrYq5tMjeGfc6idyxOrdPGw6Y45B pEBmXFkWOct qAwFwtgF5DdVSc7 VgEJfN JD98wBK3OtkR0m1idQAamgL2jkAmNiLG8tKdVkJKvy3yNnm1hNALzQrZYPTg1Nuonsnza0eKWdYLv68WWr3gvB6GG3xLGhGaky3PsS BsDNJShWdZ wM9bcNL 7C2CD FXZA2HN75jn3VAqlB2Psm34Oznn8MVK63npxXnyNFnwNkudmK9DMrKhlcEn3av63SCNkQAJKQdEQLZad0ULMYMQOUDthedJNKJr3winGh1xBCddplRfn9BOu5tCKiNJoxJgjbETj89BOc8 fkxgREFq1e3GHzBE9LxkzT ePd0zBZ7ZY7vlnZVAN uCOxFFu7F9Ublv2tEM7Z0U0xw3=w652 h148 no xmlrpc.php 被攻擊了!Nginx 一個設定擋掉 DoS / DDoS 攻擊

小蛙用的是 nginx,裡面可以設定當某個路徑被存取的時候,作相對應的動作,這邊我們確切知道就是 /xmlrpc.php 這支,所以就可以這樣寫

server {
  ...
  location = /xmlrpc.php {
    deny all;
    access_log off;
    log_not_found off;
    return 444; 
  }
}

當被存取 xmlrpc.php 的時候,拒絕所有連線,把存取 log 跟找不到檔案 log 都關掉,最後回傳 444,而這個 444 維基百科上的說明是 nginx 自己擴充的狀態碼。

XJ4orO2MZsURjfU6TrmCzHWPBR6Uq3ZS66qmx2iAuiqpZ33AIuLM1BngtEQK1pQx43p5XfPHYYjAWdzrAEk1typzGm2tcd32w6JWMs8ipNGdO8O2PqYzC82t 6L2fTCZ ciy5sdZPOPivObmh ga58BPeFzB8uuxzgL10RfVxHH4dc9vIBXO3Q8ZFR7yhkQ nbe32Ve9BO5KX078TCz H9ZszFaO7jPQdsg31m9 r55Q20sXIhAR3swpvWfW4HZFXe J 8b9 nwURLU5lpg6eVREE hXBJ1naGu 3z GDzWGgOSgBWVSFCoqHY4lvx4n8rfu QiJ84T6LK AVxmruKinFCdwxIUwRHYMWoKHeHr lT SCakPKtIp5 Mi0qqhU3fotJHCjChzJbAlpjJUsckRuSVUFs6mHcc7hIm0ut6Nb6WYuC8kS0nf7unfV2AE1XnZxOxL6VedEsc2qK J4e9fZ6B1ZIDwwvk1ZinOpl692jpdLz2BF8ly3IdmQaSy68HTfLJWCNrNPbJcKGfjatVuMvFcmM Qbm5VHPzmbqQndV23371HAzjYcsib180DEQGk8SiUDUQttx34vlEqb6lh2YdgNviXHzhWh7D50r hMXqQWg0yHMbztGUCD OluQ9fVpUJczjIBU2ZPi15ePHowLrJhl DvLYftCrsb6IzR BCpPUx0bgP7fxRaOAMG8a cDQuqHw3wxdHVMh1w 0H2w=w888 h332 no xmlrpc.php 被攻擊了!Nginx 一個設定擋掉 DoS / DDoS 攻擊

雖然這樣 request 還是會進來,但是至少被 nginx 拒絕掉之後,不會因為大量執行 php,導致占用 CPU 跟記憶體,另外 Deny Access to WordPress xmlrpc.php with NGINX 最下面也有提到,用這個方法的話,會導致一些需要透過外部存取的插件失效,不過小蛙沒有用類似的套件,先解燃眉之急囉!這篇留在這邊給有需要的人或是未來換主機之後又遇到的自己。

    發佈留言

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

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料