我已经运行一些 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
旗帜。有人可以帮助我了解如何编辑规则以实现链良好隔离的目标吗?