iptables 日志问题

iptables 日志问题

我想知道在处理 iptables 中的项目日志方面最好的方法是什么。例如,我有一条如下规则:

$IPT -A BADTCP -p tcp -m tcp --tcp-flags ACK,FIN FIN -m limit --limit 5/min --limit-burst 5 -j LOG --log-prefix "Denied ACK-FIN Scan: " --log-ip-options --log-tcp-sequence --log-tcp-options --log-level 7
$IPT -A BADTCP -p tcp -m tcp --tcp-flags ACK,FIN FIN -j DROP

我很好奇,规则的以下部分是否更好

-m limit --limit 5/min --limit-burst 5 -j LOG --log-prefix "Denied ACK-FIN Scan: " --log-ip-options --log-tcp-sequence --log-tcp-options --log-level 7

包含在链内还是应该将其发送到不同的链(例如 LOGDROP 链)?

是否有可能有类似下面的规则?

$IPT -A BADTCP -p tcp -m tcp --tcp-flags ACK,FIN FIN -m limit --limit 5/min --limit-burst 5 -j LOG --log-prefix "Denied ACK-FIN Scan: "
$IPT -A BADTCP -p tcp -m tcp --tcp-flags ACK,FIN FIN -j LOGDROP

$IPT -A LOGDROP -p TCP --log-ip-options --log-tcp-sequence --log-tcp-options --log-level 7
$IPT -A LOGDROP -j DROP

提前感谢您对此提供的帮助。

答案1

从底部开始...

$IPT -A BADTCP -p tcp -m tcp --tcp-flags ACK,FIN FIN -m limit --limit 5/min --limit-burst 5 -j LOG --log-prefix "Denied ACK-FIN Scan: "
$IPT -A BADTCP -p tcp -m tcp --tcp-flags ACK,FIN FIN -j LOGDROP

$IPT -A LOGDROP -p TCP --log-ip-options --log-tcp-sequence --log-tcp-options --log-level 7
$IPT -A LOGDROP -j DROP

我不确定我是否完全理解了你希望在这里实现的目标……但正如所写的那样,不,这行不通。--log-ip-options和其他--log-*选项由模块提供LOG,因此如果没有-j LOG它们,它们根本无法被识别:

# iptables -A LOGDROP -p tcp --log-iptions
iptables v1.4.7: unknown option `--log-iptions'
Try `iptables -h' or 'iptables --help' for more information.

如果这只是一个拼写错误,而问题是“我可以LOG对同一个数据包多次调用吗?”,答案是肯定的。您可以很好地做到这一点:

-A INPUT -j LOG --log-prefix="prefixA "
-A INPUT -j LOG --log-prefix="prefixB "
-A INPUT -j LOG --log-prefix="prefixC "

等等。您将多次记录数据包,每次都带有一个前缀。正如您所展示的,最好始终包含这些--limit语句,以防止这些规则的高匹配率阻塞您的系统。

关于将日志记录规则放在哪里最好,这个问题实际上取决于您的个人需求。如果您想用 andLOG组合终止多个链DROP,最简单的方法可能是将其视为“子程序”并创建专用LOGDROP链。这确实意味着一切都会得到相同的结果--log-prefix。如果您确实需要确定特定结果,那么您将在整个规则集中散布多个 log/drop 语句。

相关内容