如何记录iptables之后的数据包?
How to record the packets after iptables?
我想记录iptables之后的数据包(使用tcpdump),但是tcpdump似乎会记录所有的数据包。我不希望数据包被 iptables 丢弃。
有什么办法
- 记录iptables后的数据包?或
- 将数据包(由 iptables 处理)输出到 pcap/log 文件?
谢谢。
Tcpdump 在入站流量的 iptables 之前起作用,但您可以使用 iptables "NFLOG" 扩展来达到您的目标:http://ipset.netfilter.org/iptables-extensions.man.html#lbDI
使用 "NFLOG" 目的地,你可以将所需的数据包记录到用户空间应用程序,这就是 tcpdump 所属的地方(你也可以将流量分配给特定的组,然后告诉 tcpdump 从中监听)。
Web 服务器(非常基本)示例,假设您正在接受 http/https 流量并丢弃 ssh:
#BASIC RULES
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
#NFLOG REDIRECT ONLY HTTP TRAFFIC
iptables -A INPUT -p tcp --dport 80 -j NFLOG
#TCPDUMP ONLY ON MATCHED TRAFFIC (=HTTP)
tcpdump -i nflog
我想记录iptables之后的数据包(使用tcpdump),但是tcpdump似乎会记录所有的数据包。我不希望数据包被 iptables 丢弃。
有什么办法
- 记录iptables后的数据包?或
- 将数据包(由 iptables 处理)输出到 pcap/log 文件?
谢谢。
Tcpdump 在入站流量的 iptables 之前起作用,但您可以使用 iptables "NFLOG" 扩展来达到您的目标:http://ipset.netfilter.org/iptables-extensions.man.html#lbDI
使用 "NFLOG" 目的地,你可以将所需的数据包记录到用户空间应用程序,这就是 tcpdump 所属的地方(你也可以将流量分配给特定的组,然后告诉 tcpdump 从中监听)。
Web 服务器(非常基本)示例,假设您正在接受 http/https 流量并丢弃 ssh:
#BASIC RULES
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
#NFLOG REDIRECT ONLY HTTP TRAFFIC
iptables -A INPUT -p tcp --dport 80 -j NFLOG
#TCPDUMP ONLY ON MATCHED TRAFFIC (=HTTP)
tcpdump -i nflog