在我的应用程序中,我使用 NFQUEU 将数据包从 netfilter 带到用户空间,然后将其与我的标准进行比较,并通过 nfq_set_verdict2 函数中的 NF_DROP 或 NF_ACCEPT 丢弃或接受数据包。我想以常规 iptables 日志格式记录丢弃的数据包。如何我能做到这一点吗?
问问题
429 次
1 回答
1
为了记录丢弃的数据包,创建一个新链,该链将丢弃它收到的每个数据包。将所有要丢弃的数据包重定向到新链并在声明新链时使用日志记录语法
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP
第 3 行:-m 限制:这使用限制匹配模块。使用它,您可以使用 –limit 选项限制日志记录。
–limit 2/min
:这表示日志记录的最大平均匹配率。在此示例中,对于类似的数据包,它将记录限制为每分钟 2 个。您还可以指定2/second, 2/minute, 2/hour, 2/day
. 当您不想将日志消息与相同丢弃数据包的重复消息混淆时,这很有帮助。
-j LOG
: 这表示这个包的目标是LOG。即写入日志文件。
–log-prefix “IPTables-Dropped
: ” 您可以指定任何日志前缀,它将附加到将写入 /var/log/messages 文件的日志消息中
–log-level 4
这是标准的系统日志级别。四是警告。您可以使用 0 到 7 范围内的数字。0 是紧急情况,7 是调试。
iptables -A LOGGING -j DROP
: 最后,丢弃所有到达 LOGGING 链的数据包。即现在它真的丢弃了传入的数据包。
于 2012-10-31T12:22:38.507 回答