• Apache设置防DDOS模块mod_evasive


    mod_evasive 是Apache(httpd)服务器的防DDOS的一个模块。对于WEB服务器来说,是目前比较好的一个防护DDOS攻击的扩展模块。虽然并不能完全防御 DDOS攻击,但在一定条件下,还是起到缓服Apache(httpd)服务器的压力。如果配合iptables、硬件防火墙等防火墙设备配合使用,可能 有更好的效果。

    u=147261645,2271183560&fm=21&gp=0

    最近准备配置iptables限制每个IP的并发数。但配置iptables才发现,由于Linux内核版本比较低,iptables不支持 connlimit模块,于是想到把conlimit模块编译到内核中,无奈openvz vps不支持编译内核。所以使用了Apache的防DDOS模 块mod_evasive,具体安装配置如下:

    一、下载安装模块

    二、配置模块加入到httpd.conf中

    在Apache v1.x 版本中,要加入;

    在Apache v2.x加入;

    相关参数说明:

     
    DOSHashTableSize 3097
    #记录和存放黑名单表大小,如果服务器访问量很大,可以加大该值.
    DOSPageCount 5        
    #同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置.
    DOSSiteCount 100
    #同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
    DOSPageInterval 2
    #设置DOSPageCount中时间长度标准,默认值为1。
    DOSSiteInterval 2
    设置DOSSiteCount中时间长度标准,默认值为1。
    DOSBlockingPeriod 3600
    #被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。
    DOSEmailNotify **.@qq.com
    #设置受到攻击时接收攻击信息提示的邮箱地址。有IP加入黑名单后通知管理员。
    DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP":
    #IP加入黑名单后执行的系统命令。
     DOSLogDir "/usr/local/webserver/apache2/logs/mod_evasive"#手动创建目录mod_evasive,攻击日志存放目录,注意这个目录的权限,是运行apache程序的用户。锁定机制临时目录
    #白名单   
    DOSWhiteList 127.0.0.1  
    DOSWhiteList 192.168.12.*

    服务器遭受到DDOS攻击,可以说防不胜防,但是作为apache服务器,可以安装一些模块一定程度上减缓DDOS的攻击。
    比如第3方模块mod_evasive就是一个预防 Apache 遭受 DDos 攻击的模组,可以防止同一个 IP 对相同 URI 发出的大量请求,可设定的选项有:
    – 限制同一个 IP 在一定秒数内请求一个页面或档案的次数。
    – 限制同一个 IP 一秒内只可发出 50 个请求。
    – 设定被禁止的 IP 封锁时间。

    1.首先下载mod_evasive_1.10.1.tar.gz并解压:
    # tar zxvf mod_evasive_1.10.1.tar.gz
    我们先不进行安装,解压出来有一个文件test.pl,是用Perl语言写的,是测试服务器用的, 我们先来测试一下服务器(在没有安装减缓DDOS的情况)
    # cd mod_evasive
    # chmod 755 test.pl
    # ./test.pl
    HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    ......都可以正常访问,没有任何防御DDOS攻击

    2.安装 (我这里使用apache是 2.2.8的版本)
    # /usr/local/apache2/bin/apxs -i -a -c mod_evasive20.c (apxs用于编译模块工具,注意你自己服务器apache的安装目录和位置,路径可能和我的不一样)
    注:没有apxs的话,请安装:httpd-devel或apache-dev
    模块自动编译安装进/usr/local/apache2/modules,且自动在httpd.conf里添加LoadModule evasive20_module modules/mod_evasive20.so

    3.配置
    # vi /etc/httpd.conf
    <IfModule mod_evasive20.c>
    DOSHashTableSize 3097 #记录和存放黑名单表大小,如果服务器访问量很大,可以加大该值.
    DOSPageCount 5 #同一个页面在同一时间内可以被同一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置.
    DOSPageInterval 2 #设置DOSPageCount中时间长度标准,默认值为1。
    DOSSiteCount 100 #同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
    DOSSiteInterval 2 #设置DOSSiteCount中时间长度标准,默认值为1。
    DOSBlockingPeriod 3600 #被封时间间隔(秒),这中间会收到 403 (Forbidden) 的返回。
    DOSEmailNotify 17rumen@17rumen.com #设置受到攻击时接收攻击信息提示的邮箱地址。
    DOSLogDir "/var/log/mod_evasive" #攻击日志存放目录,注意这个目录的权限,是运行apache程序的用户。
    # 进入信任ip名单的ip它们将不会受到阻止,其功能主要是用于保护软件,scripts,本地搜索,或其它的自动工具对服务器进行大量的资源请求时不会被 阻止。请确认而不是用在添加客户或其它什么类别的人员,因为这将给本模块进行正常工作带来阻碍。信任ip名单应在apache配置文件中添加如下格式的字 段(可以是ip段)
    DOSWhitelist 127.0.0.1
    DOSWhitelist 127.0.0.*
    #ip地址后三段可以使用通配符,并且可以各格式复用
    </IfModule>

    新建目录来存放上在指定的日志文件:
    mkdir /var/log/mod_evasive
    重新启动apache2。
    再次测试./test.pl
    HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    HTTP/1.1 403 Forbidden
    HTTP/1.1 403 Forbidden
    HTTP/1.1 403 Forbidden
    HTTP/1.1 403 Forbidden
    可以看到已经有一些访问出现 403 Forbidden, 说明配置成功。

    一定情况下抵挡防御DDOS的攻击, 当然如果是服务器机器承受不了,或者带宽不够, DDOS还是比较难防的,不过我们抵挡一部分算一部分。呵呵

    ---------------------------------------

    WINDOWS下mod_evasive安装
    目前还没有官方的WINDOWS版,这里是一个高手做了一些修改编译的版本。它禁用了这些功能:邮件通知、日志记录到独立文件的功能。
    编译环境: windows xp ,vc++ 8 , apache 2.2.3 (环境设置为了 windows 2003 sp1)

    LoadModule dosevasive22_module modules/mod_dosevasive22.dll
    <ifmodule dosevasive22_module>
    DOSHashTableSize 3097
    DOSPageCount 2
    DOSSiteCount 50
    DOSPageInterval 1
    DOSSiteInterval 1
    DOSBlockingPeriod 10
    </ifmodule>

       
  • 相关阅读:
    获取ocx运行路径的另一种方法
    使用D3D渲染YUV视频数据
    C++(MFC)中WebBrowser去除3D边框的方法(实现IDocHostUIHandler接口)
    ActiveX控件的安全初始化和脚本操作 和 数字签名SIGN
    解决Eclipse中的卡死现象
    Http请求头和响应头
    HTTP请求头与响应头
    centos7 Mariadb5.5升级到Mariadb10.2
    window下利用navicat访问Linux下的mariadb数据库
    在Linux上安装及配置MariaDB
  • 原文地址:https://www.cnblogs.com/duanxz/p/4123065.html
Copyright © 2020-2023  润新知