n2disk是ntop社区中很多人用来转储高达100 Gbit流量的应用程序。很少有人知道,n2disk不仅可以使用数据报头信息(即IP,端口,VLAN,MAC…)来索引数据,还可以使用nDPI来生成包含应用程序协议信息的索引。
可能发生以下过滤:
- 在数据包捕获过程中(即指示n2disk避免转储占用大量磁盘空间且通常无害的特定协议,例如Netflix或YouTube)。
- 从存储的pcap文件中提取数据包时。
- 对于任何基于PF_RING的应用程序,包括使用libpcap的应用程序,例如tcpdump或Suricata。
L7捕获过滤
由于集成了PF_RING FT(n2disk 10/40/100 Gbit不需要额外的PF_RING FT licenses),n2disk支持–l7-filter-conf <file>来指定配置文件,在这个文件中可以定义可以哪些协议可以转发给n2disk引擎,哪些协议应该被丢弃,从而不在pcap上转发。例如,如果要放弃流媒体,转发其他协议,你可以指定一个过滤器文件,名字叫ft.conf,如下所示:
[global] default = forward [filter] YouTube = discard Netflix = discard
L7提取过滤
在pcap提取过程中,只有在数据包捕获过程中创建了扩展的(将-I -E 2添加到n2disk)索引,才可以使用L7过滤从pcaps中提取选定的数据包。这样一来,n2disk的配套工具npcapextract就可以在通常的基于包头的过滤器之外使用L7协议来过滤数据包。例如,为了过滤所有由主机192.168.1.1产生的Instagram流量,可以这样做
npcapextract -t /storage -b "2020-09-16 12:05:32" -e "2020-09-16 12:10:32" -o output.pcap -f "ip host 192.168.1.1 and l7proto Instagram"
该技术支持所有nDPI检测到的协议,并随着新协议/版本的支持而不断更新。
在基于PF_RING的工具(包括tcpdump)中使用L7筛选
除了n2disk,PF_RING也支持L7过滤。您只需要在PF_RING或libpcap-PF_RING之上编译你的应用程序。例如,如果您使用在PF_RING上编译的tcpdump(可以在此处找到),则可以执行
# PF_RING_FT_CONF=ft.conf tcpdump -ni pcap:file.pcap or # PF_RING_FT_CONF=ft.conf tcpdump -i eth0
请注意,对于实时通信,nDPI需要一些数据包来检测应用协议,因此对于基于TCP的协议,例如,初始的3WH不会被过滤,而后面的数据包将根据L7规则进行过滤。
如果您想了解更多有关此技术的信息,请阅读《n2disk用户指南》中的更多内容。
总结
多亏了nDPI,通过PF_RING,您现在可以在数据包捕获,索引和提取过程中,用第七层过滤来补充现有的基于数据包头的过滤技术,如BPF。这使您可以节省转储不需要的协议的磁盘空间,并仅提取您关心的流量,这对于现代网络流量中存在的大量应用协议来说可能很复杂。
本文摘自ntop,写于2020年9月17日