如果有人尝试对我的网站进行强制爆发攻击,我该如何阻止他们?
理想情况下,如果我在一秒钟内有很多 http/Apache 请求,我想阻止一个 IP。
如果有人尝试对我的网站进行强制爆发攻击,我该如何阻止他们?
理想情况下,如果我在一秒钟内有很多 http/Apache 请求,我想阻止一个 IP。
在这些情况下, fail2ban是一个易于实施的解决方案。
将block-all-dem-noobs.conf
文件添加到您的filter.d
目录,如下所示
[Definition]
failregex = ^<HOST> -.*"GET.*
翻译:查找 GET 请求的正则表达式
然后在你的创建一个新条目jail.conf
,像这样
[block-all-dem-noobs]
enabled = true
port = http,https
filter = block-all-dem-noobs
logpath = /var/log/httpd/access.log
maxretry = 100
findtime = 5
bantime = 600
action = iptables[name=HTTP, port=http, protocol=tcp]
翻译:查看我的access.log
文件,然后将在 5 秒内发出 100 个请求的 IP 地址屏蔽 600 秒(10 分钟)
但是,一个主要缺点是这可能会对NAT ed 用户产生误报,因为它们对您来说都将显示为一个 IP 地址。
fail2ban 可以配置为执行此操作。您可以将其配置为触发日志文件中的正则表达式匹配,并且如果它每分钟发生太多次(不确定它是否达到秒分辨率,但只需将您每秒所想的乘以 60),它可以删除客户端 IP进入 iptables 数据包过滤器或您想要采取的任何其他操作。或者您可以使用 iptables 最近的模块并调整我在此处为 SIP 暴力攻击所做的工作,以便与您的 Web 服务器一起使用:
# Deal with SIP brute forcing iptables -N SIP_WHITELIST # home iptables -A SIP_WHITELIST -s 1.2.3.0/24 -m recent --remove --name SIP -j ACCEPT # voip provider iptables -A SIP_WHITELIST -s 4.5.6.0/24 -m recent --remove --name SIP -j ACCEPT # remote location iptables -A SIP_WHITELIST -s 7.8.9.0/24 -m recent --remove --name SIP -j ACCEPT iptables -N SIP_BRUTEFORCE iptables -A SIP_BRUTEFORCE -m recent --set --name SIP iptables -A SIP_BRUTEFORCE -p udp --dport 5060 -m state --state NEW -j SIP_WHITELIST iptables -A SIP_BRUTEFORCE -m recent --update --seconds 30 --hitcount 3 --name SIP -j LOG iptables -A SIP_BRUTEFORCE -m recent --update --seconds 30 --hitcount 3 --name SIP -j DROP iptables -A INPUT -p udp --dport 5060 -m state --state NEW -j SIP_BRUTEFORCE
您可以配置 Apache mod_evasive 模块。该模块通过保存请求的 IP 和页面的哈希表提供了一个非常基本的功能,当目标页面或站点上超过阈值级别时,它将“阻止”IP 并出现 403“禁止”错误。有关配置详细信息,请阅读“如何使用 mod_evasive 阻止 Apache DDoS 攻击”。