$7.49 .com domain with free InstantPage Website Builder$1.99 Web Hosting   捷飞网络官方淘宝店   Godaddy 优惠码
返回列表 发帖
分享到:




[安全] 分享apache服务器防DDOS攻击

1、 mod_evasive 介绍;
! w/ {, Q( q5 G, k5 J2 s5 H; j
( i2 `  d% ~! L+ }" ?mod_evasive 是Apache(httpd)服务器的防DDOS的一个模块。对于WEB服务器来说,是目前比较好的一个防护DDOS攻击的扩展模块。虽然并不能完全防御 DDOS攻击,但在一定条件下,还是起到缓服Apache(httpd)服务器的压力。如果配合iptables、硬件防火墙等防火墙设备配合使用,可能有更好的效果。可惜LinuxSir.Org 并没有硬件防火墙,所以是否这种组合效果有更好的效果,我没办法验证。7 D! O* I  i: @7 b6 N# G8 ?8 r  G
9 F7 B* T6 Q+ K- S
mod_evasive 的官方地址: http://www.zdziarski.com/projects/mod_evasive& j4 f6 R/ n! M9 q/ n

" O* g2 g% ~& @- ^3 I' W; O; X& f, y; w. F' d3 ~6 f
2、 mod_evasive 的安装和配置;
3 x! m6 ~7 B' H' t; Z/ l
  j  P$ Z2 J7 |+ ~" Q) u, n1 s6 ^/ G5 k7 |, O) }
2.1 mod_evasive 的下载地址;. e0 L5 Q/ @5 w$ X; b( B+ J0 G( r; g

% P! t/ }. T0 ^! F. h4 H- dmod_evasive_1.10.1.tar.gz0 y7 R" b( |# d2 u" V
$ |8 s* s7 h* S) m7 ~

0 B: m% w. W! O) v. _4 B& k! y( _2.2 mod_evasive 的安装;; {% w( C- S) h

" _, s  ~1 g9 v( m& \8 {3 e安装 mod_evasive 之前,你要用安装Apache(httpd)服务器软件包,还要安装httpd-devel或 apache-dev。在Slackware 12.0中,安装httpd软件即可;9 ?0 X/ q' X0 F( h; B: E- `; @

7 _! H3 B4 d, o& |6 J/ H! }& @) a对于Apache 1.x 请用下面的编译方法;# S- d) {# z* r5 U) b! l7 l* J% u
/ p' M( d, \7 {8 P9 U' L2 M4 o
: h* `$ M6 o5 W: c7 g
#/usr/sbin/apxs -iac mod_evasive.c
* k( j2 D) Y+ c: f) u' n7 o  v! g" b0 v, Q
$ M" W2 b* c, G( v: N$ M

8 ~9 _; _; L: [对于Apache 2.x 可以用下面的办法;2 T3 g/ S, ]+ ]( @8 D- u

% ^& g: I" V& I) x2 E2 N
0 v6 \# \- E. p) W#tar zxvf mod_evasive_1.10.1.tar.gz & K2 N4 F! ]& z  R- l! X' @6 Q
#cd mod_evasive: M0 b5 V7 b- X) f
#/usr/sbin/apxs -i -a -c mod_evasive20.c$ O3 z4 x" s5 B9 M% A

  U/ e  [) R5 `# ^5 Y ) y- S% e) Q% G) O/ O
4 i  R  H2 _$ p& I* b
注:apxs 用于编译模块工具;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装Apache(httpd)的,你应该自己来指定路径;
5 t" [5 F' f9 u( |% t/ k) t- H6 L6 f4 T
我们然后修改/etc/ld.so.conf 文件,把编译出来的动态模块的所在位置指定在 ld.so.conf中;比如我用的是Aapche 2.x ,编译完成后,模块mod_evasive20.so 安装到了 /usr/lib/httpd/modules 目录中;那我们就要把 这个目录写入到ld.so.conf中。' V6 {* D  b/ a8 Z+ {& M: C

% V& `: a1 A. t) E2 x
& s; [# b/ K( `$ b; f8 E# n#echo "/usr/lib/httpd/modules" >> /etc/ld.so.conf! ?" `; Z! x/ M/ e0 p5 r- y" b
#ldconfig! e% H! _$ C. `0 q
4 x* ?, j5 ~& D

# E* A% Q& I1 A# f8 K2 ~2 X* K5 }( f3 U
注: 具体要与你的系统环境为准,不要照搬照抄,如果你对Linux不太熟的话;
+ C- v/ M6 t6 u5 J3 K9 v/ S
3 J% Q. c2 J8 d: Y8 ?4 ?: h9 v
- j  @' m; ^% m0 n$ t& b- c3 D' A) Q2.3 mod_evasive 的配置;
% I% T' n  `% F$ m5 b
+ s9 Q. h& l1 |8 I  L9 M2 i在编译安装完成后,会自动插入一行到Apache 配置文件中,对于Apache 2.x 版本中,应该在其配置文件中有类似下面的一行;; F# r0 ~, g$ Z! l/ b8 K0 N
, u% k0 A' m0 ~3 Q) s

" i) R2 S; n$ ZLoadModule evasive20_module   lib/httpd/modules/mod_evasive20.so! N; ], T% T1 {0 Y0 I/ [9 }

7 j6 C9 H) w8 r# S. L8 S9 g ( a0 N: M, m; d" o5 }1 R

) y; e- [5 J5 q: {* t5 G对于Apache 1.x来说,也应该差不多,大体只是路径不同罢了;
, e: l( P4 p. Q$ H) Y7 i
. W4 S  j: q; k/ ]5 S然后我们再修改 Apache 的配置文件,配置文件名为httpd.conf;
8 g1 }* d: ]3 x5 X5 M+ L0 w/ Z% H  z) T/ }; C  p
在Apache v1.x 版本中,要加入;
+ `2 h, D% r  S8 H1 |/ w& Y/ A* l- P& W! |' U* C* S

, ?$ G2 q6 J; E* Z, x7 E6 d5 J<IfModule mod_evasive.c>
- E. F6 p8 D) I" W    DOSHashTableSize    3097& v2 I) |# U; `" G
    DOSPageCount        2
7 b5 _8 S, k6 i) u    DOSSiteCount        50) `' Q. @/ Q8 {( Z9 G
    DOSPageInterval     1/ Z, A& a; n5 m* s
    DOSSiteInterval     17 B4 O% |: e7 D
    DOSBlockingPeriod   10: r! x+ C! V4 a0 ]
</IfModule>! [7 i& N& b4 I

# ~* I* K6 ~7 i6 u! E& H' m! d
% C& ], m1 y  |
# k! x. b; \9 {! Q$ X9 s3 g" s2 e/ ^( z在Apache v2.x加入;0 y( J2 E" ?  r

& ~' k) y. m; L4 \5 w! ]5 N
6 o& j0 U$ B4 c3 b) J4 O<IfModule mod_evasive20.c>+ m4 u/ G# a) t$ N9 D' \
    DOSHashTableSize    3097( R  F4 `) W% B- Y3 o
    DOSPageCount        2
/ i$ D" s& C( B! ~0 L: D    DOSSiteCount        50) y% H% S) s6 n2 z
    DOSPageInterval     1+ \) }/ |( b) p. D# `
    DOSSiteInterval     1( n! y8 n, A  }9 Z$ ]
    DOSBlockingPeriod   10$ p/ l7 o* T9 h
</IfModule>  l& I: a  s& U. q% F6 y% F
3 Z; E9 z) k- s1 g  Q2 O
+ K. L, [% p9 f" j* B

: \$ H9 h6 [6 U( c& f, s如果您不知道把这些插入到哪,用下面的办法做也是可以的;
6 s. v% V) G- |, y1 S9 j, y, s- Q; y; r! K) e7 G$ Y, T7 J) F7 ]
在/etc目录中创建一个文件,比如mod_evasive.conf;+ \3 V$ W. A6 ~  c

6 ~. o5 e: }5 G* B$ I8 I: H ' m( B' r. B* Z4 F
#touch /etc/mod_evasive.conf/ P2 |" L" g; e8 M1 f
8 c/ O6 f, B% c& o; S
5 W2 L2 k+ K! M; R6 o; w) |1 K

. m0 N0 o! F* r: r  q( z然后把根据自己的Apache版本来加入相应的内容;1 F9 e9 ^, G2 m
" T- f2 l. W: s
接着我们再修改 httpd.conf ,在最后一行加入& G( V/ o6 F/ L# h8 b( g

* D1 e% I) W6 c& A/ V
* R/ C. }( j# m; J9 ^Include /etc/mod_evasive.conf* I7 Z+ ^$ `4 h

! f. q2 B5 T5 Q( b % n! T: L8 ~$ U

8 f+ ]# I7 @- k) p* ]- g修改完成后,我们要重启Apache服务器;
/ ]2 I1 C# I# ^# r  H! i& i* P- y/ f  U6 `
比如在Slackware 12.0中,Apache 2.x的重启,我们要用到* a- a3 X$ @" C4 c9 k

) u0 \/ |9 R% ], G: O
8 Z! r4 O  j! u#/etc/rc.d/rc.httpd restart
' B7 Y( ^* L. c/ D
8 s  l) g/ P# Z& s9 o$ [; ?# b , s0 E2 \# l3 `3 o2 Y

8 B! t$ N6 d: J0 W( e0 W在Redhat、Fededora、Debian、Ubuntu、CentOS中的Apache,可以用;" S! H% c7 v1 v( ]1 ^
7 y$ f! N* Z( R0 ]* u  M

+ \3 L. z2 N4 o#/etc/init.d/httpd restart% Z& p% P8 c$ {3 X

% Z6 w9 [6 v2 c+ Q5 v#/etc/init.d/apache restart. i- F7 r$ m- t/ H
5 @) p! f0 B- D
, |% ]' d) f3 d6 G

* ]- E; f# A4 B( w! I: U, n' n) K大体上差不多是这样的……
, ^1 r3 k# L$ {( [8 }: X9 c
. _; e0 {& h# Y( u; ^
+ d) Q, `0 N! u9 z/ |7 @2.4 对mod_evasive测试验证 ;
# G4 p4 d5 ~: v# }4 ]
7 Y- G1 }/ o, P2 z防DDOS的模块做好后,我们可以要验证,可以用Apache 自带的ab工具,系统默认安装在/usr/sbin目录中;比如;
- U/ y6 _( {& y) l2 i8 |: x2 a
, L* k: M/ E6 h+ n
: {$ Y3 `# Y( K  J& S# b, y0 c! j#/usr/sbin/ab -n 1000 -c 50 http://www.google.com:80/
' Q: o* M/ l# L4 n. V+ J8 u
0 |5 ?1 l; p: Q6 d( b$ |) D# V
2 j9 T0 h5 @* v5 L6 H1 ?9 [, @8 p
% L! z8 s; |! S" E& ^- b注:上面的例子的意思是,如果您的服务器是google的WEB服务器,我们要发送数据请求包,总共1000个,每次并发50个;  ^8 {0 P9 ^7 F* e0 V: `) ~

$ C! u8 O: k  N/ i4 X. m另外一个测试工具就是mod_evasive的解压包的目录中,有个test.pl ,你可以修改IP地址,然后用! x6 n) a* Q9 C4 c, O* Y
$ }- d6 i7 y' m! ~2 o# [/ [
5 X, b! _' b+ w3 o( _4 r  k: e
#perl test.pl4 e4 F5 `7 T2 f  u. p% H, p

4 }& m7 ?* z6 w* |+ \- `" U. o % v. c  O- @1 P+ l/ Z# [  Y  \9 C! N* F

' V/ e0 G/ e/ n/ R是不是有效果,请根据 ab工具或 测试脚本出来的结果来查看;
7 Q) P( s: F: y8 w; Q: z* m5 A
7 Z- H8 T4 t! A6 u$ h# V! x* T. }因为我们编译mod_evasive时,用的是默认配置,所以日志被存放在/tmp目录中。如果有DDOS攻击,会在/tmp产生日志。日志的文件是以 dos-开头的;
$ m/ S+ x+ w( [- B% K: v
4 d1 _4 p) P0 H5 y! d
- X/ {: d; \6 N* m7 o) F3、mod_evasive 的高级配置;
; q  ^9 z$ G: Y% ~- {3 Y
; V  o) X7 E- [6 }$ G1 j' h/ T5 r如果想更改一些适合自己的参数,有些必要的参数,并不是通过配置文件修改就一下起作用的,我们要修改源码包中的 mod_evasive.c(Apache 1.x用之) 或 mod_evasive20.c (Apache 2.x用之);- e& a5 ~- B- m. F% [7 G9 U7 x
0 T8 g( A4 O4 ~/ Y: x
8 V5 m6 `% k5 X9 B, G4 ^
#define DEFAULT_HASH_TBL_SIZE   3097ul  // Default hash table size
( S) z# H. `0 u0 _6 i" o% Q#define DEFAULT_PAGE_COUNT      2       // Default maximum page hit count per interval
. g1 G4 s% z7 K$ P4 C* A" I#define DEFAULT_SITE_COUNT      50      // Default maximum site hit count per interval
9 o& e, Y' H4 x: s- N#define DEFAULT_PAGE_INTERVAL   1       // Default 1 Second page interval3 w6 W/ C9 q; [2 c4 ?
#define DEFAULT_SITE_INTERVAL   1       // Default 1 Second site interval
  n( `/ b: T$ m: o/ Q: m1 h5 \#define DEFAULT_BLOCKING_PERIOD 10      // Default for Detected IPs; blocked for 10 seconds' ?3 V# k- ^' o: Q
#define DEFAULT_LOG_DIR         "/tmp"  // Default temp directory
; M% L# ^! X+ ?, p3 u! ?! x" C8 U  B  e- q; G% ]
9 d: P) |3 g$ v  ?- x5 J3 t
$ n2 b* z+ M) u& {  i
比如我们改改其中的数字,根据英文很容易理解。比如修改日志存放目录,就把/tmp改成别的目录。如果您不知道放在哪好,还是用默认的吧;
' l5 n0 F1 j4 O9 q. [+ H
1 ^% o+ M: u+ t+ q! @如果您在这里更改了参数,不要忘记修改Apache 配置文件中关于mod_evasive 的参数;  _9 ~9 ~; h6 [; ]; y" R
7 Z/ K/ G, H3 b8 M% `' ?: f
如果您想加入一些其它的参数,请查阅源码包中的README,里面有详细说明,大多来说没太大的必要……
& p, z5 c+ p. w0 a. j$ m* ~' o( j( z8 Y) U' u
这个文件相当重要,如果您想更改某些设置,就要修改这个文件…… . s7 [5 y# }- d2 |2 }- x+ }# ?4 ?

( l* i/ O" v4 B' D. X! Y; T1 m: o# ~& o' b" s
4、关于本文;
1 l% c- S* j9 F1 g; b
; H% ^6 ]0 h8 v; _9 _3 f! s& V' U5 amod_evasive 还是有点用的,安装也不费力气。如果你需要的时候,会想到这个模块的 …… mod_evasive 是否有更高级的用法,也不是在这篇文章里能说的清楚的。如果不懂怎么办?请查看源码包中的README。
, P  X; K' j" K6 D3 Y
8 J* _% ]2 H9 w- H9 N* T本文权当做软件说明 ……
' O; t$ _9 L9 }
' w: w! r; k; C- u) rhttp://www.im286.com/thread-5125792-1-1.html
( Z# b! d' c' C4 v3 ?
2 J1 G1 c, V0 japache防DDOS模块mod_evasive的安装配置和使用* k! J  J. Q4 g0 L% Q1 _: s  `
前些天,朋友的网站访问很慢,查服务器的连接数也不多,资源占用也少.怀疑有攻击,便想装上mod_evasive试试,试后一切正常,很爽) |8 M3 Y. n5 c+ F  D

8 I" A5 J2 H/ p安装配置如下& v* R0 T! [# ^) m% G% k
wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz" f7 ]2 \( w; ^6 t0 p$ Q
tar zxvf mod_evasive_1.10.1.tar.gz6 s; @# ~8 G8 d9 {6 q
cd mod_evasive6 J' P* B; Y( E: A/ u0 ]
/www/wdlinux/apache/bin/apxs -i -a -c mod_evasive20.c
8 V4 w7 C6 k) D0 |, w+ Rvi /www/wdlinux/apache/conf/httpd.conf+ B- c$ {. p  b0 h
<IfModule mod_evasive20.c>
/ D& a) W$ a: e% n! |    DOSHashTableSize    3097- G* |! G; {0 j6 @& j( q0 p5 c/ q- P
    DOSPageCount        5
6 F  H% U2 K9 v% ^    DOSSiteCount        50
- u. ^9 H$ G  n    DOSPageInterval     1
( q( K) E& c0 l+ A    DOSSiteInterval     1" u( \( Y* s* R3 E9 c
    DOSBlockingPeriod   360* p' i' u! _8 U. \# j+ k: p8 e
</IfModule>
) a* L( x5 Z* u" J8 s" A# Kmod_evasive 介绍
1 G, R6 s* t. ^# P5 l' S. _mod_evasive 是Apache(httpd)服务器的防DDOS的一个模块。对于WEB服务器来说,是目前比较好的一个防护DDOS攻击的扩展模块。虽然并不能完全防御 DDOS攻击,但在一定条件下,还是起到缓服Apache(httpd)服务器的压力。如配合iptables、硬件防火墙等防火墙设备配合使用,可能有更好的效果。& q* l3 |* Y" l& J: s1 V
; W( F' J! c0 y  y9 I% r
mod_evasive 的官方地址: http://www.zdziarski.com; M# o8 T$ |6 @0 X* f
# G2 c& |) f5 N! _4 e. w2 O1 s( ]
/ o/ k, v9 A1 q$ W
相关参数
2 o8 g0 t9 X( v$ e/ \DOSHashTableSize 3097:定义哈希表大小。   6 q1 b( j( P  R
DOSSiteCount 50:允许客户机的最大并发连接。   
# V$ y/ R" w& ]% wDOSPageCount 2:允许客户机访问同一页的间隔。   4 A" h1 d; c. ?4 G1 B7 j
DOSPageInterval 1:网页访问计数器间隔。   
) Q# r1 h0 r& u. u5 E9 D0 B5 aDOSSiteInterval 1:全站访问计数器间隔。   5 \3 {! h0 P9 e/ D/ b3 O  A
DOSSiteInterval 60:加入黑名单后拒绝访问时间。   
8 Y- I6 j) Q; e/ F& ^2 I# {+ `DOSEmailNotify xxxx@gmail.com:有IP加入黑名单后通知管理员。   
/ y# b1 q) Z: j; w0 H2 ^: LDOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP":IP加入黑名单后执行的系统命令。   
; ?4 p" J5 C/ _# z" d; [6 ?: CDOSLogDir "/tmp":锁定机制临时目录。   " `9 R( Q* ]. a2 v
DOSWhiteList 127.0.0.1:防范白名单,不阻止白名单IP。
: k+ S3 Q3 m- z' O$ _欢迎转载,但请保留此信息6 _1 T9 k3 o9 j- S8 t
[我的Linux,让Linux更易用] CentOS定制版,集成lamp,lnmp自动安装,集群负载均衡LVS,智能DNS/CDN,性能优化
0 R5 C$ p# A4 r. d7 d, x3 l本文连接:http://www.wdlinux.cn/mod_evasive

美国VPS、域名代购:http://tu8l.taobao.com

返回列表
Namecheap
Namecheap.com - Cheap domain name registration, renewal and transfers - Free SSL Certificates - Web Hosting
互联网安全