|
|
楼主 |
发表于 2013-3-25 19:09:04
|
显示全部楼层
上面的脚本貌似有问题:看这里解决:
- u( B4 }; @' K8 y8 C* K6 K 当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。2 o$ B* G: \& f/ v& F1 R1 U' \
1.系统要求
% G& f! F) l3 s. O* `! z1 f6 Z5 h# `7 K9 t @
(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。& D6 F9 V! U" m" Z2 A3 F) O
0 l$ E ~6 @# ?! ^+ t(2)iptables版本:1.3.7
7 h6 u/ b% R9 W( S( E" {$ e$ d9 U( _+ z( I
2. 安装
6 p3 P' A/ _$ \# V9 T: Q5 Q3 a4 ]( x
4 K/ z' j8 x2 ]9 K7 s( l安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit `: n8 U( F5 Y0 W- _# `
, D. a- q. u$ E6 v; o6 p" J3. 配置相应的iptables规则, {) E5 E1 P K* E/ J; [4 S% R
% @* M5 ?* S& L4 o# r# C示例如下:
8 N7 ~( Y/ t7 F: a" ^
- r: A/ t' y: U; q. o( H(1)控制单个IP的最大并发连接数
8 ]" m% O& T( |2 `* ~% R+ k. E, C2 y! G d9 ? _/ X
iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 309 R8 [4 F# z0 K$ A8 `* C$ V( @5 W8 P
(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
1 p2 B$ ~/ X3 W5 [ F# m( ~
' d9 O. l' h& f2 ^9 w6 R [iptables -A INPUT -p tcp --dport 80 -m recent \ --name BAD_HTTP_ACCESS --update --seconds 60 \ --hitcount 30 -j REJECT iptables -A INPUT -p tcp --dport 80 -m recent \ --name BAD_HTTP_ACCESS --set -j ACCEPT #单个IP在60秒内只允许最多新建30个连接
& v9 z( K. |! i4. 验证% f2 u: t3 ]; K4 @# _
" l& {4 ~* a. q8 v5 p' K# R1 v9 g# s
(1)工具:flood_connect.c(用来模拟攻击)5 A5 {: g8 S7 _' B; f+ M: O! W
: D; V/ w) V2 q+ G* C
(2)查看效果:
' p' Y$ T$ W. L s Q
, \5 D4 J+ B2 r# d( O使用' u6 M, h, D1 L2 S- d: ^
% R# ]1 }: g* w, h1 cwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l' t2 i, t0 X3 G5 q
实时查看模拟攻击客户机建立起来的连接数,
7 @. Y2 }0 }& b7 o, K* F3 {$ V& S" t- i- C9 B
使用
. o9 I, b* R% C. D) H; w+ b9 r2 H
" w5 v' C+ t4 ~watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'8 ^5 F. | R U* `
查看模拟攻击客户机被 DROP 的数据包数。 |
|