iptables 拒绝与 icmp-host-prohibited

Sal*_*m F 4 networking linux firewall iptables

我最近在安装 OpenResty(nginx fork)并运行它后购买了新的 KVM/VPS,我的服务器不接受测试端口上的传入连接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
Run Code Online (Sandbox Code Playgroud)

但是我还是看不懂我的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
Run Code Online (Sandbox Code Playgroud)

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

nKn*_*nKn 5

iptables规则是自上而下评估的。如果数据包匹配其中一个规则,则它执行ACTION规则定义的操作。通常是REJECT, ACCEPT, DROP, REDIRECT(到不同的端口)或跳转到CHAIN.

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

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

请注意,为了更好地加固,建议使用DROP消息而不是消息REJECT,因为后者可能会给攻击者一些信息,例如“此主机存在并拒绝了您的数据包”,而DROP不会提供此类信息。