|
楼主 |
发表于 2013-3-25 19:09:04
|
显示全部楼层
上面的脚本貌似有问题:看这里解决:) [* a# K0 _/ d6 D& z. x
当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。
8 f* I- Y- n8 k9 e o! Y# U1.系统要求
1 F" m6 E7 e- j# z) u0 C
& K9 r' h4 ~8 m/ G7 s(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。
4 h/ k# w! Y* L' Q9 E' ~$ i9 g7 u- K' S: S
(2)iptables版本:1.3.7
+ m% h. l$ P: }8 f4 h7 M
) O( F. e) A8 s, H/ Z' v+ l- \% c2. 安装
4 |$ V% ~8 S t& H( w, [4 B. D
9 l1 O* }1 a! R4 Y- S安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
9 ]9 f' R9 ^) U8 i6 X# s
: g! a, t+ X$ B" Q7 g! c' b# [" B3. 配置相应的iptables规则
8 I: Y" `2 `- [# V4 T* e* [/ h4 ?; v% U8 Q }% ~9 l& }% Y& X
示例如下:. A& R( Q" [/ o& a7 A6 c! X
1 W$ {' ^. h0 z9 t$ _(1)控制单个IP的最大并发连接数
7 z. x2 F# p* l5 U# B* t* b& a7 ~7 L8 n5 z! {
iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30' ?: A: B; C M3 Z6 S+ N
(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数+ D9 ?2 J* h* c
+ Z5 y- x/ a3 n, Xiptables -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个连接' P2 ~0 J# F$ c% @# A
4. 验证3 }5 L9 B9 ?- O j; v9 E
! z" D1 A# O; H6 D
(1)工具:flood_connect.c(用来模拟攻击)
- U' Y7 u [. c9 u7 g7 w4 o
# v% ?2 ?$ ~( \(2)查看效果:3 b+ z8 v; O' p4 U/ M/ U
0 L$ M# }5 S1 j2 n, q1 C
使用
7 b* a! G. `/ |) D4 T) K9 s9 S7 M
3 F$ _: u) L9 B u6 E# lwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'; n: @- A' ^/ x6 J8 c" X: k6 ^
实时查看模拟攻击客户机建立起来的连接数,
% }% Q: v' ~2 s% v% J7 @: U' d& i) x" O- R# a6 q. }5 r
使用
! `) o+ s# x: U- ~6 p; [. E5 T" ^
watch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'0 Q: f$ E, ~9 |$ K2 l
查看模拟攻击客户机被 DROP 的数据包数。 |
|