使用 fail2ban、ipset 和 iptables 阻止 Google Compute Engine 上的不良 IP 地址

使用 fail2ban、ipset 和 iptables 阻止 Google Compute Engine 上的不良 IP 地址

我在 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

我有ipsetiptables配置如下:

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

您可以看到生成的日志核心/var/log/kern.log

或者你可以筛选使用 grep 命令:

# iptables -L INPUT -v -n | grep "1.2.3.4"

答案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

相关内容