|
|
楼主 |
发表于 2013-3-25 19:09:04
|
显示全部楼层
上面的脚本貌似有问题:看这里解决:% }+ O1 F2 p$ U: n7 c& A
当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。9 ]& s; B: D! x, W
1.系统要求, b4 ?5 E6 j/ l" s# Z% R1 p+ C
' }! R! W2 h. l, X0 i(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。! R2 {5 b( D( z; F0 p
& M3 k8 A; U7 @! M! y- ](2)iptables版本:1.3.7
3 S( f: y- |& l& g/ p
6 g- {! E6 M i N: s2. 安装
+ D$ o, G z7 t0 H: t7 T4 w( T' T$ O1 x
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
4 f! `/ n3 V- o6 R: `* S
8 G( p9 i' H( x9 O3. 配置相应的iptables规则
- w* p$ n* T) z9 c& d( k8 V* X( v+ w8 X$ ?& o* c/ x; E
示例如下:! w: } U0 c( S; ?% T' i- x9 S
! P F w6 I8 ]3 w' z* r
(1)控制单个IP的最大并发连接数# J# {+ Y* Z$ d3 z; ?( b& [5 r
0 e" h; E+ G# \
iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30) D8 b, q( H; O' o- X" }
(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数# y5 s7 z1 m! C& ^9 c
0 f8 V8 `$ x8 \: J: c5 ~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个连接
0 h6 H1 a; F/ B0 M/ m4. 验证
. w& a- a9 K; d
) u9 x2 ~3 @ w5 P3 k _(1)工具:flood_connect.c(用来模拟攻击)$ m. h, S% E/ i1 y3 u# Y
! A+ c: p- _, i3 O2 u$ }/ o(2)查看效果:, a' s R+ s: L/ G
! g" C* ]+ ]( m3 X5 `$ q使用# K6 f( R: G" D/ y* i
0 L; k( v) I3 s2 k& K
watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'
5 m/ w4 ?$ K1 |3 N& H: J' D实时查看模拟攻击客户机建立起来的连接数,
( B& n1 W& G( U8 I3 i5 }
' ?5 p( O; M7 @) c l使用. N0 d4 Z4 ^8 n
9 ?; n% m+ y- c p
watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>': }; b" |; }0 ~% H1 n6 J/ ~
查看模拟攻击客户机被 DROP 的数据包数。 |
|