我在 GCP Compute Engine VM 实例上运行 Ubuntu Linux 16.04。它为 Web 应用程序托管 Web 服务器。我需要社区的反馈,以验证我在 Ubuntu Linux 上设置的内容是否正确,以及是否可以验证不良 IP 地址确实被阻止。
我已经设置了失败2ban并创建了以下监狱:
#To stop DOS attack from remote host.
[http-get-dos]
enabled = true
port = http,https
filter = http-get-dos
logpath = /var/log/apache*/access.log
maxretry = 1
findtime = 86400
bantime = -1
ignoreip = 111.222.333.12
# action = iptables[name=HTTP, port=http, protocol=tcp]
banaction=iptables-ipset-proto4
我有ipset和iptables配置如下:
sudo iptables -I INPUT -m set --match-set f2b-http-get-dos src -j DROP
sudo iptables -I FORWARD -m set --match-set f2b-http-get-dos src -j DROP
当我查询ipset设置名称f2b-http-get-dos,我看到列出了许多成员。例如:
Name: f2b-http-get-dos
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 3928
References: 3
Number of entries: 83
Members:
XX.XXX.XX.XX
XX.XXX.XX.XX
当我查询时iptables我明白了(摘录):
sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere match-set f2b-http-get-dos src
REJECT tcp -- anywhere anywhere multiport dports http,https match-set f2b-http-get-dos src reject-with icmp-port-unreachable
LOG all -- anywhere anywhere LOG level warning
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere match-set f2b-http-get-dos src
如何知道并确认在名为ipset正在防火墙经过iptables? 做iptables编写一个日志文件,用于跟踪它使用规则拦截和阻止的 IP 地址,或通过以下方式在定义的集合名称中查找 IPipset。
答案1
检查你的设置您可以配置 iptable 操作的日志记录。请记住,当 iptables 中的规则匹配并且目标是降低或者拒绝,则执行该操作并停止处理。如果你想有一个日志规则,它必须先于你降低或者拒绝数据包。您可以尝试配置如下规则:
-I INPUT -m set --match-set f2b-http-get-dos src -j LOG
在你降低规则:
-I INPUT -m set --match-set f2b-http-get-dos src -j DROP
这里你可以找到类似的问题。
作为替代解决方案你可以尝试使用云铠 WAF它提供针对 L3 和 L4 DDoS 攻击的内置防御、基于 IP 和基于地理位置的访问控制以及更多的。
答案2
答案3
您可以使用 ipset -L
查看被禁止的 IP 地址列表(由 fail2ban 添加)。
例子:
root@server:/# ipset -L
Name: f2b-sshd
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 184
References: 1
Number of entries: 2
Members:
XXX.XXX.XXX.XXX
YYY.YYY.YYY.YYY