mod_cband           管理apache的带宽和流量
mod_limitipconn     控制下载速度
mod_bw           控制apache并发连接数
mod_evasive        防ddos模块

首先查看已经加载的模块
/opt/apache/bin/apachectl  -l
Compiled in modules:
  core.c
  mod_authn_file.c
  mod_authn_default.c
  mod_authz_host.c
  mod_authz_groupfile.c
  mod_authz_user.c
  mod_authz_default.c
  mod_auth_basic.c
  mod_cache.c
  mod_disk_cache.c
  mod_mem_cache.c
  mod_log_config.c
  mod_env.c
  mod_expires.c
  mod_version.c
  http_core.c
  mod_mime.c
  mod_status.c
  mod_autoindex.c
  mod_asis.c
  mod_cgi.c

  .................
 
1、mod_cband
下载地址:
http://sourceforge.net/projects/cband/files/mod-cband/
http://nchc.dl.sourceforge.net/project/cband/mod-cband/mod-cband-0.9.6.1/mod-cband-0.9.6.1.tgz
#cd mod-cband-0.9.6.1
#./configure  --with-apxs=/opt/apache/bin/apxs
#make
#make install
查看apache主配置已经加入mod_cband.so
#grep cband /opt/apache/conf/httpd.conf
LoadModule cband_module       modules/mod_cband.so
#chown apache.apache  /opt/apache/modules/mod_cband.so
#ls -ld /opt/apache/modules/mod_cband.so
-rwxr-xr-x 1 apache apache 190265 Jan 11 09:32 /opt/apache/modules/mod_cband.so

虚拟主机加入如下2行:
CBandSpeed 2048 300 100
CBandRemoteSpeed 40kb/s 15 5

CBandSpeed限定总的最大链接速度为2048kb,最多并发处理300个请求和100个链接
CBandRemoteSpeed限定一个用户最多能有40kb的链接速度,最多并发15个请求和5个链接
重新加载apache主配置文件:
#/opt/apache/bin/apachectl  -k graceful

2、mod_limitipconn
下载地址:
http://dominia.org/djao/limit/
http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2
#tar jxvf mod_limitipconn-0.24.tar.bz2
#cd mod_limitipconn-0.24
#/opt/apache/bin/apxs -c -i -a mod_limitipconn.c
查看apache配置已经加入mod_limitipconn.so
#grep limitipconn /opt/apache/conf/httpd.conf
LoadModule limitipconn_module modules/mod_limitipconn.so
#chown apache.apache  /opt/apache/modules/mod_limitipconn.so

主配置添加ExtendedStatus On
虚拟主机添加如下:
<IfModule mod_limitipconn.c>
    <Location />
        MaxConnPerIP 5 #限制的线程数
        NoIPLimit index.htm #对此文件不做限制
        NoIPLimit p_w_picpath/* #对图片文件不限制
    </Location>
    <Location /media>
        MaxConnPerIP 2 #对于audio音频文件每IP最多保持2个连接
        OnlyIPLimit audio/mpeg video
    </Location>
</IfModule>
重新加载apache配置文件:
#/opt/apache/bin/apachectl  -k graceful

参考文档:
http://blog.sina.com.cn/s/blog_4fc2b1b80100m8us.html
http://zhumeng8337797.blog.163.com/blog/static/100768914201135115238429/

3、mod_bw
下载地址:
http://ivn.cl/2010/01/06/downloads-for-bandwidth-mod/
http://legacy.ivn.cl/files/source/mod_bw-0.92.tgz
安装mod_bw
#mkdir mod_bw-0.92
#tar zxvf mod_bw-0.92.tgz  -C mod_bw-0.92
#cd  mod_bw-0.92
#/opt/apache/bin/apxs -c -i -a mod_bw.c
查看apache主配置已经加入mod_bw.so
#grep mod_bw /opt/apache/conf/httpd.conf
LoadModule bw_module          modules/mod_bw.so
#chown apache.apache  /opt/apache/modules/mod_bw.so

#/opt/apache/bin/apxs -c -i -a mod_bw.c
虚拟主机加入如下几行:
BandWidthModule On     #预设是关闭,开启后会处理每个请求
ForceBandWidthModule On #这个没加上之前试了几次发现不起作用 
MaxConnection 10.100.10.0/24 20 #针对这个网段可以有20个线程 
MaxConnection all 50  #限制每个IP最大线程
Bandwidth all 102400 #所有的连接限速100K/s 
MinBandwidth all -1  #不限制最小速度
LargeFileLimit * 10240 200000 #文件大于10M的,下载速度控制在300K/s
LargeFileLimit .avi 1 30000  #avi文件控制在30K/s
LargeFileLimit .mpg 1 30000   #mpg文件控制在30K/s
重新加载apache配置文件:
#/opt/apache/bin/apachectl  -k graceful

参考文档:
http://blog.sina.com.cn/s/blog_4fc2b1b80100m8us.html
http://zhumeng8337797.blog.163.com/blog/static/100768914201135115238429/

4、mod_evasive
下载地址:
http://fossies.org/unix/www/apache_httpd_modules/mod_evasive_1.10.1.tar.gz
http://fossies.org/unix/www/apache_httpd_modules/
#tar -zxvf mod_evasive_1.10.1.tar.gz
#cd mod_evasive
#/opt/apache/bin/apxs -i -a -c mod_evasive20.c

#grep evasive /opt/apache/conf/httpd.conf
LoadModule evasive20_module   modules/mod_evasive20.so
#chown apache.apache  /opt/apache/modules/mod_evasive20.so

apache虚拟主机加入:
<IfModule mod_evasive20.c>
DOSHashTableSize    3097
DOSPageCount        3
DOSSiteCount        50
DOSPageInterval     2
DOSSiteInterval     2
DOSBlockingPeriod   10
DOSEmailNotify  cecnck@gmail.com
#    DOSSystemCommand    “su – someuser -c ‘/sbin/… %s …’”
DOSLogDir       “/var/log/mod_evasive”
</IfModule>
附:参数说明:
DOSHashTableSize 3097 记录和存放黑名单的哈西表大小,如果服务器访问量很大,可以加大该值
DOSPageCount 3 同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为***,同一时间的数值可以在DosPageInterval参数中设置。
DOSSiteCount 50 同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
DOSPageInterval 2 设置DOSPageCount中时间长度标准,默认值为1。
DOSSiteInterval 2 设置DOSSiteCount中时间长度标准。
DOSBlockingPeriod 10 被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。
其他可选参数:
DOSEmailNotify cecnck@gmail.com 设置受到***时接收***信息提示的邮箱地址。
#  DOSSystemCommand “su – someuser -c ‘/sbin/… %s …’” 受到***时Apache运行用户执行的系统命令
DOSLogDir “/var/log/mod_dosevasive” ***日志存放目录,BSD上默认是 /tmp
重新加载apache配置文件:
#/opt/apache/bin/apachectl  -k graceful