假设我有一个策略文件,例如
fw net ACCEPT net fw DROP trusted fw ACCEPT trusted net ACCEPT untrusted fw DROP* untrusted net ACCEPT all all REJECT
我想要做的就是将来自不可信networking的所有stream量发送到防火墙(用*标记)到一个数据包捕获工具,如tcpdump或tshark进行分析。
看起来QUEUE或者NFQUEUE的行动可能会诀窍,或者我可以使用行动 …但是我没有玩过任何一个shorewall的组件,所以我不知道他们前进的道路。
我不知道如何处理shorewall,但是您可以手动添加规则,以通过NFLOG&wireshark捕获源自“不可信”的stream量。 这里是如何链接。
http://wiki.wireshark.org/CaptureSetup/NFLOG
您需要将规则中的“ -m owner –uid-owner 1000 ”部分更改为“不受信任”的源。
从risyasin的回答中我可以看出这一点。
首先,将login目的地放在shorewall中作为NFLOG(x)(而不是info或warn)。 对于netlink组,x是1到32之间的整数。
现在,使用tcpdump或dumpcap捕获数据包,并捕获nflog:x接口。 将数据包写入pcap。
PCAP格式不正确 – 我不知道为什么,但数据包将带有一些ASCII日志信息和其他字段,我还没有解码。 但是parsing和过滤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()