我想使用以下逻辑设置防火墙
- 当主机尝试通过端口 22 从 Internet 访问服务器时:
- DROP 和
- 将他们的 IP 添加到名为“trap”的 IP 集中(超时时间为 24 小时)
- 当 IP 在“陷阱”列表中的主机尝试连接到任何端口时:DROP。
我已阅读了许多文档页面,但不知道如何实现上述 1.2。
答案1
firewalld 支持 ipset,您可以在设置该 ipset 时指定 24 小时超时(86400 秒):
firewall-cmd --permanent --new-ipset=trap --type=hash:ip --option=timeout=86400
firewall-cmd --reload
在本机 net-filter / iptables 中,必要规则的逻辑和顺序如下:
# Block all traffic from IP-addresses in the trap ipset
# (with REJECT to facilitate debugging)
iptables -I INPUT 1 -m set --match-set trap src -j REJECT
# Add all IP-addresses to that connect to TCP port 22 to the trap ipset
# (the --timeout value is only necessary when different from the default for the ipset)
iptables -I INPUT 2 -p tcp -m tcp --dport 22 -m set --add-set trap src --timeout 86400 -j SET
# Reject access access to TCP port 22 for everybody
iptables -I INPUT 3 -p tcp -m tcp --dport 22 -j REJECT
将其转换为本机的firewalld /firewall-cmd 规则/结构目前有点超出我的能力,但将规则 1 和 2 添加为直接规则应该很容易。
您应该能够使用以下命令获取陷阱列表中的显示条目:
firewall-cmd --permanent --ipset=trap --get-entries