如果我使用 iptables 阻止所有传出数据包,那么理论上我的系统是安全的,因为传入数据包将无法触发数据窃取。然而,这些传入数据包仍然可以利用某个地方的漏洞,造成损害或绕过 iptables 传出策略。
那么我的问题是,什么是管理传入数据包最合理、最方便、最安全的方法?您是否应该阻止所有传入流量并仅允许受信任/需要的服务器,是否应该在黑名单的基础上工作?另一个猜测是,每次您向服务器发送 SYN 数据包时,该服务器都会自动添加到白名单中,因此当您尝试连接到网站时,它会自动允许他回复。有没有办法方便地做到这一点?
答案1
另一个猜测是,每次你向服务器发送 SYN 数据包时,该服务器都会自动添加到白名单中,因此当你尝试连接网站时,它会自动允许他回复。有没有办法方便地做到这一点?
这就是大多数状态防火墙已经可以工作(例如家庭路由器,因为它是进行 NAT 所必需的,但在服务器上也很常见)。
在iptablesconntrack
,这通过模块或其简化版本完成state
。这两个示例与现代内核等效(尽管我认为 -m state
是 2.6.x 天内所必需的)。
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
不过,恕我直言,您至少也应该无条件接受-p icmp
和-p ipv6-icmp
。
在普法,保持状态是规则的默认设置pass
(除非no state
特别指定)。