我想知道在处理 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 语句。