Saf*_*ado 4 iptables apache-2.2 rhel6
我试图让 mod_evasive 触发一个脚本来添加一个 iptables 规则来拒绝有问题的主机。我已经尝试了这里两个答案中的建议,但仍然无法正常工作。除了链接的帖子之外,我正在尝试运行本文中概述的脚本。
我的 Apache 配置有这个
DOSSystemCommand "sudo -u root /root/scripts/ban_ip.sh %s"
剧本有这个
#!/bin/sh
IP=$1
IPTABLES=/sbin/iptables
$IPTABLES -A banned -s $IP -p TCP -j DROP
echo "$IPTABLES -D banned -s $IP -p TCP -j DROP" | at now + 5 minutes
Run Code Online (Sandbox Code Playgroud)
我创建了一个“禁止”链(我也只是尝试将其添加到 INPUT 链中,但无济于事)
我的 /etc/sudoers 看起来像这样:
apache ALL=(root) NOPASSWD: /root/scripts/ban_ip.sh *
我已禁用 SELinux 以确保它不会妨碍您。我可以su apache --shell=/bin/bash
运行sudo /root/scripts/ban_ip.sh 10.10.10.10
,它工作得很好。
但是当一个源在 mod_evasion 中被标记为恶意时,它会用 403s 拒绝主机,但它从不运行脚本,所以我在这里并没有真正获得任何优势。
我还能尝试什么来让它工作?
小智 7
我的系统有效!:)
要求:
注意:您可以使用其他邮件代理并修改脚本。
现在我的配置:
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 150
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 10
DOSSystemCommand "sudo /usr/local/bin/ddos_system.sh %s"
DOSLogDir "/tmp"
</IfModule>
Run Code Online (Sandbox Code Playgroud)
www-data ALL=NOPASSWD: /sbin/iptables *, /usr/bin/at *
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash
#set -x
[ -z $1 ] && (echo "Usage: $0 <sourceip>"; exit 1)
[ -x /usr/bin/at ] || (echo "Please, install 'at'"; exit 1)
#############
## OPTIONS
#
SOURCEIP="$1"
HOSTNAME=$(/bin/hostname -f)
BODYMAIL="/tmp/bodymailddos"
MODEVASIVE_DOSLogDir="/tmp"
FROM="Anti DDOS System <ddos@yourfromdomain.foo>"
# Multiple accounts separated by commas
TO="admin@yourfromdomain.foo user@yourfromdomain.foo"
# Time-units can be minutes, hours, days, or weeks
BANNEDTIME="1 minute"
#
##
############
# Custom mail message
{
echo "Massive connections has been detected from this source IP: $SOURCEIP
The system has blocked the IP in the firewall for $BANNEDTIME. If the problem persist you should block that IP permanently.
- Anti DDOS System -"
} > $BODYMAIL
/sbin/iptables -I INPUT -s $SOURCEIP -j DROP
echo "/sbin/iptables -D INPUT -s $SOURCEIP -j DROP" | at now + $BANNEDTIME
cat $BODYMAIL | /usr/bin/mail -r "$FROM" -s "DDOS Attack Detected - $HOSTNAME" $TO
rm -f "$MODEVASIVE_DOSLogDir/dos-$SOURCEIP"
Run Code Online (Sandbox Code Playgroud)
问:最后一行呢?(rm -f ...)
A:当mod_evasive检测到某些攻击时,它会在“DOSLogDir”中创建名为“dos-[sourceip]”的文件(锁定文件)(例如dos-8.8.8.8)并执行一次“DOSSystemCommand”直到该文件消失。因此,当您执行“iptables”时,您应该删除锁定文件以进行下一次检查。
在 Debian 7 中测试。
祝你好运,问候。
归档时间: |
|
查看次数: |
7177 次 |
最近记录: |