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

[经验分享] Apache(httpd)服务器防DDOS模块mod_evasive

[复制链接]

尚未签到

发表于 2018-11-22 06:59:46 | 显示全部楼层 |阅读模式
  关于Apache (httpd)服务器防DDOS模块mod_evasive
  测试表明:
  当mod_evasive在正常封掉某个ip时候,apache日志仍然会有访问记录;
  mod_evasive 的官方地址: http://www.zdziarski.com/
  projects
  mod_evasive
  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/webserver/apache2/bin/apxs -i -a -c mod_evasive20.c
  最后出现:
  Libraries have been installed in:
  /usr/local/webserver/apache2//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/webserver/apache2//modules/mod_evasive20.so
  [activating module `evasive20' in /usr/local/webserver/apache2//conf/httpd.conf]
  查看httpd.conf
  vim /usr/local/webserver/apache2/conf/httpd.conf
  自动添加了
  LoadModule evasive20_module   modules/mod_evasive20.so
  然后我们再修改 Apache 的配置文件,配置文件名为httpd.conf;
  修改httpd.conf
  LoadModule rpaf_module modules/mod_rpaf-2.0.so
  LoadModule evasive20_module   modules/mod_evasive20.so
  ....
  
  RPAFenable On
  RPAFproxy_ips 127.0.0.1 192.168.12.201 192.168.12.202 192.168.12.203
  RPAFsethostname On
  RPAFheader X-Forwarded-For
  
  
  DOSHashTableSize    3097
  DOSPageCount        10
  DOSSiteCount        100
  DOSPageInterval     2
  DOSSiteInterval     2
  DOSBlockingPeriod   360
  DOSEmailNotify ***@qq.com
  DOSLogDir "/usr/local/webserver/apache2/logs/mod_evasive"
  DOSWhiteList 192.168.12.*
  
  
  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.*
  
  如果您不知道把这些插入到哪,用下面的办法做也是可以的;
  在/etc目录中创建一个文件,比如mod_evasive.conf;
  #touch /etc/mod_evasive.conf
  然后把根据自己的Apache版本来加入相应的内容;
  接着我们再修改 httpd.conf ,在最后一行加入
  Include /etc/mod_evasive.conf
  修改完成后,我们要重启Apache服务器;
  service apachectl restart
  --------------------------------对mod_evasive测试验证 ;
  1 防DDOS的模块做好后,我们可以要验证,可以用Apache 自带的ab工具,系统默认安装在/usr/sbin目录中;比如;
  /usr/local/webserver/apache2/bin/ab -n 1000 -c 50 http://****
  注:上面的例子的意思是,如果您的服务器是google的WEB服务器,我们要发送数据请求包,总共1000个,每次并发50个;
  2 另外一个测试工具就是mod_evasive的解压包的目录中test.pl, 修改test.pl IP地址
  chmod 755 test.pl
  ./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 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
  HTTP/1.1 403 Forbidden
  HTTP/1.1 403 Forbidden
  HTTP/1.1 403 Forbidden
  HTTP/1.1 403 Forbidden
  测试结果
  这个时候,你可以到你的/usr/local/webserver/apache2/logs/mod_evasive目录下面发现有日志文件
  类似文件:dos-192.168.12.201 ,192.168.12.201 表示记录了***的ip
  邮件内容:
  To: ***@qq.com
  Subject: HTTP BLACKLIST 192.168.12.202
  mod_evasive HTTP Blacklisted 192.168.12.202
  ================为apache安装rpaf模块,该模块用于apache做后端时获取访客真实的IP
  wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
  为apache安装rpaf模块,该模块用于apache做后端时获取访客真实的IP.
  1.使用apxs安装模块.这里要使用此前apache编译安装后的apxs
  cd /tmp
  tar -zxf mod_rpaf-0.6.tar.gz
  cd mod_rpaf-0.6
  /usr/local/webserver/apache2/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
  2.编辑/usr/local/apache/conf/httpd.conf,添加模块参数,查找LoadModule php5_module modules/libphp5.so,在下方添加:
  LoadModule rpaf_module modules/mod_rpaf-2.0.so
  
  RPAFenable On
  RPAFproxy_ips 127.0.0.1 192.168.12.201 192.168.12.202 192.168.12.203
  RPAFsethostname On
  RPAFheader X-Forwarded-For
  
  此区块应该在之上
  上面出现的请修改为你本机所监听web服务的ip.
  # 填写Nginx所在的内网IP。
  多个IP用空格空开.
  =====================================================================================
  mod_evasive  的前身就是mod_dosevasive
  下载mod_evasive
  http://www.nuclearelephant.com/projects/mod_evasive
  # tar zxvf  mod_evasive_1.10.1.tar.gz
  # cd  mod_evasive_1.10.1
  # /usr/local/apache/bin/apxs -i -a -c mod_evasive20.c
  打开 httpd.conf文件
  查看是否有
  LoadModule evasive20_module   modules/mod_evasive20.so
  如没有则加上去
  并加入
  
  DOSHashTableSize    3097
  DOSPageCount        2
  DOSSiteCount        50
  DOSPageInterval     1
  DOSSiteInterval     1
  DOSBlockingPeriod   10
  
  ------------------------------------------------------------------------------------------------
  ispcp 添加mod_evasive apache 防DDOS***
  mod_evasive 是Apache(httpd)服务器的防DDOS的一个模块。对于WEB服务器来说,是目前比较好的一个防护DDOS***的扩展模块。虽然并不能完全防御 DDOS***,但在一定条件下,还是起到缓服Apache(httpd)服务器的压力。如果配合iptables、硬件防火墙等防火墙设备配合使用,可能 有更好的效果。可惜LinuxSir.Org 并没有硬件防火墙,所以是否这种组合效果有更好的效果,我没办法验证。
  mod_evasive 的官方地址: http://www.zdziarski.com/projects/mod_evasive
  2、 mod_evasive 的安装和配置;
  2.1 mod_evasive 的下载地址;
  mod_evasive_1.10.1.tar.gz
  2.2 mod_evasive 的安装;
  安装 mod_evasive 之前,你要用安装Apache(httpd)服务器软件包,还要安装httpd-devel或 apache-dev。在Slackware 12.0中,安装httpd软件即可;
  对于Apache 1.x 请用下面的编译方法;
  #/usr/sbin/apxs -iac mod_evasive.c
  对于Apache 2.x 可以用下面的办法;
  #tar zxvf mod_evasive_1.10.1.tar.gz
  #cd mod_evasive
  #/usr/sbin/apxs -i -a -c mod_evasive20.c
  注:apxs 用于编译模块工具;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装Apache(httpd)的,你应该自己来指定路径;
  我们然后修改/etc/ld.so.conf 文件,把编译出来的动态模块的所在位置指定在 ld.so.conf中;比如我用的是Aapche 2.x ,编译完成后,模块mod_evasive20.so 安装到了 /usr/lib/httpd/modules 目录中;那我们就要把 这个目录写入到ld.so.conf中。
  #echo "/usr/lib/httpd/modules" >> /etc/ld.so.conf
  #ldconfig
  注: 具体要与你的系统环境为准,不要照搬照抄,如果你对Linux不太熟的话;
  2.3 mod_evasive 的配置;
  在编译安装完成后,会自动插入一行到Apache 配置文件中,对于Apache 2.x 版本中,应该在其配置文件中有类似下面的一行;
  LoadModule evasive20_module   lib/httpd/modules/mod_evasive20.so
  对于Apache 1.x来说,也应该差不多,大体只是路径不同罢了;
  然后我们再修改 Apache 的配置文件,配置文件名为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
  
  如果您不知道把这些插入到哪,用下面的办法做也是可以的;
  在/etc目录中创建一个文件,比如mod_evasive.conf;
  #touch /etc/mod_evasive.conf
  然后把根据自己的Apache版本来加入相应的内容;
  接着我们再修改 httpd.conf ,在最后一行加入
  Include /etc/mod_evasive.conf
  修改完成后,我们要重启Apache服务器;
  比如在Slackware 12.0中,Apache 2.x的重启,我们要用到
  #/etc/rc.d/rc.httpd restart
  在Redhat、Fededora、Debian、Ubuntu、CentOS中的Apache,可以用;
  #/etc/init.d/httpd restart
  或
  #/etc/init.d/apache restart
  大体上差不多是这样的……
  2.4 对mod_evasive测试验证 ;
  防DDOS的模块做好后,我们可以要验证,可以用Apache 自带的ab工具,系统默认安装在/usr/sbin目录中;比如;
  #/usr/sbin/ab -n 1000 -c 50 http://www.google.com:80/
  注:上面的例子的意思是,如果您的服务器是google的WEB服务器,我们要发送数据请求包,总共1000个,每次并发50个;
  另外一个测试工具就是mod_evasive的解压包的目录中,有个test.pl ,你可以修改IP地址,然后用
  #perl test.pl
  是不是有效果,请根据 ab工具或 测试脚本出来的结果来查看;
  因为我们编译mod_evasive时,用的是默认配置,所以日志被存放在/tmp目录中。如果有DDOS***,会在/tmp产生日志。日志的文件是以 dos-开头的;
  3、mod_evasive 的高级配置;
  如果想更改一些适合自己的参数,有些必要的参数,并不是通过配置文件修改就一下起作用的,我们要修改源码包中的 mod_evasive.c(Apache 1.x用之) 或 mod_evasive20.c (Apache 2.x用之);

  #define DEFAULT_HASH_TBL_SIZE   3097ul  // Default hash table>  #define DEFAULT_PAGE_COUNT      2       // Default maximum page hit count per interval
  #define DEFAULT_SITE_COUNT      50      // Default maximum site hit count per interval
  #define DEFAULT_PAGE_INTERVAL   1       // Default 1 Second page interval
  #define DEFAULT_SITE_INTERVAL   1       // Default 1 Second site interval
  #define DEFAULT_BLOCKING_PERIOD 10      // Default for Detected IPs; blocked for 10 seconds
  #define DEFAULT_LOG_DIR         "/tmp"  // Default temp directory
  比如我们改改其中的数字,根据英文很容易理解。比如修改日志存放目录,就把/tmp改成别的目录。如果您不知道放在哪好,还是用默认的吧;
  如果您在这里更改了参数,不要忘记修改Apache 配置文件中关于mod_evasive 的参数;
  如果您想加入一些其它的参数,请查阅源码包中的README,里面有详细说明,大多来说没太大的必要……
  这个文件相当重要,如果您想更改某些设置,就要修改这个文件……


运维网声明 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-637923-1-1.html 上篇帖子: apache集成subversion 下篇帖子: 烂泥:apache虚拟主机的学习与应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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