|
|
楼主 |
发表于 2013-3-25 19:09:04
|
显示全部楼层
上面的脚本貌似有问题:看这里解决:
" g+ D) k, p6 |2 T! Q U9 r 当apache站点受到严重的cc攻击,我们可以用iptables来防止web服务器被CC攻击,实现自动屏蔽IP的功能。" n9 [5 o3 @# x# J9 B5 Z# K
1.系统要求
# k( c. D, {. E
O' \- y7 k" v. N8 n; S7 _(1)LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。
, l/ q2 A& ?* ?2 W. P
6 L" o9 D: ?8 m% h1 E(2)iptables版本:1.3.7
3 W7 q9 ~2 q9 E/ X' k% E2 ~: i8 q( M1 k: S h: i
2. 安装
$ p0 Y6 O4 F9 {, G% I. G3 G, f! O% H5 {: Y8 D9 i: x
安装iptables1.3.7和系统内核版本对应的内核模块kernel-smp-modules-connlimit
+ D* y; O: B. v4 G! k- o
3 Z; y. u4 p/ N+ O5 V3. 配置相应的iptables规则1 ?1 f8 ?0 f) i! [2 ~# g2 T
5 _0 f( z. m8 n示例如下:7 Q4 Y; T7 u) V. y* o
$ Z7 F! |, J0 q$ ^(1)控制单个IP的最大并发连接数$ f& A4 z* {# J$ \$ b B$ Q" M
3 Y9 ^ F) |5 X' F1 i4 v% ^iptables -I INPUT -p tcp --dport 80 -m connlimit \ --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30
' N' s; z3 c# E/ F: {(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数5 P. r7 {+ W' A
3 t7 X4 P- {6 |9 E% q: m& n; a- {9 f' ^
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个连接
( D8 K4 ?9 R/ U9 d: G4. 验证
/ ^. n. a8 i @) g0 P: C: f8 w+ C4 ^* T# I
(1)工具:flood_connect.c(用来模拟攻击)
" i5 i8 D. h1 [/ `& q2 P" y- M. K/ c, O4 N
(2)查看效果:5 V3 o9 X! u- p% _$ w6 I& R
, u, x( I( n. d
使用
2 K' `5 q4 m0 o
$ J. l) t8 C) g6 R5 G! C8 o xwatch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'* h$ Y: q" b: X* r, h% @$ Z" T
实时查看模拟攻击客户机建立起来的连接数,8 d6 j6 K5 Z+ X0 B/ R u* {: E5 @1 k
% }' ^ [2 c3 Y+ O' z/ i5 T
使用
* S% I. y7 |$ t) w* F. U$ C3 P4 {
8 C# H5 K! S& ^( c3 Ewatch 'iptables -L -n -v | \grep<模拟攻击客户机的IP>'1 a3 B. t- ]' x9 a
查看模拟攻击客户机被 DROP 的数据包数。 |
|