`

实战在Centos5.3下mod_dosevasive对抗DDos攻击

 
阅读更多

转截请写明出处,谢谢!

 

     最近老同事的电子商务网站经常性的对手ab,无奈我花些时间google,发现有不少朋友用mod_dosevasive来对抗ddos攻击(当然是小范围的,如果没有带宽和硬件的保障效果会更好).

居体的安装可以参看

 

关于Apache (httpd)服务器防DDOS模块mod_evasive的使用说明

 

上面写的够详细了。

下面是我的安装过程

1.安装apxs 即要有 apache开发版本的支持

#yum install httpd-devel

 

2.进入mod_evasive目录

查看apxs在哪里

#whereis apxs /* /usr/bin/apxs*/

#/usr/bin/apxs -i -a -c mod_dosevasive20.c

 

执行上面的命令后系统会在/etc/httpd/conf/httpd.conf中加入下面一行

LoadModule evasive20_module   /usr/lib/httpd/modules/mod_evasive20.so

 

3.加入在被DDOS时的处理操作

手工在/etc/httpd/conf/httpd.conf最下方加入下面内容

 

<IfModule mod_evasive20.c>

    DOSHashTableSize    3097

    DOSPageCount        2

    DOSSiteCount        50

    DOSPageInterval     1

    DOSSiteInterval     1

    DOSBlockingPeriod   10

    DOSEmailNotifymy@email.com

    DOSSystemCommand    "sudo iptables -A INPUT -s %s -p tcp --dport 80  -j DROP"

    DOSLogDir           "/tmp/lock/mod_evasive"

</IfModule>

 

针对上面的配置在mod_dosevasive目录下面的REAME中有详细说明。

做了上面的配置之后记得要重启apache

 

4.重启apache

#service httpd restart

 

4.测试

我用压力测试工具ab

#ab -n 1000 -c 100 http://192.168.1.254/index.php 

 

5.查看是否本机IP(192.168.1.100)是否被封

#iptables -nvL

显示:

 

[c-sharp] view plaincopy
  1. Chain INPUT (policy ACCEPT 64628 packets, 6176K bytes)  
  2.  pkts bytes target     prot opt in     out     source               destination           
  3. Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)  
  4.  pkts bytes target     prot opt in     out     source               destination           
  5. Chain OUTPUT (policy ACCEPT 49010 packets, 10M bytes)  
  6.  pkts bytes target     prot opt in     out     source               destination    

 

 

 

结果显示并没有封着我的本机IP

 

分析原因是apache用户执行sudo处没有执行,因为我把

DOSSystemCommand    "sudo iptables -A INPUT -s %s -p tcp --dport 80  -j DROP"

改成了

DOSSystemCommand    "/bin/touch /tmp/%s.log"

重启apache没有问题故可以判断是sudo执行iptables的问题。因iptables命令是一定要root用户才能执行的。

中间我还把相关的命令写在了一个shell(/tmp/do.sh)中,并且把do.sh的权限改为4755(该权限会改变文件执行的属主为root)

do.sh

 

 

 

[c-sharp] view plaincopy
  1. #!/bin/sh  
  2. #相关的参数判断自己来吧  
  3. /sbin/iptables -A INPUT -s $1 -p tcp --dport 80  -j DROP  

 

重启apache再压力测试。用iptables -nvL查看还是没有看到策略中有被封的IP

 

 

针对上面的测试问题就在定位到了sudo 下面就是google.

最终找到相关的答案

 

Gentoo Sudo(ers)指南

 

简单的步骤就是

#visudo

加入下面的内容

apache ALL=NOPASSWD: /sbin/iptables

 

然后用sudo -l可以查看apache用户是否成功加入可以执行sudo的行列

 

重启apache->压力测试->查看防火墙策略->结果依旧(失败)查看apache的error日志显示

sudo: sorry, you must have a tty to run sudo

意思就是apache运行sudo要求是终端模式,在做web服务器用sudo的时候肯定是不能用终端了。

经查看visudo的配置和google的结果显示 我们需要将visudo中的

Defaults    requiretty

注解掉

#Defaults    requiretty

 

最终重复测试流程在

#iptables -nvL的命令下看到了被封堵的记录

 

[c-sharp] view plaincopy
  1. Chain INPUT (policy ACCEPT 64543 packets, 6168K bytes)  
  2.  pkts bytes target     prot opt in     out     source               destination           
  3.   836 39828 DROP       tcp  --  *      *       192.168.1.100        0.0.0.0/0           tcp dpt:80   
  4. Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)  
  5.  pkts bytes target     prot opt in     out     source               destination           
  6. Chain OUTPUT (policy ACCEPT 48945 packets, 10M bytes)  
  7.  pkts bytes target     prot opt in     out     source               destination        

 

 

 

 

 

 

总结:
你需要了解一些基本的shell,iptables知识,当然还有google工具
上面只是一个简单的iptables策略,你需要什么特殊的控件可以把相关的控件(如发邮件,写数据库)等操作写入到一个shell中然后改为DOSSystemCommand    "sudo /path/to/youshell %s"
说明:
如发现有不足之处请反馈我,我将非常感谢。
该文章是我在真实环境下面测试通过的总结。
参考资料:
其它:
MediaLayer防DDOS:http://deflate.medialayer.com/
分享到:
评论

相关推荐

    mod_evasive/mod_dosevasive22

    `mod_evasive` 和 `mod_dosevasive22` 是Apache Web服务器上的安全模块,主要用于防止DDoS(分布式拒绝服务)攻击和CSRF(跨站请求伪造)攻击。这两个模块通过智能监控和限制来自同一IP地址的过多请求来保护服务器,...

    CentOS-5.3-x86_64-bin-1of7.iso

    centos5.3_64镜像包,安装包,ISO镜像

    Centos5.3安装lm_sensors_cpu温度监控

    在 CentOS 5.3 中,lm_sensors 是一个用于监控硬件温度、电压和风扇速度的开源工具。要安装并配置 lm_sensors 来监控 CPU 温度,你需要遵循以下步骤: 1. **检查 lm_sensors 是否已安装** 在开始之前,首先确认...

    CentOS5.3-5.8_32x64位DVD镜像下载种子

    【标题】"CentOS5.3-5.8_32x64位DVD镜像下载种子"涉及的是Linux操作系统中的一个发行版本——CentOS,具体是5.x系列的多个版本。CentOS是一款基于Red Hat Enterprise Linux源代码再编译的开源操作系统,它提供了与...

    CentOS5.3_05_mysql安装

    至于提供的资源,"CentOS5.3 Linux 编译安装 mysql-6.0.10-alpha 视频教程.avi" 可能是一个详细的视频指南,可以帮助你更直观地了解每个步骤。"访问脚本之家.html" 和 "服务器常用软件.html" 可能包含更多关于服务器...

    LINUX操作系统_CentOS5.3_超详细的安装图文教程.doc

    LINUX操作系统_CentOS5.3_超详细的安装图文教程.doc

    CentOS5.3系统

    1. **内核升级**:CentOS 5.3 使用了Linux内核版本2.6.18,提供了更好的硬件支持和性能优化,尤其是在处理多核处理器和虚拟化技术方面。 2. **安全性增强**:此版本加强了系统的安全特性,包括 SELinux(Security-...

    CentOS 5.3下vsftp创建新用户

    在CentOS 5.3系统下配置vsftpd(Very Secure FTP Daemon)以创建并管理新的FTP用户是一项关键的IT技能,尤其对于那些负责维护服务器和确保数据安全的专业人士而言。下面将详细介绍如何在CentOS 5.3环境中通过vsftpd...

    CentOS5.3挂载NTFS

    以下是在CentOS 5.3版本上挂载NTFS驱动器的详细步骤: 1. **安装内核补丁**: 在进行NTFS挂载之前,首先需要确保你的系统内核支持NTFS。通过运行`uname -a`命令来查看当前系统的内核版本。例如,如果你的内核版本...

    centos5.3-i386笔记

    阿里云服务器centos+apache+php5.3+mysql+Zend Guard Loader+memcached+ftp环境搭建笔记

    Centos5.3 management guide

    ### CentOS 5.3 管理指南知识点详解 #### 一、课程介绍与目标 - **课程背景:** - 本课程旨在为学员提供一套全面的基础工具、技能及实践,以帮助他们掌握配置、保护及维护 Linux 服务器的能力。 - **目标受众:*...

    mod_jk_centos6_x32_http2.2.27_tomcat6

    在centos6.5 32位操作系统下 apache版本:http2.2.27 tomcat版本:tomcat6.0 下测试通过

    CentOS5.3下JDK1.5的完整安装过程

    本文将详细介绍在CentOS 5.3上安装JDK 1.5的完整步骤,这对于系统管理员和开发者来说是一项基础任务。 首先,我们需要下载JDK的安装包。在CentOS 5.3的时代,Sun Microsystems是Java的主要供应商,但现在Oracle已经...

    Lancger#opslinux#Centos6.5安装node_exporter1

    一、安装 二、启动脚本 三、设置开机启动

    mod_ssl-2.2.15-60.el6.centos.6.x86_64.rpm

    mod_ssl-2.2.15-60.el6.centos.6.x86_64.rpm mod_ssl-2.2.15-60.el6.centos.6.x86_64.rpm

    mod_ssl-2.2.15-69.el6.centos.x86_64.rpm

    mod_ssl-2.2.15-69.el6.centos.x86_64.rpm

    CentOS 5.3下安装ispCP教程

    以上步骤提供了ispCP在CentOS 5.3上的安装概览,但请注意,实际操作时可能需要根据官方文档和错误提示进行更细致的调整。务必确保每个步骤都成功执行,以确保ispCP能够稳定运行。在安装过程中遇到任何问题,建议在...

    centos5.3 配置DNS详解

    CentOS 5.3 配置 DNS 详解 CentOS 5.3 配置 DNS 需要安装相应的软件包,包括 bind、bind-libs、bind-chroot、bind-utils 和 caching-nameserver。这些软件包可以使用 rpm 命令进行安装。安装完成后,需要配置 DNS ...

    CentOS5.3下安装oracle10G超详细教程

    ### CentOS 5.3 下安装 Oracle 10G 超详细教程 #### 一、前期准备 在开始安装过程之前,确保以下准备工作已完成: - **操作系统**: CentOS 5.3 i386 版本。 - **Oracle 10G 完整版**:下载并准备好安装文件。 - **...

Global site tag (gtag.js) - Google Analytics