-P INPUT ACCEPT 对于 iptables 意味着什么?

rak*_*eth 6 networking linux debian iptables

我对 iptables 相当陌生,并且正在尝试弄清楚我是否正确配置了我的规则集。关于我的问题的-P INPUT ACCEPT部分,我试图确定这在我想要应用的规则的上下文中是否有效。请参阅下文了解更多详情。

我已将iptables-restore与包含以下规则的文件一起使用。本质上,我试图允许环回流量、已建立/相关的连接、SSH 和 HTTP。所有其他流量都应被拒绝。

*filter
:fail2ban-ssh - [0:0]

# Input chain rules
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
# Reject all other inbound traffic
-A INPUT -j REJECT   

# Output chain rules
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT

# Forward chain rules
-A FORWARD -j REJECT                                    

# fail2ban-ssh chain rules
-A fail2ban-ssh -s 146.0.77.33/32 -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-ssh -s 62.75.236.76/32 -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-ssh -j RETURN

COMMIT
Run Code Online (Sandbox Code Playgroud)

如果我运行iptables -S,我会收到以下输出:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-ssh
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A fail2ban-ssh -s 146.0.77.33/32 -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-ssh -s 62.75.236.76/32 -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-ssh -j RETURN
Run Code Online (Sandbox Code Playgroud)

我已经阅读了一些有关 iptables 的内容,我的理解是前几行(例如“ -P INPUT ACCEPT ”)本质上意味着如果其他规则均不适用,则默认操作是接受流量(在在这种情况下,用于输入、转发和输出)。

如果是这种情况,我是否应该明确地将以下行放入我的规则文件中并再次恢复 iptables?

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT DROP
Run Code Online (Sandbox Code Playgroud)

预先非常感谢阅读此完整问题的任何人!它有点长,但我认为有必要包含上述所有细节才能充分解释我的场景。

Mad*_*ter 1

要回答您实际提出的问题,策略应出现在普通iptables-save文件中,但不作为规则的参数-P

相反,它们应该出现在开头,以及您对任何自定义链的声明及其策略,如下所示:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:fail2ban-ssh - [0:0]
Run Code Online (Sandbox Code Playgroud)

自定义链旁边的连字符是缺少策略参数,因为用户定义的链没有策略。

请注意,使用您的防火墙,如果您将所有策略更改为DROP,您的服务器将难以进行 DNS 查找,并且许多事情将无法预测地失败。