|
|
本帖最后由 民审-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,
请手工添加下行:
- 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
查找:
- 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 即可!
:wq
保存!
然后重启,让所有配置加载生效!
查看环境是否正常安装并启用了mod_evasive模块检测方法:
则证明是正常加载并启用mod_evasive模块的。
推荐搭配使用:
Discuz! LAMP Apache环境配置mod_security模块引擎防御Web应用入侵检测及防护
https://www.cgzz8.cn/t-24700-1-1.html
(出处: 草根吧)
|
暴力, DDOS, Apache, LAMP, evasive, Apache, Apache, Apache, Apache, Apache, Apache
|