设为首页 收藏本站
查看: 808|回复: 0

[经验分享] centos下的Apache防DDOS模块mod_evasive的安装配置指南

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-3 13:45:58 | 显示全部楼层 |阅读模式
  今天服务器受到严重的DDOS攻击,导致远程控制几乎都无法进去,系统基本死机,从网络上找到关于APACHE的防DDOS工具,参考之后发现无法安装,转载过来后做了一些实验和修改。
下面给出使用了Apache的防模块mod_evasive,具体安装配置如下:
一、下载模块
--------需要提前安装apxs - Apache 扩展工具
yum  install httpd-devel
  ------进入自己的安装盘位置
cd /usr/local/src
  wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
tar xzvf mod_evasive_1.10.1.tar.gz
cd mod_evasive
  二、安装模块
1、对于Apache 1.x 请用下面的编译方法;
  apxs -iac mod_evasive.c
  2、对于Apache 2.x 可以用下面的办法;
apxs -cia mod_evasive20.c
  三、配置模块
编译过程会自动修改httpd.conf,加入加载信息,因此要把该文件备份下来
  在配置文件httpd.conf加入如下代码:
在Apache v1.x 版本中,要加入;
  
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10

  在Apache v2.x加入;
  
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10

  之后重启httpd。
相关参数说明:
DOSHashTableSize 3097:定义哈希表大小。
DOSPageCount 2:允许客户机访问同一页的间隔。
DOSSiteCount 50:允许客户机的最大并发连接。
DOSPageInterval 1:网页访问计数器间隔。
DOSSiteInterval 1:全站访问计数器间隔。
DOSBlockingPeriod 10:加入黑名单后拒绝访问时间。
四、对mod_evasive测试验证
可以使用apache的ab工具,也可以使用evasive解压目录中的test.pl脚本测试。
ab工具:ab -n 1000 -c 50 http://www..bz/
perl: perl test.pl
需要了解更多关于evasive模块的使用可以查看解压目录中的README文件。
  
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 10
DOSBlockingPeriod 600
  DOSHashTableSize — 这是占用内存的大小,如果服务器比较繁忙,这个数值要设定大一点。
DOSPageCount — 同一IP 在一个时段内可以存娶同一页面的次数,超过会被禁止。
DOSSiteCount — 同一IP 在一个网站内可以占用多少object,超过会禁止。
DOSPageInterval — DOSPageCount 内的时段设定。
DOSSiteInterval — DOSSiteCount 的时间设定,以秒为单位。
DOSBlockingPeriod — 当发现疑似攻击后,使用者会收到403 Forbidden,这是设定封锁的时间,以秒为单位。
  
--------------------------------------------------------------------
---------------------------------------------------------------------
  
    因apache的被ddos攻击和恶意刷新导致apache运行异常,占用资源过大,现在新发现一个很好的解决方法 。一些朋友的应用也遇到过类似的
  烦恼,基本上都通过安装mod_evasive模块得到了较好的解决。
    下面我就来以我在CentOS 5.4上安装基于Apache2.2.9的mod_evasive经过给大家分享一下经验,顺便进一步讲述一下mod_evasive的特性。
  mod_evasive通过对来访IP地址和访问URI建立内部动态哈希表来检测是否有攻击,如果有如下的行为将拒绝该IP的访问:
    1. 每秒对同一页面的请求数超过平时。
    2. 每秒同一个子进程有超过50次的并发请求。
    3. 临时被拒绝(在blacklist中)的时候还不断进行请求。
    mod_evasive可以非常方便的和防火墙、路由器等进行整合,进一步提高抗拒绝服务的能力。和别的防攻击工具一样,mod_evasive同样收到带
  宽、系统处理能力等因素的影响,所以要想应对大规模的攻击,最好的方式就是把mod_evasive和您的防火墙和路由器进行整合,而不是简单的安
  装成为独立的Apache模块。
  mod_evasive在apache2.2.9上的安装方法:
  一、使用源码安装:
    1、下载最新源码包mod_evasive_1.10.1.tar.gz
    # cd /usr/local/src
    # wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
    # tar -zxvf mod_evasive_1.10.1.tar.gz
    # cd mod_evasive
    # /usr/local/apache/bin/apxs -i -a -c mod_evasive20.c
    说明:动态编译apache, 这里编译mod_evasive20.c是应对2.X版本的apache,如果是1.x版本的apache则编译mod_evasive.c就行了
  最后出现
    #############################################################
    Libraries have been installed in:
    /usr/local/apache/modules
  If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool,
  and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following:
  - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution
  - add LIBDIR to the `LD_RUN_PATH' environment variable  during linking
    - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
    - have your system administrator add LIBDIR to `/etc/ld.so.conf'
  See any operating system documentation about shared libraries for  more information, such as the ld(1) and ld.so(8) manual
  pages.
    ----------------------------------------------------------------------
    chmod 755 /usr/local/apache/modules/mod_evasive20.so
    [activating module `evasive20' in /usr/local/apache/conf/httpd.conf]
    [iyunv@localhost mod_evasive]#
  ##############################################################
    表示已经编译写入了apache模块, 查看httpd.conf文件中已经自动添加了计算机
    LoadModule evasive20_module modules/mod_evasive20.so
  至此,完成了mod_evasive的安装,重启apache服务后,它就开始工作了,这个时候您如果不作任何别的设置,它也可以使用默认配置为您提
  供良好的防攻击能力,当然,您也可以自己进行一些参数的定制配置,添加如下参数:
  
    DOSHashTableSize 3097
    DOSPageCount 5
    DOSSiteCount 50
    DOSPageInterval 2
    DOSSiteInterval 2
    DOSBlockingPeriod 10
   
  参数简单说明:
    DOSHashTableSize 3097 记录和存放黑名单的哈西表大小,如果服务器访问量很大,可以加大该值
    DOSPageCount 5 同一个页面在同一时间内可以被统一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在
  DosPageInterval参数中设置。
    DOSSiteCount 50 同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。
    DOSPageInterval 2 设置DOSPageCount中时间长度标准,默认值为1。
    DOSSiteInterval 2 设置DOSSiteCount中时间长度标准。
  DOSBlockingPeriod 10 被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。
  其他可选参数:
    DOSEmailNotify  abc@qq.com 设置受到攻击时接收攻击信息提示的邮箱地址。
  DOSSystemCommand “su – someuser -c ‘/sbin/… %s …’” 受到攻击时Apache运行用户执行的系统命令
    DOSLogDir “/var/lock/mod_dosevasive” 攻击日志存放目录/var/lock/mod_dosevasive 一般就可以存放到/tmp目录

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-93761-1-1.html 上篇帖子: Linux下apache+phppgadmin+postgresql安装配置 下篇帖子: Django Apache mod_wsgi settings :)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表