IPTables 无法按预期进行 ssh 控制

IPTables 无法按预期进行 ssh 控制

我有以下规则,这些规则用于测试:

  iptables -F
  iptables -A INPUT -p tcp --dport 22 -j DROP
  iptables -A OUTPUT -p tcp --sport 22 -j DROP
  iptables -A INPUT -i em1 -p tcp --dport 22  -j ACCEPT
  iptables -A OUTPUT -o em1 -p tcp --sport 22 -j ACCEPT

我取消了连接状态匹配以简化规则。但是,我无法从 em1 接口连接到 ssh。为什么?

如果我删除最后四行,我就可以轻松地 ssh 了。我有两个接口。我在 em1 接口上的 LAN 上。iptables 系统的 em1 接口的 IP 地址设置为 192.168.1.22,我正尝试从 192.168.1.13 进行 ssh

答案1

假设您按照该顺序执行规则,您会在接受数据包之前将其丢弃在端口 22 上。

如果您列出规则,它会按顺序处理它们,并在遇到与站点匹配的规则时进行处理。它不像路由那样从最具体到最通用。

如果您更改顺序,则输入规则为:

iptables -A INPUT -i em1 -p tcp --dport 22  -j ACCEPT
iptables -A OUTPUT -o em1 -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A OUTPUT -p tcp --sport 22 -j DROP

它应该接受接口 em1 上的目标端口 22,而不是按照规则丢弃数据包。

相关内容