一般来说,有两种形式的 DOS 攻击:
- OSI 模型的三、四层,即网络层攻击
- OSI 模型的七层,即应用层攻击
第一种类型的 DOS 攻击——网络层,发生于当大量的垃圾流量流向网页服务器时。当垃圾流量超过网络的处理能力时,网站就会宕机。
第二种类型的 DOS 攻击是在应用层,是利用合法的服务请求,而不是垃圾流量。当页面请求数量超过网页服务器能承受的容量时,即使是合法访问者也将无法使用该网站。
在没有硬件防御的情况下,使用apache的模块 mod_evasive ,可以缓解来自应用层的攻击。
下载mod_eva :https://github.com/jzdziarski/mod_evasive
编译到apache中:/usr/local/apache24/bin/apxs -i -a -c mod_evasive20.c
此时,模块被安装到了apache目录下的modules下。
编辑httpd.conf,增加如下内容:
<IfModule mod_evasive20.c>
#定义哈希表的大小,
DOSHashTableSize 3097
#间隔对同一页面(或URI)的请求数量的阈值。一旦超过该间隔的阈值,客户端的IP地址将被添加到黑名单(也就是每个页面的请求次数,当然这个请求次数是有定义的,由DOSPageInterval定义)
DOSPageCount 2
#间隔时间内对网站内任意页面的请求数,超过次数,则客户端被拉入黑名单,时间间隔由(DOSSiteInterval定义)
DOSSiteCount 50
#网页访问计数的间隔
DOSPageInterval 1
#网站访问计数的间隔
DOSSiteInterval 1
#放入黑名单中的时长
DOSBlockingPeriod 10
</ IfModule>
还有一些别的配置,可以参考此模块作者的github上的说明(地址见上方下载链接),这里简单说一下:
DOSEmailNotify 只要触发黑名单,则邮件通知对应的人员
DOSSystemCommand 只要触发黑名单,执行的系统指令
DOSLogDir 日志记录位置,需要此文件夹与apache相同的属组和属主
DOSWhitelist 127.0.0.1 白名单中的地址
安装完成后可以使用ab或者别的工具进行测试,这里就不再做介绍了 。