我正在尝试找到一种方法来记录根据 iptables 中的规则丢弃的数据包的全部内容(可能使用 tcpdump)。
目前,我有一个规则来记录这些数据包(带有日志前缀),然后遵循该规则来丢弃它们。
有没有办法记录这些数据包的内容以供审查然后?
所以,我正在寻找这个:
- 记录匹配数据包的规则
- 将数据包传递到记录其内容的新目标的规则(可能是 QUEUE 目标?)
- 丢弃数据包的规则
2和3甚至可以组合。
我的理解是 tcpdump 可能无法执行此操作,因为它检查数据包前iptables 因此不会只记录丢弃的数据包。
谢谢。
答案1
NFLOG 目标可用于此目的。这是一个非常基本的例子:
# Drop traffic by default
iptables -P INPUT DROP
# add your whitelists here
# iptables -A INPUT ...
# Pass the packets to NFLOG (just like LOG, but instead of syslog,
# it uses netlink). You can add extra filters such as '-p tcp' as usual
iptables -A INPUT -j NFLOG
# packets that get here will now be dropped per INPUT policy
# Finally you can use tcpdump to capture from this interface (there
# can only be one active user of nflog AFAIK)
tcpdump -i nflog ...
iptables-extensions
有关目标的说明,请参阅手册页NFLOG
。