Snort入门(二)

1.6 读取pcap文件

可以让Snort捕获数据包之后去分析,对测试和调试snort很有帮助

1.6.1 命令行参数

可以一次或者多次指定以下命令,--pcap-reset and --pcap-show用一次和多次的效果是一样的
在这里插入图片描述

1.6.2 Example

读取单个的pcap

snort -r foo.pcap
snort --pcap-single=foo.pcap

从文件中读取pcaps

cat foo.txt
foo1.pcap
foo2.pcap
/home/foo/pcaps

snort --pcap-file=foo.txt

这将读取目录/home/foo/pcaps下的所有文件foo1.pcap foo2.pcap,请注意,Snort不会尝试确定该目录下的文件是否真的是pcap文件。

从命令行列表里读取pcaps

snort --pcap-list="foo1.pcap foo2.pcap f003.pcap"

在目录下读取pcaps

snort --pcap-dir="/home/foo/pcaps"

使用过滤器

cat foo.txt
foo1.pcap
foo2.pcap
/home/foo/pcaps

snort --pcap-filter="*.pcap" --pcap-file=foo.txt
snort --pcap-filter="*.pcap" --pcap-dir=/home/foo/pcaps

以上的pcap文件必须要以.pcap结尾

snort --pcap-filter="*.pcap" --pcap-file=foo.txt \
> --pcap-filter="*.cap" --pcap-dir=/home/foo/pcaps

以上,第一个** *.pcap**只对文件foo.txt中的pcaps有效,第二个过滤器*.cap会覆盖第一个,应用在目录/home/foo/pcaps上,里面所有的.cap文件都会被处理。

snort --pcap-filter="*.pcap" --pcap-file=foo.txt \
> --pcap-no-filter --pcap-dir=/home/foo/pcaps

这个梨子中,第一个filter将会应用在foo.txt上,而在目录/home/foo/pcaps下的文件将不会使用任何过滤器,所有在这个目录下的文件都会包含进去

$ snort --pcap-filter="*.pcap" --pcap-file=foo.txt \
> --pcap-no-filter --pcap-dir=/home/foo/pcaps \
> --pcap-filter="*.cap" --pcap-dir=/home/foo/pcaps2

上面梨子中,第一个过滤器将会用在foo.txt上,目录/home/foo/pcaps下将不会使用任何过滤器,目录/foo/pcaps2将找到*.cap的所有文件。

Reseting state 复位状态

snort --pcap-dir=/home/foo/pcaps --pcap-reset

在读取每个pcap之后,Snort将被重置为配置后状态,这意味着将刷新所有缓冲区,重置统计信息,等等

打印pcap

snort --pcap-dir=/home/foo/pcaps --pcap-show

1.7 基本输出

1.7.1 Timing statistics 时间统计

介绍基本的时间统计信息。它包括总秒数和数据包以及数据包处理速率。速率是基于整秒、分等,并且只在非零时显示。梨子:
在这里插入图片描述

1.7.2 Packet I/O Totals 总的流入流出包

显示基本的从DAQ获取和注入的数据包,如果你在读取pcap,那总数就是pcap的和,除非你使用了-pcap-reset

  • Outstanding 会显示有多少包被缓冲等待处理
  • pcap DAQs不显示过滤包
  • injected数据包是主动响应的结果,可以配置为inline或者passive模式
Packet I/O Totals:
Received: 3716022
Analyzed: 3716022 (100.000%)
Dropped: 0 ( 0.000%)
Filtered: 0 ( 0.000%)
Outstanding: 0 ( 0.000%)
Injected: 0
1.7.3 Protocol Statistics 协议数据包

breakdown部分总结了所有协议的通信,如果开启了frag3stream5这样的预处理程序,那么这个流量会有内部的“伪包”,总流量可能会大于I/O部分分析包的数量。

  • 由于基本的编码完整性缺陷,磁盘计数被丢弃,这阻止了Snort解码数据包。
  • Other include包包含Snort无法解码的封装。
  • S5 G 1/2是客户端/服务器会话流5由于缓存限制刷新,会话超时,会话重置。

例子

Breakdown by protocol (includes rebuilt packets):
Eth: 3722347 (100.000%)
VLAN: 0 ( 0.000%)
IP4: 1782394 ( 47.884%)
Frag: 3839 ( 0.103%)
ICMP: 38860 ( 1.044%)
UDP: 137162 ( 3.685%)
TCP: 1619621 ( 43.511%)
IP6: 1781159 ( 47.850%)
IP6 Ext: 1787327 ( 48.016%)
IP6 Opts: 6168 ( 0.166%)
Frag6: 3839 ( 0.103%)
ICMP6: 1650 ( 0.044%)
UDP6: 140446 ( 3.773%)
TCP6: 1619633 ( 43.511%)
Teredo: 18 ( 0.000%)
ICMP-IP: 0 ( 0.000%)
EAPOL: 0 ( 0.000%)
IP4/IP4: 0 ( 0.000%)
IP4/IP6: 0 ( 0.000%)
IP6/IP4: 0 ( 0.000%)
IP6/IP6: 0 ( 0.000%)
GRE: 202 ( 0.005%)
GRE Eth: 0 ( 0.000%)
GRE VLAN: 0 ( 0.000%)
GRE IP4: 0 ( 0.000%)
GRE IP6: 0 ( 0.000%)
GRE IP6 Ext: 0 ( 0.000%)
GRE PPTP: 202 ( 0.005%)
GRE ARP: 0 ( 0.000%)
GRE IPX: 0 ( 0.000%)
GRE Loop: 0 ( 0.000%)
MPLS: 0 ( 0.000%)
ARP: 104840 ( 2.817%)
IPX: 60 ( 0.002%)
Eth Loop: 0 ( 0.000%)
Eth Disc: 0 ( 0.000%)
IP4 Disc: 0 ( 0.000%)
IP6 Disc: 0 ( 0.000%)
TCP Disc: 0 ( 0.000%)
UDP Disc: 1385 ( 0.037%)
ICMP Disc: 0 ( 0.000%)
All Discard: 1385 ( 0.037%)
Other: 57876 ( 1.555%)
Bad Chk Sum: 32135 ( 0.863%)
Bad TTL: 0 ( 0.000%)
S5 G 1: 1494 ( 0.040%)
S5 G 2: 1654 ( 0.044%)
Total: 3722347
1.7.4 snort memory数据

在使用**mallinfo(3)**的系统上,将看到额外的统计信息。有关详细信息,请查看mallinfo的手册页
Example:

Memory usage summary:
Total non-mmapped bytes (arena): 415481856
Bytes in mapped regions (hblkhd): 409612288
Total allocated space (uordblks): 92130384
Total free space (fordblks): 323351472
Topmost releasable block (keepcost): 3200
1.7.5 Actions, Limits, Verdicts

操作(Actions)和判决(Verdict)计数显示了Snort对所分析的包所做的操作。此信息仅在IDS模式下输出(当使用-c <conf>选项运行snort时)。

  • Alerts是由规则操作确定的警报和已处理的块操作的数量。这里的block包括block、drop和reject操作。

Limits是由于现实世界对处理时间和可用内存的限制而产生的。这些指示没有发生的潜在行动:

  • 由于配置检测:最大队列事件设置,规则匹配没有被处理。缺省值是5。
  • 由于配置事件队列:max队列设置,事件无法存储在事件队列中。默认值为8。
  • 由于配置事件队列:日志设置,事件没有被警告。缺省值是3。
  • 事件limit:由于事件过滤器限制而未发出警报的事件。
  • 警告limit:事件没有被警告,因为它们已经在会话中被触发了。

Snort会在每个数据包上做判决:

  • Allow = Snort分析了数据包,但没有对其采取行动。
  • Block = Snort没有转发数据包,因为block规则;需要区别blockDrop,Drop(Snort根本看都没看),Block(看了之后根据规则不让过)
  • Replace = Snort修改过的包
  • Whitelist = 任何分析程序都允许通过的数据包
  • Blacklist = snort阻止通过的数据包
  • Ignore = Snort允许流通过此Snort实例的w/o检查的数据包。
  • Int Blklst = 被阻塞的GTP、Teredo、6in4或4in6封装的数据包。如果对给定协议设置了config tunnel_verdicts,则这些数据包将得到黑名单判决。
  • Int Whtlst = 允许GTP、Teredo、6in4或4in6封装的数据包。如果为给定协议设置了config tunnel_verdicts,这些数据包可以获得白名单裁决。

Example:

Action Stats:
Alerts: 0 ( 0.000%)
Logged: 0 ( 0.000%)
Passed: 0 ( 0.000%)
Limits:
Match: 0
Queue: 0
Log: 0
Event: 0
Alert: 0
Verdicts:
Allow: 3716022 (100.000%)
Block: 0 ( 0.000%)
Replace: 0 ( 0.000%)
Whitelist: 0 ( 0.000%)
Blacklist: 0 ( 0.000%)
Ignore: 0 ( 0.000%)

1.8 Tunneling 协议支持

Snort可以支持很多tunnelling协议解码,比如:GRE,GRE上的PPTP,MPLS,…这些默认都是开启的
如果想关掉,

./configure --disable-gre
./configure --disable--mpls
1.8.1 多个封装

Snort不会解码多个封装。 诸如:
Eth IPv4 GRE IPv4 GRE IPv4 TCP Payload or Eth IPv4 IPv6 IPv4 TCP Payload
这种不会被处理,并将返回一个告警

1.8.2 Logging

当前,仅记录数据包的封装部分
Eth IP1 GRE IP2 TCP Payload
记录成,
Eth IP2 TCP Payload

Eth IP1 IP2 TCP Payload
记录成,
Eth IP2 TCP Payload
(??不大懂)
Note:目前,在需要字对齐的架构(例如SPARC)上不支持利用GRE和PPP的PPTP解码。

1.9 Miscellaneous 杂项

1.9.1 作为后台程序运行snort

如果要将Snort作为后台程序运行,则可以将-D选项添加到前面几节中描述的任何组合。 请注意,如果您希望能够通过将SIGHUP信号发送到后台程序来重启Snort,则在启动时必须指定Snort二进制文件的完整路径,例如:

/usr/local/bin/snort -d -h 192.168.1.0/24 \
-l /var/log/snortlogs -c /usr/local/etc/snort.conf -s -D

(出于安全考虑,不支持相对路径)

Snort PID 文件
当Snort作为后台程序运行时,该后台程序在日志目录中创建一个PID文件。 在Snort 2.6中,-pid-path命令行选项使Snort将PID文件写入指定的目录中。
此外,即使未在后台程序模式下运行,--create-pidfile选项也可用于强制创建PID文件
PID文件将被锁定,以便其他snort进程无法启动。 使用--nolock-pidfile选项将不锁定 PID文件。
如果您不希望在PID文件中包含接口名称,请使用--no-interface-pidfile选项。

1.9.2 在规则存根创建模式下运行

如果需要将共享库规则存根转储到目录中,则必须使用–dump-dynamic-rules命令行选项。 这些规则存根文件与共享对象规则一起使用。 (路径可以是相对的或绝对的)。

/usr/local/bin/snort -c /usr/local/etc/snort.conf \
--dump-dynamic-rules=/tmp

也可以使用配置选项dump-dynamic-rules-pathsnort.conf中配置此路径,如下所示:

config dump-dynamic-rules-path: /tmp/sorules

命令行配置的路径优先于使用dump-dynamic-rules-path配置的路径。

/usr/local/bin/snort -c /usr/local/etc/snort.conf \
--dump-dynamic-rules
snort.conf:
config dump-dynamic-rules-path: /tmp/sorules

在上述情况下,转储路径设置为/tmp/sorules

1.9.3 混淆IP地址打印输出

如果需要将数据包日志发布到公共邮件列表,则可能需要使用-O选项。 此选项在数据包打印输出中混淆了您的IP地址。 如果您不希望邮件列表中的人知道所涉及的IP地址,这将非常方便。 您也可以将-O选项与-h选项组合使用,仅模糊家庭网络上主机的IP地址。 如果您不在乎谁看到攻击主机的地址,这将很有用。 例如,您可以使用以下命令从日志文件中读取数据包并将其转储到屏幕,仅混淆来自192.168.1.0/24 C类网络的地址:

./snort -d -v -r snort.log -O -h 192.168.1.0/24
1.9.4 指定多实例标识符

在Snort v2.4中,添加了-G命令行选项,该选项指定事件日志的实例标识符。 在不同的CPU上或在同一CPU但接口不同的情况下运行多个snort实例时,可以使用此选项。 每个Snort实例将使用指定的值来生成唯一的事件ID。 用户可以指定十进制值**(-G 1)或十六进制值,后跟0x(-G 0x11)**。 长选项--logid也支持此功能。

1.9.5 Snort 模式

Snort可以在三种不同的模式下运行,即tap(passive),内联和内联测试。 Snort策略也可以在这三种模式下配置。
模式的解释

  • Inline
    Snort充当IPS允许触发丢弃规则。 可以使用命令行参数-Q将Snort配置为以内联模式运行,配置snort config选项policy_mode 如下:
snort -Q
config policy_mode:inline
  • Passive
    当Snort处于Passive模式时,它充当IDS。Drop未加载的规则(没有–treat-drop-as-alert)。 配置为Passive模式:
config policy_mode:tap
  • Inline-Test
    Inline-Test模式模拟snort的内联模式,允许评估内联行为而不影响流量。 Drop规则将被加载,并作为Wdrop(Would Drop)警报触发。 可以使用命令行选项**(–enable-inline-test)**或使用snort config选项将Snort配置为以内联测试模式运行,如下所示:
snort --enable-inline-test
config policy_mode:inline_test

(注意:–enable-inline-test不能和-Q连着用)

Table:不同模式下规则选项的行为在这里插入图片描述
具有规则动作的不同模式的行为
在这里插入图片描述

1.10 控制套接字

可以将Snort配置为提供Unix套接字,该套接字可用于向正在运行的进程发出命令。 您必须使用--enable-control-socket选项构建snort。 控制套接字功能仅在Linux上受支持。
可以使用命令行参数--cs-dir <path>和snort config选项cs_dir将Snort配置为使用控制套接字,如下所示:

snort --cs-dir <path>
config cs_dir:<path>

<path>指定用来创建套接字的目录,
使用--enable-control-socket选项配置时,将在同一bin目录中创建并安装命令snort控件,并将其与snort一起安装。

1.11 配置信号值

在某些系统上,snort使用的信号可能会被其他功能使用。 为避免冲突,对于非Windows系统,用户可以通过./configure选项更改默认信号值

- SIGNAL_SNORT_RELOAD
- SIGNAL_SNORT_DUMP_STATS
- SIGNAL_SNORT_ROTATE_STATS
- SIGNAL_SNORT_READ_ATTR_TBL

语法:

./configure SIGNAL_SNORT_RELOAD=<value/name> SIGNAL_SNORT_DUMP_STATS=<value/name>\
SIGNAL_SNORT_READ_ATTR_TBL=<value/name> SIGNAL_SNORT_ROTATE_STATS=<value/name>

您可以将这些信号设置为系统中用户定义的值或已知的信号名称。 以下示例将轮换状态信号更改为31并将重载属性表更改为信号SIGUSR2

./configure SIGNAL_SNORT_ROTATE_STATS=31 SIGNAL_SNORT_READ_ATTR_TBL=SIGUSR2

如果多次分配同一信号,则在snort初始化期间将记录一条警告。 如果无法安装信号处理程序,则会记录一条警告,并且必须予以修复,否则该功能将丢失。

Snort中使用的信号:
在这里插入图片描述

1.12 更多信息

第2章包含有关配置文件中可用的许多配置选项的大量信息。 Snort手册页和snort -? 或snort --help包含可帮助您使Snort在几种不同模式下运行的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值