2核1G3M服务器88一季度

腾讯云,阿里云百度云等 折扣价→点我←

Discuz! LAMP Apache环境配置mod_evasive模块抵御暴力开源和DDoS攻击教程 discuz 教程

游客1 游客组

本帖最后由 民审-M 于 2016-11-24 20:37 编辑

Discuz! LAMP Apache环境配置mod_evasive模块抵御暴力开源和DDoS攻击教程

实测演示效果地址:demo.caogen8.co/ck建站学习研究如需服务器环境配置协助:@站长窝官方

以AMH 5.3编译环境为例:【站长窝source包支持Apache 2.4↓】

wget http://bbs.zhanzhangwo.com/linux/mod_evasive.tar.gz
chmod 777 mod_evasive.tar.gz
tar -zxvf mod_evasive.tar.gz
cd mod_evasive
/usr/local/apache-2.4/bin/apxs -c -i -a mod_evasive24.c

#编译、安装、并加载模块
#注:/usr/local/apache-2.4/bin/apxs 用于编译模块工具【← AMH环境命令执行路径】;如果是用系统自带的软件包,一般位于/usr/sbin目录。如果您是自己编译安装Apache(httpd)的,你应该自己来指定路径;

以上命令执行后会自动编译配置到/usr/local/apache-2.4/conf/httpd.conf,并在/usr/local/apache-2.4/conf/下备份原配置文件。

#注:如果没有自动编译配置到/usr/local/apache-2.4/conf/httpd.conf,
请手工添加下行:
LoadModule evasive20_module   modules/mod_evasive24.so


配置mod_evasive:
在路径:/usr/local/apache-2.4/conf/extra/
下创建:
mod_evasive.conf
输入内容为:

<IfModule mod_evasive24.c>
    DOSHashTableSize 3097
    DOSPageCount 2
    DOSSiteCount 10
    DOSPageInterval 1
    DOSSiteInterval 1
    DOSBlockingPeriod 10
    DOSEmailNotify caogen8@vip.qq.com
    #DOSSystemCommand "su - onovps -c iptables -I INPUT -s %s --dport 80 -j DROP"
    DOSSystemCommand "sudo /usr/local/bin/scripts-tecmint/ban_ip.sh %s"
    DOSLogDir "/var/log/mod_evasive"
    DOSWhitelist 127.0.0.1
    DOSWhitelist 127.0.0.*
</IfModule>

#以上配置注释:
DOSHashTableSize 3097 #表大小
DOSPageCount 2 #限制单位时间内同一IP请求同一网页次数
DOSSiteCount 10 #限制单位时间内同一IP请求网站次数
DOSPageInterval 1 #网页存取间隔
DOSSiteInterval 1 #网站存取间隔
DOSBlockingPeriod 10 #限制访问时间
DOSEmailNotify #疑似攻击时邮件通知
DOSSystemCommand "su - onovps -c iptables -I INPUT -s %s --dport 80 -j DROP"
#疑似攻击时用防火墙限制IP访问80端口
DOSLogDir "/var/log/ #日志目录
DOSWhiteList 127.0.0.1 #添加白名单
上面一行的%s代表了由mod_evasive检测到的攻击IP地址。
【以上更多配置参考:https://www.linode.com/docs/websites/apache-tips-and-tricks/modevasive-on-apache

加载扩展配置文件:
编辑:
/usr/local/apache-2.4/conf/httpd.conf
查找:
Include /usr/local/amh-5.3/vhost/amh-apache.conf
在其下行添加:
Include conf/extra/mod_evasive.conf
保存!

承接以上配置还需要:
在/usr/local/bin下创建一个叫做scripts-tecmint的文件夹(或其他的名字),以及一个叫做ban_ip.sh的文件。
用于iptables防火墙
shell脚本内容为:
#!/bin/sh
    IP=$1
    IPTABLES="/sbin/iptables"
    mod_evasive_LOGDIR=/var/log/mod_evasive
    $IPTABLES -I INPUT -s $IP -j DROP
    rm -f "$mod_evasive_LOGDIR"/dos-"$IP"
#以上脚本注释:

  • #!/bin/sh
  • # 由mod_evasive检测出,将被阻挡的IP地址
  • IP=$1
  • # iptables的完整路径
  • IPTABLES="/sbin/iptables"
  • # mod_evasive锁文件夹
  • mod_evasive_LOGDIR=/var/log/mod_evasive
  • # 添加下面的防火墙规则 (阻止所有从$IP流入的流量)
  • $IPTABLES -I INPUT -s $IP -j DROP
  • # 为了未来的检测,移除锁文件
  • rm -f "$mod_evasive_LOGDIR"/dos-"$IP"

将apache用户添加到sudoers文件
请注意,如果您不给予apache用户以无需终端和密码的方式运行我们脚本(关键就是这个脚本)的权限,则这一切都不起作用。通常,您只需要以root权限键入visudo来存取/etc/sudoers文件,接下来添加下面的两行即可:
输入命令:visudo
再最后一行添加(I)如下内容:
    apache ALL=NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh
    Defaults:apache !requiretty
重要: 在默认的安全策略下您只能在终端中运行sudo。由于这个时候我们需要在没有tty的时候运行sudo,我们必须像下图中那样注释掉下面这一行:
找到:
    #Defaults requiretty
注释掉 Defaults requiretty 即可!
:wq
保存!
然后重启,让所有配置加载生效!
init 6
查看环境是否正常安装并启用了mod_evasive模块检测方法:


/usr/local/apache-2.4/bin/apachectl -t -D DUMP_MODULES
如果看到:
Quoteevasive20_module (shared)


则证明是正常加载并启用mod_evasive模块的。

[backcolor=magenta]推荐搭配使用:[/backcolor]
Discuz! LAMP Apache环境配置mod_security模块引擎防御Web应用入侵检测及防护
http://bbs.zhanzhangwo.com/t-24700-1-1.html
(出处: 站长窝)

站长窝论坛版权声明 1、本帖标题:Discuz! LAMP Apache环境配置mod_evasive模块抵御暴力开源和DDoS攻击教程
2、论坛网址:站长窝论坛
3、站长窝论坛的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
4、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
5、站长窝论坛一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本帖由游客1在站长窝论坛《程序综合区》版块原创发布, 转载请注明出处!
评论
最新回复 (0)
返回
发新帖