设想:我iptables
为 DPI 引擎正在监视 Netfilter 队列的主机编写了规则:防火墙规则将进入该主机的流量排队到不同的 Netfilter 队列中,具体取决于流量是否来自ipset
我的某个队列。
在FORWARD
链中,所有连接都排在不同的队列中NFQUEUES
:DPI 引擎在用户空间队列中监视由 iptables 发送的数据包,如果观察到禁止连接,它会用特殊值标记该数据包;DPI 引擎将禁止的数据包重新插入堆栈中;在链中,POSTROUTING
我检查连接是否用该特殊值标记,如果是,我就会标记DROP
它们。
一切运行良好,但是...
问题:DPI 引擎很好,但并不完美:有时,
- 应被标识为禁止的流量未被标识为禁止,因此未被阻止;
- 禁止的流量会被阻止但不是立即阻止,同时禁止的连接可能会打开另一个
RELATED
未标记为禁止的连接(根据 conntrack 机器),但我也想阻止相关的连接。
第二种情况是我想要采取行动的情况:以情况 2 为例,假设 DPI 引擎想要阻止 YouTube,但它无法快速完成;它允许 YouTube 连接打开另一个被 DPI 引擎标记为 SSL 的连接;DPI 引擎最终阻止了 YouTube,但 SSL 连接仍然畅通无阻;我无法告诉 DPI 引擎阻止 SSL 连接,无论哪些连接打开了它们。
注意事项:如解释的那样设想,进入POSTROUTING
链的数据包可能被标记为 0(这是默认值,因此 DPI 引擎不采取任何行动)或特殊值(DPI 引擎看到禁止连接并对其进行标记):一个简单的
iptables -t mangle -A POSTROUTING -m mark --mark DROPVALUE -j DROP
几乎总是足够的,但在问题我写道,与被禁止的连接相关,但 DPI 引擎却不认为是这样,因为即使它们是由禁止连接创建的,其协议也不会被列入黑名单,因此它们不会被视为禁止。这是正确的,因为我不能列入SSL
黑名单HTTPS
。
我需要阻止RELATED
与禁止的连接:RELATED
并且ESTABLISHED
(如果我理解得好的话)不是指特定的连接,而是我需要指禁止的连接。
问题:是否可以断开RELATED
要断开的连接(或已断开的连接) ?还是需要进行iptables
一些修改?conntrack
提前感谢任何建议。
答案1
您误解了RELATED
。这不用于单个地址可能建立的每个连接。它仅用于实际相关的数据,例如与 FTP 控制连接关联的 FTP 数据流,或与打开的连接关联的 ICMP 错误消息。实际上很少有这样的连接会匹配RELATED
。