這陣子常常受到 WordPress 的 Pingback 漏洞的 DDos 攻擊,實在很頭疼,幸好像這種類型的 DDos 都有特徵可尋
155.199.156.69 shazi.info - - [15/May/2016:00:00:18 +0800] "GET /index.html HTTP/1.0" 200 162 "-" "WordPress/4.4.2; http://mobile-di.com; verifying pingback from IP" "-""-"
從 access.log 看到大量的相同 log,其特徵是 User-agent 都是 “WordPress/版本; 來源站; verifying pingback from IP”
從 Server 角度上的防禦可以在 Nginx 加入 User-agent 判斷進行過濾
先建立一個 user-agent.rules 清單,將要過濾的 Usert-agent 寫在裡面
$ vim /etc/nginx/user-agent.rules map $http_user_agent $block_agent{ default 0; ~^$ 1; ~*malicious 1; ~*backdoor 1; ~*netcrawler 1; ~*Antivirx 1; ~*Arian 1; ~*wordpress 1; ~*pingback 1; ~*joomla 1; ~*wget 1; ~*curl 1; - 1; }
上面是典型攻擊的 User-agent,可以按照自己的需求建立
再來到 nginx 設定檔 include 這個 User-agent
$ vim /etc/nginx/nginx.conf http { include user-agent.rules; }
在 server {} 加入判斷
$ vim /etc/nginx/conf.d/domain.conf server { if ( $block_agent = 1 ) { return 403; } } $ service nginx reload
如果符合 $block_agent 就會等於 1,預設為 0,並且返回 403
在檢查一下 log
155.199.156.69 shazi.info - - [15/May/2016:00:05:18 +0800] "GET /index.html HTTP/1.0" 403 162 "-" "WordPress/4.4.2; http://mobile-di.com; verifying pingback from IP" "-""-"
已經返回 403 拒絕訪問囉!!這是 server 端的作法,如果你的前端有更高階的 Layer 7 設備,就讓他來擋吧
若是你也擁有 WordPress 而不知道如何確認是否擁有此漏洞可以到 is-my-wordpress-ddosing 檢測