当收到传入连接时,iptables 是否会按顺序应用所有规则?

当收到传入连接时,iptables 是否会按顺序应用所有规则?

我使用 iptables 和 fail2ban 来保护服务器连接。目前,我通过路由器过滤连接,只允许电子邮件和网络服务器访问的端口,而 fail2ban 会根据登录失败尝试添加限制。

我正在尝试了解 iptables 如何遍历规则。根据我的理解,它会逐行遍历,直到传入的连接不符合规则。这样对吗?

例如:

  1. 规则列表的顶部应该是网络服务器和电子邮件服务器的传入连接规则。

  2. 然后,以下规则应该是一条丢弃规则,以阻止所有其他端口。

  3. 最后,fail2ban 的条目将阻止达到规定登录尝试次数的连接。

这样理解正确吗?

编辑:经过一些额外的阅读之后,似乎这是更好的方法,对吗?

# Set the default policy of the INPUT chain to DROP
iptables -P INPUT DROP

# Accept incomming TCP connections from eth0 on port 80 and 443
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 465 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 993 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT
THEN THE FAIL2BAN RULES HERE?

答案1

数据包处理(在此链中)不是“当数据包不符合规则时”(无论这意味着什么),而是“当数据包与定义最终操作的规则匹配时”。接受、丢弃、拒绝、DNAT、SNAT — 所有这些都是最终操作。因此,如果数据包与某个接受规则匹配,则不会检查其后的规则(在同一链中),即使数据包与该规则匹配。

因此,必须制定“更具体”的规则来拒绝来自某些 IP 的访问,以便能够覆盖允许从任何 IP 访问服务的“通配符”规则。它们将首先匹配,并且其(最终)操作将是 DROP 或 REJECT,因此按照也将匹配的 ACCEPT 规则将不会授予访问权限。

Fail2ban 将创建自己的链(每个 jail 都有专用链),并在适当的位置(顶部filter INPUT)插入将处理重定向到这些链的规则。您不必为此担心。

相关内容