nftables 默认允许端口 22 或其他端口吗?

nftables 默认允许端口 22 或其他端口吗?

我在新的 Debian 12(在 AWS EC2 上)上安装了 nftables。我通过端口 22/tcp 连接到实例(外部 EC2 IP)。我提到 EC2 是因为也许他们做了奇怪的把戏。然后我安装了 nftables:

    sudo apt install nftables
    sudo systemctl enable nftables
    sudo systemctl start nftables

此时,我有一个空配置:

    flush ruleset

    table inet filter {
      chain input {
            type filter hook input priority filter;
      }
      chain forward {
            type filter hook forward priority filter;
      }
      chain output {
            type filter hook output priority filter;
      }
    }

我的问题很简单:我读到并且期望在没有任何允许任何数据包的规则的情况下,我自己的会话应该被阻止,并且我应该可以重新启动。为什么情况显然并非如此,和/或是什么允许我的会话?

我注意到,只有当我明确阻止该流时,它才确实被阻止。

答案1

在没有任何规则允许任何打包的情况下,我自己的会话应该被阻止

默认情况下,您的规则集允许一切。

为了真正阻止所有连接,您需要policy drop;在每type filter ...行后面添加。如果将每条规则放在自己的行上,则分号是可选的。

如此紧凑的规则集确实是不明智的。至少你需要允许环回连接,否则许多程序将无法以神秘的方式工作:

对于输入,iif lo accept对于输出oif lo accept

并且允许所有链建立连接是必要的:ct state established,related accept- 该规则对于每个链都是相同的。

答案2

默认情况下nftables不创建任何链,这意味着每个数据包都被接受和允许。

您已经创建了三个根据input forwardoutput
如果未指定这些默认策略,则accept与没有任何链相同。

要默认阻止任何数据包,您需要将默认操作策略设置为drop如下所示:

# Sees incoming packets that are addressed to and have now been routed to the local system and processes running there
add chain filter input {
    type filter hook input priority filter; policy drop;
}

# Sees packets that originated from processes in the local machine
add chain filter output {
    type filter hook output priority filter; policy drop;
}

然后向这些链显式添加规则以允许特定流量。

相关内容