52AV手機A片王|52AV.ONE

標題: 針對Web server(port 80)的DDoS攻擊防護,以iptables實作 [打印本頁]

作者: IT_man    時間: 2016-10-8 21:08
標題: 針對Web server(port 80)的DDoS攻擊防護,以iptables實作
Linux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。* |+ ~. R" C. C0 ?4 ~7 T9 N0 T1 _
例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"
5 u! |" ]# W% @  z8 H! g1 l( _然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:: U8 _* }; n! }0 r" W
  1. iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS
  2. iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j LOG --log-prefix "[Possible DOS Attack]"
  3. iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT        
  4. iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set        
  5. iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼
  N& |8 Q( E0 M( D  A( t
如果你看dmesg遇到下列這類錯誤:        
2 z- K* m2 B( {1 H7 O2 C+ `hitcount (200) is larger than packets to be remembered (20)
+ v3 u& ~+ x/ e3 x表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。
# {% j& N* |* i4 I! j* A* D9 y, v. S1 E$ c0 N; s& {) O' d  e
測試一下吧:
( A2 v% l$ k6 p  s6 h先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)
' R4 E" N" ^9 C9 v% p可以發現在/var/log/message中出現下列訊息:
9 J; D. @) l9 O* @1 o9 rMay 17 07:12:00 localhost kernel: [Possible DOS Attack]IN=eth0 OUT= MAC=XX:XX:XX:XX:43:77:00:1f:YY:YY:YY:YY SRC=192.168.0.105 DST=192.168.0.102 LEN=64 TOS=0x00 PREC=0x00 TTL=64 ID=45026 DF PROTO=TCP SPT=59437 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0
0 f: ~# T3 n1 J此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。. i" c1 B) ]! ^8 w9 @! U
OK,iptables的ipt_recent module發揮作用了。
& C( s2 d2 U) C2 T  @, ]+ ]
( G- u$ A8 Z( a/ ^9 a8 y結論:2 M3 C; J* a* N+ f
(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小4 v. s. Y9 A9 u: D
(2) iptables設定上較有彈性,可用來防護80,443以外的port
% i( c6 T8 r7 a(3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。
( h( |% T* Q' k0 D如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。) u  @( J8 B$ ?/ O+ [5 A0 f$ _$ o1 i  D( p
" W$ {7 G: T8 i* e. ]- x

, N. T5 K4 y9 p' {& d參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/
/ X& n: x* T  ]' b2 F1 m, P0 R% h) ?, {9 N) B2 ]
================================================  D  D( b9 @+ M0 P- e
偵測可疑IP 的指令:% f" d; A4 n/ j; y, p  n
sed 's/ .*//' access.log | sort | uniq -c | sort -n
7 C/ {9 B" S6 zperl -ne 'print "$1*\n" if m#^((\d+\.){3})#' access.log | sort | uniq -c | sort -n' Z4 _7 h+ D  A





歡迎光臨 52AV手機A片王|52AV.ONE (https://www.itech.casa/) Powered by Discuz! X3.2