如何使用 Firewalld 创建陷阱

如何使用 Firewalld 创建陷阱

我想使用以下逻辑设置防火墙

  1. 当主机尝试通过端口 22 从 Internet 访问服务器时:
    1. DROP 和
    2. 将他们的 IP 添加到名为“trap”的 IP 集中(超时时间为 24 小时)
  2. 当 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

相关内容