|
|
tid=48979& 本帖最後由 IT_man 於 2016-11-18 21:51 編輯 9 ?3 T7 I* U }
. r `! \" A/ ?, P4 Y
Linux強大的iptables,有一個名為ipt_recent的module,能阻擋DDoS攻擊。' s1 a) G1 h% Q/ A% [: |
例如,你可以新增一個chain: iptables -N WEB_SRV_DOS 或是 ":WEB_SRV_DOS - [0:0]"; L- w% |" i, `4 ?
然後,再用以下的指令,把60秒內hit port 80/443超過10次的IP阻擋並記錄下來:! C6 h0 B2 U, f
+ Z0 m, x. n+ Y3 o2 @, i- iptables -A INPUT -p tcp -m multiport –dports 80,443 -j WEB_SRV_DOS' i# k3 ?& R) @! G6 |
- 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]"
' Y$ j' j& a/ h: Z - iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --rcheck --second 60 --hitcount 10 -j REJECT 1 B( }4 Y7 ^- P; y, [
- iptables -A WEB_SRV_DOS -p tcp --syn -m multiport --dports 80,443 -m recent --set
7 X$ f1 u6 m8 Y - iptables -A WEB_SRV_DOS -p tcp -m multiport --dports 80,443 -j ACCEPT
複製代碼
; j/ ]0 l! M' h( d; P" C+ R& u9 z
& ] b4 R' w7 g如果你看dmesg遇到下列這類錯誤:
8 ?1 H" P2 T1 K5 N4 h- j# J: b3 ahitcount (200) is larger than packets to be remembered (20)
5 J: u( x W, o表示你設定要計算的次數大於ipt_recent所設定的上限,可透過調整ipt_recent module的ip_pkt_list_tot參數來解決。4 }- C) @9 `* T4 A) o1 S7 C
; [/ h7 U8 \! X9 A; g9 W. ^) l5 U2 m
測試一下吧:4 p% g' k! _4 ~ R J7 b x
先對測試site發出大量的 http request [size=13.376px](可以寫程式來跑,或用所謂的工人智慧 – 用browser開多個TAB,不斷的reload網頁。)( r. I/ W6 w& t8 A
可以發現在/var/log/message中出現下列訊息:+ p6 N1 R; @$ W: B
May 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
; }3 g3 x" V( }- O* H5 o此時再以browser打開測試網頁,則會出現Connection refused,無法連上(因為我設定的rule是REJECT)。, Q; e1 r5 K4 i- z( |5 {
OK,iptables的ipt_recent module發揮作用了。! m1 B4 W- Y4 W$ R6 y; |1 z3 C
8 R+ l' ?, c* Q' L結論:
: h2 R6 Y m s* C; H" \" `(1) iptables在網路層即阻擋掉攻擊封包,對server的loading影響較小. p& Y6 h0 [* \6 }: E2 t7 s' k) k
(2) iptables設定上較有彈性,可用來防護80,443以外的port
: o; l4 k+ X5 }# ](3) iptables可設定於獨立的主機,擺在server的前方進行保護,可以完全不讓攻擊封包進入server。
8 ~/ k/ z# {# K' k- |, D如果你是用MS Windows + IIS,別傷心,你可以參考AQTRONIX WebKnight這套免費的web application firewall,裡面即有防護DDoS攻擊的功能。0 W/ }7 G% ]5 s9 f! {* ^
# i% |" N& r' J& P1 {3 z
$ [" R$ s7 w. n7 _$ n
參考原文: http://blog.eztable.com/2011/05/17/how-to-prevent-ddos/) Z: R0 K- }6 _' A4 Z
|
|