1.5 Packet Acquisition

Snort 2.9 引入 DAQ 代替直接调用 libpcap .

有两种网卡特性会影响 Snort :

Snort 建议关闭这两项 ,对于linux系统 执行以下命令行 :

$ ethtool -K eth1 gro off
$ ethtool -K eth1 lro off

1.5.1 Configuration

假设我们没有禁用 static modules 或者改变默认的 DAQ 类型, 我们可以像以前一样使用 interface 运行Snort 中 readback 或者 sniffing. 当然, 也可以通过以下设置选择和配置 DAQ :

Snort - manual 笔记(二)-LMLPHP

必须通过配置文件或者命令行指定好所需要的参数, 否则 -Q 会强制执行 inline, -r 会强制执行 read-file, mode默认为passive.

1.5.2 pcap

pcap 是默认的 DAQ. snort 运行任何 w/o DAQ 命令, 都是通过操作 pcap.以下命令是等价的 :

./snort -i <device>
./snort -r <file>
./snort --daq pcap --daq-mode passive -i <device>
./snort --daq pcap --daq-mode read-file -r <file>

可以指定pcap buffer_size :

./snort --daq pcap --daq-var buffer_size=<#bytes>

1.5.3 AFPACKET

afpacket 函数类似与 memory mapped pacp DAQ 但是不需要外部依赖库 :

./snort --daq afpacket -i <device>
[--daq-var buffer_size_mb=<#MB>]
[--daq-var debug]

如果在 inline mode 中运行 afpacket, 必须设置一个或多个接口对(interface pairs), 格式如下 :

eth0:eth1

或者:

eth0:eth1::eth2:eth3

afpacket DAQ 默认分配128MB的包内存(packet memory), 可以通过以下配置修改 :

--daq-var buffer_size_mb=<#MB>

1.5.4 NFQ

NFQ 是新的改良的抓包(iptables packets)方式 :

Snort - manual 笔记(二)-LMLPHP

关于 iptables

https://wiki.archlinux.org/index.php/Iptables_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

1.5.5 IPQ

IPQ 是旧的抓包(iptables packets)方式. pre-2.9 可以通过以下命令在build时启用 :

./configure --enable-inline / -DGIDS

通过一下设置启用 :

1.5.6 IPFW

BSD系统可以用IPFW. pre-2.9 可以通过以下命令在build时启用 :

./configure --enable-ipfw / -DGIDS -DIPFW

以下这条命令作废 :

./snort -J <port#>

改为以下命令 :

./snort --daq ipfw [--daq-var port=<port>]
<port> ::= 1..65535; default is 8000

1.5.7 Dump

在 snort 2.9 版本中 dump DAQ 允许尝试多种inline模式特性, 例如 injection 和 normalization.

./snort -i <device> --daq dump
./snort -r <pcap> --daq dump

默认会生成一个文件名为inline-out.pcap的文件, 包括所有snort捕获和生成的包. 也可以自定义名字 :

./snort --daq dump --daq-var file=<name>

因为dump是通过调用pcap daq. 因此也没有计数过滤的包.

./snort -r <pcap> -Q --daq dump --daq-var load-mode=read-file
./snort -i <device> -Q --daq dump --daq-var load-mode=passive

1.5.8 Statistics Changes




05-04 02:11