1.9 Miscellaneous

1.9.1 Running Snort as a Daemon

如果你想让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 File

当Snort作为守护程序(daemon)运行,守护程序在log目录会产生一个PID文件。 在Snort 2.6版本中加入 --pid-path 命令行选项 ,可以指定Snort PID文件生成目录。

此外,--create-pidfile 选项可以用来强制生成PID文件,即使没有以守护程序模式运行。

PID文件将会锁定来阻止其他snort进程启动。使用 --nolock-pidfile 选项取消锁定PID文件。

如果不希望在PID文件中包括接口名(interface name),使用 --no-interface-pidfile 选项。

1.9.2 Running in Rule Stub Creation Mode

如果需要将分享的对象规则村到一个目录,必须使用 -dump-dynamic-rules 命令行选项。这些规则储存文件(stub files)经常和分享的对象规则(shared object rules)连在一起。可以使用绝对路径和相对路径。

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

路径也可以在 snort.conf 中配置:

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

通过命令行配置的目录优先级高于配置文件:

/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 Obfuscating IP Address Printouts

如果需要发送包日志到公共的 mailing lists,也许会用到 -O 选项。这个选项会混淆输出的IP地址。也可以组合使用 -O 和 -h ,这样只会混淆家庭网络(home network)的主机的IP地址。例如,你可以使用以下命令从日志文件中读取并且输出到屏幕,混淆 192.168.1.0/24 网段的ip地址。

./snort -d -v -r snort.log -O -h 192.168.1.0/24

1.9.4 Specifying Multiple-Instance Identifiers

在Snort v2.4 中加入了 -G 命令行选项。可以给事件日志指定一个实例的标识符。这个选项可以在snort运行多实例(multiple instances)使用,可以在不同的CPU上或者一个CPU上不同的接口使用。每个Snort实例都会使用指定的值去生成唯一的事件ID。用户可以指定一个十进制值 -G 1 或者十六进制值 -G 0x11。同时支持通过长选项 --logid

1.9.5 Snort Modes

Snort 可以运行在3中不同的模式: tap(passive), inline, inline-test. Snort的策略也可以用于这三种模式。

Explanation of Modes

Inline

当Snort工作在Inline模式,Snort作为IPS运行,允许触发drop规则。Snort可以通过命令行 -Q 选项和配置文件选项 policy_modes 工作inline模式:

snort -Q
config policy_mode:inline

Passive

当Snort工作在Passive模式,Snort作为IDS运行,drop规则没有加载(不使用 -treat-drop-as-alert的情况下)。Snort可以通过配置文件选项 policy mode 工作passive模式:

config policy_mode:tap

Inline-Test

Inline-test模式会模拟Snort的inline模式,允许在不影响流量的情况下评估inline行为。drop规则会被加载而且将会触发为 Wdrop(Would Drop) 告警。Snort 可以用命令行选项 –enable-inline-test 或者配置文件选项 policy_modes 工作inline-test模式:

snort --enable-inline-test
config policy_mode:inline_test

不同模式的规则选项行为:

Snort - manual 笔记(五)-LMLPHP

不同模式的规则动作行为:

Snort - manual 笔记(五)-LMLPHP

1.10 Control socket

Snort可以配置提供一个可以被用来发命令到运行中的进程的Unix socket。必须在build时使用 --enable-control-socket 选项。目前只支持 linux 。

Snort可以使用命令行选项 --cs-dir <path> 和配置文件选项 cs_dir 配置:

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

<path> 指定snort生成socket的目录。如果使用相对路径,是相对pid的路径,如果没有指定pid路径,就是相对当前目录的路径。

--enable-control-socket build后,在snort的bin目录下会增加 snort control 命令。

1.11 Configure signal value

在一些其他的系统中,snort用的一些信号也被其他的函数使用了。为了避免冲突,用户可以通过 ./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>

可以将这些信号改为用户定义的值或者系统中已知的信号名。下面这个例子是将 rotate stats 信号改为 31 和 重载 表属性信号 SIGUSR2 :

./configure SIGNAL_SNORT_ROTATE_STATS=31 SIGNAL_SNORT_READ_ATTR_TBL=SIGUSR2

如果相同的信号被指定多次警告,将会在snort初始化时记录。如果一个信号处理不能安装,将会记录一个警告而且需要修复,否则将会失去功能。

Snort中用到的信号:

Snort - manual 笔记(五)-LMLPHP




04-19 13:54