运行Snort

本章描述:

这个模块涵盖了通过命令行以不同方式去运行Snort,snort能够被用于多个不同方式,而不单单是IDS/IPS。这个章节会探讨这些选项的用法。

本章目的:

  • 理解不用的Snort运行模式
  • 配置和使用Snort的每一项操作能力
  • 理解可用的命令行切换和怎么样使用它们

Snort运行概览

Snort 有三种运行模式:

  • 数据包嗅探
  • 数据包记录
  • 入侵检测

您选择使用的模式,主要是您如何配置其命令行开关与如何配置其主配置文件的功能:snort.conf。 本节将重点介绍如何从命令行配置Snort,通过调用snort.conf文件,使用除了通过IDS / IPS模式进行Snort配置的基础知识之外的各种开关和选项。

Snort作为数据包嗅探

嗅探与记录的功能是Snort最原始的设计,然而如今它主要用来作IDS/IPS。尽管它主要作为IDS/IPS,嗅探与记录的功能仍然保留着,或许它们会成为其他相同功能的工具的替代者。

为了嗅探网络流量,有三个命令行选项你必须知道:

  • -d - 导出或者显示应用层信息
  • -e - 导出或者显示数据链路层信息
  • -v - 显示细节

Snort作为入侵传感器


Snort主要用于其入侵检测功能。 在生产能力中,Snort通常会在系统初始化时通过启动脚本来调用。 但是,即使另一个实例已经在运行,它也可以在“检测”模式下从命令行调用。

在抓包模式、日志模式以及检测模式下运行Snort唯一的区别就是添加了一个选项来调用配置文件:snort.conf,这个文件通常放在/etc目录结构下。回想一下,在早期执行的安装中,将其复制到/etc/snort目录中。 Snort配置文件也可以放在用户主目录下的.snortrc。 事实上,Snort在没有命令行选项启动时查找该文件。

Snort的配置文件基本包含所有的它入侵检测特性的配置:

  • 变量配置
  • 预处理器配置
  • 输出设置
  • 规则文件的指针

-c 选项可以指定配置文件。你可以像之前章节做的那样添加命令行选项,包括BPF表达式。但建议您在命令行中设置的选项将覆盖配置文件中设置的选项。在大多数情况下,更好的做法是在配置文件中保存配置,而不是在命令行中设置它们。 这使得更容易将文件分发到其他sensor,以实现更一致的IDS / IPS配置策略。 但是,如果需要一些快速的反馈,命令行总是一个更好的选择。

下面例子,展示了如何通过命令行在检测模式下启动Snort:

[root@snortbox local]# snort -c /etc/snort/snort.conf

这个例子会在检测模式下运行Snort,执行所有在snort.conf文件下的配置和设置。

您可能还记得,在安装实验中,我们将snortd复制到/etc/init.d目录并进行snort 到/etc/sysconfig。 您复制到sysconfig的文件将启动信息提供给/etc/init.d中的启动脚本。 下面的摘录是这个文件的顶部。

在此文件中,配置变量将被设置并稍后应用于Snort启动脚本的描述。 您可以配置这些变量来自定义Snort如何在您的环境中启动

通过启动脚本启动Snort

[snortbox ~ ]# /etc/init.d/snortd start

or

[snortbox ~ ]# service snortd start

Snort的启动和停止日志被记录到/var/log/messages文件下,可以查看更多信息。

如果对Snort传感器进行配置更改,则在重新启动或重新加载之前测试配置是一个好主意。 可以使用-T选项来完成测试。 通过测试这种可能性,您可能会避免IDS / IPS无法启动的情况。

[snortbox ~ ]# snort -c /etc/snort/snort.conf -T

配置重载

Snort支持重新加载配置以代替重新启动Snort,以便在配置更改期间提供无缝流量检测。 单独的线程将解析并创建可交换的配置对象,而主Snort数据包处理线程会继续检查当前配置下的流量。 当可交换的配置对象可以使用时,主Snort数据包处理线程将在新配置中交换使用,并将在新配置下继续处理。 请注意,对于某些预处理器,现有会话数据将继续使用创建它们的配置,以便继续该会话的正常状态。 然而,所有新创建的会话将使用新配置。

要启用对重新加载配置的支持,请在编译时添加--enable-reload以配置。 还有一个辅助选项可以决定,如果任何非重新加载的选项被更改,Snort应该如何运行。 默认情况下启用此选项,并且如果添加/修改/删除了任何非重新加载的选项,此动作是为了将Snort重新启动。 要禁用此行为,并且只是将Snort退出而不是重新启动,除了--enable-reload以外还添加--disable-reload-error-restart以进行编译。

当前有一些非重新加载的选项更改,因为它们需要更改输出、启动内存分配等。修改任何这些选项将导致Snort重新启动或退出(如果--disable-reload-error-restart是 用于配置Snort)。

可重载的配置选项:

  • 增加/修改/删除文本规则和变量,可以重载

  • 增加/修改/删除预处理器配置,可以重载

不可重载选项:

  • 通过动态检查、动态引擎、动态预处理器增加/修改/删除共享对象是不可以重载的,也就是,任何增加/修改/删除共享对象将要求重启。

  • 任何输出的修改都会要求重启

注意:这项功能不支持windows

要初始化重新加载,请发送Snort SIGHUP信号。 这要求您知道snort的进程ID。 要确定进程ID,请执行以下命令并查看反馈:

[snortbox -] # ps -ef | grep snort

snort 26780 1 0 16:48 ? 00:00:00 /osr/ sbin/snort -D -i ethl -u snorL -g snort -c /elc/snorL/snort.conf -l /var/

log/snort

在这个例子中,PID是26780。要执行SIGHUP信号,请敲以下命令,把<snort pid>替换掉:

[snortbox ~ ]# kill -SIGHUP <snort pid>

***注意:

如果未启用重新加载支持,Snort将在收到SIGHUP时重新启动(如以往一样)。 一个无效的配置仍然会导致Snort致命错误,因此您应该在发出重新加载之前测试新的配置。

***注意:

在某些操作系统配置中重新加载时出现问题。 这是类中使用的系统的情况。 因此在培训期间不能进行配置重新加载。

有关更多信息,请参阅文件README.reload 在Snort文档目录。

results matching ""

    No results matching ""