|
|
楼主 |
发表于 2013-3-25 19:09:04
|
显示全部楼层
上面的脚本貌似有问题:看这里解决:" O4 U7 B$ X0 r9 w) v3 a- m
当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。+ P' _+ U9 c! @5 K6 ^; \
1.系统要求5 T- w& S- g1 \8 e
$ k! W! B/ `9 r# I. j, y3 b(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。& v' O0 w- F6 p8 C4 {
' w/ t7 ~& p) A- y
(2)iptables版本:1.3.70 M" U2 X5 \: o+ k. t; Q
+ v w! C7 Q( H( g2. 安装, l3 G, F# e5 F3 d7 b+ D
6 N( u& P+ R- l
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
, P9 n: A, v! x& s0 ?! |- ^$ k* H& Y- S# H
3. 配置相应的iptables规则! |- l6 Y# v7 j7 m- Q5 y
# s5 ^' B. b7 W& S" K) V
示例如下:
4 Z+ W7 l8 m0 i0 F J, ]4 o
! S& o2 k/ O& F5 Y2 {(1)控制单个IP的最大并发连接数
9 l J* v/ D& y; R
$ g X: w# Q/ ?& oiptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30
: H9 `7 s( R2 B3 x(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数
/ h; t. c- s7 R6 p% }- ]- |% L( r2 h2 u2 F' m# t3 q
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个连接5 x0 @ b+ |. O" t3 Q
4. 验证, S/ R) L" l4 d" G/ A$ h
. `4 {; ]# I3 \1 D. M(1)工具:flood_connect.c(用来模拟攻击)' g. d& @) r% a3 ~/ M+ H1 c
& u- i1 A4 {, j( |3 Q( [+ w5 ~1 [, _(2)查看效果:
# j: Z( f' W1 f' k; v* a; L- Z. Q& u, R* e" E
使用
" ~3 B; F$ L; B0 v1 t* n' Z8 ^3 P$ [; C0 }1 i
watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'
$ ]; D! l4 q! a4 { Y实时查看模拟攻击客户机建立起来的连接数,! v6 o9 l, ^- i, ?8 S7 k
! h/ K) ~+ r7 `) [- w# }使用
" x) \9 a6 N% U4 q% w' z7 t
) B7 S) P% p$ ~2 I' hwatch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>') {) {4 [# j# H6 o) a4 T5 S
查看模拟攻击客户机被 DROP 的数据包数。 |
|