返回列表 发新帖
查看: 313|回复: 0

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

[复制链接]

1万

热度

1万

元宝

1万

贡献

金牌草根

发表于 2016-11-22 15:10:43 | 显示全部楼层 |阅读模式
本帖最后由 民审-M 于 2016-11-24 20:37 编辑

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

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

以AMH 5.3编译环境为例:【草根吧source包支持Apache 2.4↓】
游客,如果您要查看本帖隐藏内容请回复

#编译、安装、并加载模块
#注:/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,
请手工添加下行:
  1. LoadModule evasive20_module   modules/mod_evasive24.so
复制代码


配置mod_evasive:
在路径:/usr/local/apache-2.4/conf/extra/
下创建:
mod_evasive.conf
输入内容为:
游客,如果您要查看本帖隐藏内容请回复

#以上配置注释:
    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
查找:
  1. Include /usr/local/amh-5.3/vhost/amh-apache.conf
复制代码
在其下行添加:
  1. Include conf/extra/mod_evasive.conf
复制代码
保存!

承接以上配置还需要:
在/usr/local/bin下创建一个叫做scripts-tecmint的文件夹(或其他的名字),以及一个叫做ban_ip.sh的文件。
用于iptables防火墙
shell脚本内容为:
  1. #!/bin/sh
  2.     IP=$1
  3.     IPTABLES="/sbin/iptables"
  4.     mod_evasive_LOGDIR=/var/log/mod_evasive
  5.     $IPTABLES -I INPUT -s $IP -j DROP
  6.     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)如下内容:
  1.     apache ALL=NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh
  2.     Defaults:apache !requiretty
复制代码
重要: 在默认的安全策略下您只能在终端中运行sudo。由于这个时候我们需要在没有tty的时候运行sudo,我们必须像下图中那样注释掉下面这一行:
找到:
  1.     #Defaults requiretty
复制代码
注释掉 Defaults requiretty 即可!
:wq
保存!
然后重启,让所有配置加载生效!
  1. init 6
复制代码
查看环境是否正常安装并启用了mod_evasive模块检测方法:
游客,如果您要查看本帖隐藏内容请回复

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

推荐搭配使用:
Discuz! LAMP Apache环境配置mod_security模块引擎防御Web应用入侵检测及防护
https://www.cgzz8.cn/t-24700-1-1.html
(出处: 草根吧)

本文来源于网友学习研究交流 www.caogen8.co,请以学习研究交流为主。
如果您没有贡献积分,可以直接免费领取,免费领取
如果你需要加入本学习研究交流,请以学习研究交流为目的,免责声明
如果找不到您要的资源,请搜索一下,点击搜索
返回列表 发新帖
 懒得打字嘛,点击右侧快捷回复【最新发布】   【赞助草根吧享更多权益】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

收藏帖子 返回列表 搜索

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

小黑屋|手机版|草根吧