iptables 拒绝 icmp 主机禁止

iptables 拒绝 icmp 主机禁止

我最近买了新的 KVM/VPS,安装 OpenResty(nginx fork)并运行它后,我的服务器无法接受测试端口上的传入连接,8080 我设法通过将端口 8080 添加到允许规则来解决这个问题,

iptables -I INPUT  -p tcp --dport 8080 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -I OUTPUT -p tcp --sport 8080 -m conntrack --ctstate ESTABLISHED     -j ACCEPT

但我仍然不明白我的 VPS 自带的默认规则

 pkts bytes   target           prot opt in     out     source               destination                              
 361K 1192M ACCEPT             all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    1    60     ACCEPT         all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
 464K   70M INPUT_direct       all  --  *      *       0.0.0.0/0            0.0.0.0/0           
 464K   70M INPUT_ZONES_SOURCE all  --  *      *       0.0.0.0/0            0.0.0.0/0           
 464K   70M INPUT_ZONES        all  --  *      *       0.0.0.0/0            0.0.0.0/0           
 1324 61332 DROP               all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
 458K   70M REJECT             all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

特别是最后一行,它阻止所有传入流量!

答案1

iptables规则是自上而下评估的。如果数据包与其中一条规则匹配,它将执行ACTION规则的 定义。通常是REJECTACCEPTDROPREDIRECT(到不同的端口)或跳转到CHAIN

最后一条规则只是一条通用规则,当之前的规则都没有触发时,它就会触发。基本上,它是“默认情况下,拒绝任何与之前的规则不匹配的内容”。这是实施防火墙时的标准做法,也是一种良好做法。

icmp-host-prohibited只是数据包被拒绝的消息。这意味着您的服务器将使用该消息通知发送者数据包已被拒绝。

请注意,为了更好地强化,建议使用DROP消息而不是REJECT它们,因为后者可能会向攻击者提供一些信息,例如“该主机存在并且拒绝了您的数据包”,而DROP不会提供这样的信息。

相关内容