|
|
楼主 |
发表于 2013-3-25 19:09:04
|
显示全部楼层
上面的脚本貌似有问题:看这里解决:5 v1 Q# c# s" E
当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。1 v7 a4 F M) Q
1.系统要求
+ F" H- z8 w: G7 m+ a. B: F9 x' ~
(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。
$ e# g* i) h' I7 l7 } F) Y; s' p1 T- e# M% w/ c
(2)iptables版本:1.3.7
3 y' j7 X9 w+ m. k. ]$ y! l
' U1 {& e! x( `2 l I% o2. 安装$ f4 }3 h& `6 U) h; F
# |. l: |# J/ Q: v9 n
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit% R M7 F7 y( P t6 G+ U$ I3 ]+ n
, {+ f7 k4 e/ C' @4 Z7 S
3. 配置相应的iptables规则( M" H3 ^/ M( h: @# S' ~
4 n, {7 X- h$ d) z; }0 R示例如下:
8 q( S' Q% O4 n# h) o2 m. M
1 u% Z8 \! m1 x, M8 t( W0 ^/ i7 v(1)控制单个IP的最大并发连接数
4 |8 L* w# u. Z; d5 B Z* j& U% y5 T; G! D+ h
iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30
2 I2 P; g9 b- r! b/ C(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
# m4 C) S% O" ` H# K5 {9 [, p! G0 n% T6 _2 `2 ^9 L9 I* e
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个连接. [4 W9 J! c- p' z, E; C
4. 验证2 V2 S/ e% B$ B; E* P
# m |1 Z7 j4 p) [. |) Y; O(1)工具:flood_connect.c(用来模拟攻击)
5 L. P0 Y, ^$ `( L6 w6 p& M/ i8 u8 S, ?
(2)查看效果:9 \0 R" E2 ?& b# B" o
1 a' c( D3 G# q- P, p+ m7 m: ?使用
. O1 b; W/ c8 Y9 c8 b) Y, S
Z( N+ w1 ~7 N3 K4 J3 Mwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'1 {: v' _9 y/ V, t* E+ t
实时查看模拟攻击客户机建立起来的连接数,. V1 \( k; J0 `6 D' F1 ?
E# K8 o: r2 c$ F+ O使用
4 R$ V6 Z4 y6 ?# j- C" f3 ~3 [7 k4 Z- u
watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'
, q$ n8 k0 r' O9 P9 X- a查看模拟攻击客户机被 DROP 的数据包数。 |
|