Snort 3 是下一代Snort IPS(入侵防御系统)。该文件将向您展示 Snort++ 所提供的功能,并指导您完成从下载到演示的步骤。 如果您不熟悉 Snort,您应该首先查看 Snort 文档。我们将讨论以下主题:
概述
依赖关系
下载
构建 Snort
运行鼻息
文档
尖叫声
此版本的 Snort++ 包含新功能以及所有 Snort 2.X 功能以及针对 Snort 基本版本的错误修复(以下所示除外):
Project = Snort++ Binary = snort Version = 3.0.0 (Build 250) from 2.9.11
以下是 Snort++ 的一些主要功能:
支持多个数据包处理线程
使用共享配置和属性表
使用简单的、可编写脚本的配置
使关键组件可插拔
无端口配置的自动检测服务
支持规则中的粘性缓冲区
自动生成参考文档
提供更好的跨平台支持
促进组件测试
使用共享网络映射
路线图上的其他功能包括:
支持数据包处理的流水线
支持硬件卸载和数据平面集成
支持代理模式
Windows 支持
如果您已经构建了 Snort,那么您可能拥有所需的一切。 如果没有,请获取最新的:
cmake 从源代码构建
来自 https://github.com/snort3/libdaq 的数据包 IO
来自 https://github.com/dugsong/libdnet.git 的 dnet 用于网络实用功能
flex >= 2.6.0 来自 https://github.com/westes/flex 用于 JavaScript 语法解析器
g++ >= 7 或其他 C++17 编译器
hwloc 来自 https://www.open-mpi.org/projects/hwloc/ 用于 CPU 关联性管理
来自 http://luajit.org 的 LuaJIT 用于配置和脚本编写
来自 https://www.openssl.org/source/ 的 OpenSSL,用于 SHA 和 MD5 文件签名、protected_content 规则选项和 SSL 服务检测
来自 http://www.tcpdump.org 的 pcap 用于 tcpdump 样式日志记录
来自 http://www.pcre.org 的 PCRE 用于正则表达式模式匹配
pkgconfig 来自 https://www.freedesktop.org/wiki/Software/pkg-config/ 来查找构建依赖项
zlib来自http://www.zlib.net进行解压
附加包提供可选功能。 查看手册了解更多信息。
snort.org 的下载部分提供了源代码 tarball:
snort-3.0.0-a3.tar.gz
您还可以通过以下方式获取代码:
git clone https://github.com/snort3/snort3.git
cmake 有单独的附加包,它们提供附加功能并演示如何构建插件。 extras 的来源位于 snort3_extra.git 存储库中。
请按照下列步骤操作:
设置源目录:
如果您使用的是 github 克隆:
cd 鼻息3/
否则,请执行以下操作:
tar zxf snort-tarballcd snort-3.0.0*
设置安装路径:
导出 my_path=/path/to/snorty
编译并安装:
要使用 cmake 和 make 进行构建,请运行 configure_cmake.sh。 它将自动创建并填充一个名为“build”的新子目录。
./configure_cmake.sh --prefix=$my_pathcd 构建 make -j $(nproc) 安装
笔记:
如果你可以执行 src/snort -V 则说明构建成功。
如果您熟悉cmake,可以运行cmake/ccmake而不是configure_cmake.sh。
cmake --help 将列出任何可用的生成器,例如 Xcode。 请随意使用其中之一,但我们将单独提供相关帮助。
以下是一些示例。如果您使用 Talos 规则和/或配置,您应该首先在 snort.lua 和 snort_defaults.lua 顶部设置任何所需的变量。
Snort++ 通过命令行提供了大量帮助,包括:
$my_path/bin/snort --help$my_path/bin/snort --help-module 抑制$my_path/bin/snort --help-config | grep 线程
检查并转储 pcap。 在下面,将 a.pcap 替换为您最喜欢的:
$my_path/bin/snort -r a.pcap$my_path/bin/snort -L dump -d -e -q -r a.pcap
验证配置,带或不带规则:
$my_path/bin/snort -c $my_path/etc/snort/snort.lua$my_path/bin/snort -c $my_path/etc/snort/snort.lua -R $my_path/etc/snort/sample.rules
运行 IDS 模式。 在下面的内容中,将 pcaps/ 替换为包含一个或多个 *.pcap 文件的目录的路径:
$my_path/bin/snort -c $my_path/etc/snort/snort.lua -R $my_path/etc/snort/sample.rules -r a.pcap -A 警报测试 -n 100000
让我们抑制 1:2123。 我们可以编辑conf或者这样做:
$my_path/bin/snort -c $my_path/etc/snort/snort.lua -R $my_path/etc/snort/sample.rules -r a.pcap -Aalert_test -n 100000 --lua“抑制={{gid=1,sid=2123}}”
全力研究具有多个数据包线程的目录:
$my_path/bin/snort -c $my_path/etc/snort/snort.lua -R $my_path/etc/snort/sample.rules --pcap-filter *.pcap --pcap-dir pcaps/ -Aalert_fast --max-packet-threads 8
doc/usage.txt 中给出了其他示例。
看一下手册,其中部分内容是由代码生成的,因此它保持最新:
$my_path/share/doc/snort/snort_manual.pdf$my_path/share/doc/snort/snort_manual.html$my_path/share/doc/snort/snort_manual/index.html
它还没有太多关于如何和为什么的信息,但它确实具有所有当前可用的配置等。规则的一些关键更改:
您必须使用逗号分隔的内容子选项,如下所示: content:"foo", nocase;
缓冲区选择器必须出现在内容之前,并且在更改之前保持有效
PCRE 缓冲区选择器已删除
查看手册以了解有关 Snort++ 与 Snort 的更多信息
检查手册参考部分以了解参数是如何定义的等。
它还涵盖了此处未演示的新功能:
snort2lua,一个将Snort 2.X conf和规则转换为新形式的工具
一个新的 HTTP 检查器
绑定器,用于将配置映射到流量
与端口无关的配置向导
改进的规则解析 - 任意空格、C 风格注释、#begin/#end 注释
本地和远程命令行 shell
o")~
我们希望您和我们一样对 Snort++ 感到兴奋。 让我们知道您对 snort 用户列表的看法。 与此同时,我们将继续努力。