假设我有一个策略文件,例如
fw net ACCEPT
net fw DROP
trusted fw ACCEPT
trusted net ACCEPT
untrusted fw DROP*
untrusted net ACCEPT
all all REJECT
我想要做的是将来自不受信任网络的所有发往防火墙的流量(标有 *)发送到数据包捕获实用程序(如 tcpdump 或 tshark)进行分析。
似乎QUEUE 或 NFQUEUE 操作可能会奏效,或者我可以使用行动... 但是我还没有玩过 Shorewall 的任何一个组件,所以我不确定如何使用它们。
答案1
我不知道如何使用 shorewall,但您可以手动添加规则来通过 NFLOG 和 wireshark 捕获来自“不受信任”的流量。这里是如何操作的链接。
http://wiki.wireshark.org/CaptureSetup/NFLOG
你需要改变“-m 所有者 --uid-所有者 1000“用你的规则部分来指出“不受信任”的来源。
答案2
从 risyasin 的回答中我能够弄清楚这一点。
首先,将日志目标作为 NFLOG(x)(而不是 info 或 warn)放在 shorewall 中。对于 netlink 组,x 是一个介于 1 和 32 之间的整数。
现在,使用 tcpdump 或 dumpcap 捕获数据包,并在 nflog:x 接口上捕获。将数据包写入 pcap。
pcap 格式不正确 - 我不确定为什么,但数据包会带有一些 ASCII 日志信息,以及我尚未解码的其他字段。但解析和过滤 pcap 并纠正它相对容易。
import dpkt
r = dpkt.pcap.Reader(open(infile,'r'))
w = dpkt.pcap.Writer(open(outfile,'wb'))
for ts, pkt in r:
e = dpkt.ethernet.Ethernet()
e.data = dpkt.ip.IP(pkt[124:])
w.writepkt(e, ts)
r.close()
w.close()