我想知道 iptables 中的接受策略和删除策略有什么区别。
我认为它的工作原理如下:
删除策略将丢弃除您制定规则的数据包之外的所有数据包。因此,您手动打开端口,其他端口则关闭。 接受政策将接受除您制定规则的数据包之外的所有数据包。因此,当前某些服务正在运行的所有端口均处于打开状态,而其他端口处于关闭状态。
我做了一些研究,大多数人建议放弃政策,因为这样更安全。我认为只要你知道你在运行什么服务,就没有任何区别。有人能告诉我我是否错了并解释一下吗?
答案1
在过去,你会允许一切,只过滤掉一些已知的“坏东西”。这相当于使用 ACCEPT 策略。然而,这种思维方式不再是最佳实践。很容易错过阻止你不想通过的东西,而且新的攻击,如放大 DDOS 攻击一直在发展。
因此,最佳做法是只允许你真正需要的特定内容。原因是你会注意到应该允许的内容没有通过。而且,由于必须手动允许所有内容,你必须更仔细地考虑所有内容。这相当于 DROP 策略。
答案2
接受策略将接受除您制定规则的数据包之外的所有数据包。
正确的说法应该是“接受策略将接受除您制定拒绝或丢弃规则的数据包之外的所有数据包。”
其次,为什么采用默认删除策略会更安全?
否则,您必须为不想授予访问权限的任何人创建“拒绝或删除”规则。
例如,有两个主机 X 和 Y 想要访问您服务器 Z 的 111 端口。因此,您想要接受 X 并拒绝 Y,实际上除了 X 之外的所有人。在这种情况下,您必须创建两个规则(如果您有默认的 ACCEPT 策略):
- 如果源是 d 端口 111 上的 X,则接受
- 如果 d 端口 111 上有任何 DROP
但是您有默认的 DROP 策略,因此您只需要创建一条规则:
- 如果源是 d 端口 111 上的 X,则接受
默认放置将处理其他所有事情。
希望这可以帮助!
答案3
没有什么魔法。只有一系列的规则,最后的行是 ACCEPT 或 DROP。这是默认策略的含义。我的意见是,一般情况下不建议使用端口过滤。只在您想要访问的外部 IP 上运行服务,那么您不需要过滤端口。就这样。