如何将防火墙规则隔离在链中,以便可以单独重置它们?

如何将防火墙规则隔离在链中,以便可以单独重置它们?

我已经运行一些 iptables 规则有一段时间了,这些规则(我希望)很好,到目前为止没有问题。这是其中的一个片段

# Block all input and forward traffic, both IPv4 and IPv6
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Allow traffic already established to continue
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow ssh, dns, ldap, ftp and web services
iptables -A INPUT -p tcp --dport ssh -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -i eth0 -j ACCEPT

# OpenVPN tunnels
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE
iptables -A OUTPUT -o tun0 -j ACCEPT

自从我开始使用 Docker 以来,当出现问题时控制和重置防火墙变得非常混乱。如果我尝试重置所有防火墙规则,它会弄乱 docker 路由,并且不再起作用。

所以,解决这个问题的正确方法似乎是将我的所有防火墙规则(上面列出的规则)放在一个单独的链中。你能帮我吗?

  • 我如何将所有这些规则放入我的特定链中
  • 如何仅重置我的链的规则而不影响 Docker 规则。

我尝试解决问题

如果我理解正确的话,我必须将默认策略更改为

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables -A MyChain -P INPUT DROP
iptables -A MyChain -P OUTPUT ACCEPT
iptables -A MyChain -P FORWARD DROP

我必须补充:

iptables -P INPUT jump MyChain
iptables -P OUTPUT jump MyChain
iptables -P FORWARD jump MyChain

使默认流量跳转到我的链上。

最后,我必须添加-A MyChain每条规则。

但有时我们已经有了-A旗帜。有人可以帮助我了解如何编辑规则以实现链良好隔离的目标吗?

相关内容