Snort 3 on Ubuntu 14 and 16(译)

Snort 3在Ubuntu 14或16版本中安装部署

作者:Noah Dietrich
日期:2017年12月19日
遵循的许可协议:署名-非商业性使用-相同方式共享 4.0 国际版 (CC BY-NC-SA 4.0)

目录

1. 介绍………………………………………………………………………………………………..
2. 开始………………………………………………………………………………………………..
3. 运行Snort………………………………………………………………………………………..
4. 安装位置…………………………………………………………………………………………
5. Snort规则………………………………………………………………………………………..
6. Snort内建规则…………………………………………………………………………………
7. 安装OpenAppID……………………………………………………………………………..
8. 安装示例插件…………………………………………………………………………………..
9. Snort++开发人员指南………………………………………………………………………
10. 加载示例PCAP文件后生成的报警信息输入到CSV文件中……………………..
11. 下一步…………………………………………………………………………………………..

1 介绍

本指南将会指导您完成Snort3 Alpha在Ubuntu14或16版本中的安装部署 。文章中的指令并不适用于Ubuntu12版本(虽然旧指南可以在我的网站中找到)。
请注意,Snort3是一款alpha软件。它会包含bugs,并且新版本可以比这个指南发布时有不同的先决条件。本指南已经在2017年12月15日发布并且对Snort 3.0.0-a4 build 241进行了测试。你可以按照这个指南去安装Snort稍晚些的版本,但需求可能会发生变化。
因为Snort++是alpha软件,所以你不应该在生产环境中使用它。这个软件已经被Snort团队发布并且在征求反馈和用户测试。
本指南将不讨论如何配置Snort作为NIPS或NIDS,如何安装额外的支持软件(barnyard2, PulledPork, GUIs),如何设置网络接口获取数据,Snort传感器设计考虑,特定预处理器的详细描述或者OpenAppID的使用。你可以去我的网站(SublimeRobots.com)阅读我写的关于这些的其他文章,以及如何配置Snort作为完整的NIDS或者NIPS系统。
鼓励去提交对本指南的反馈:Noah@SublimeRobots.com
你也可以求助Snort分布列表:
Snort使用者
Snort开发者
SnortOpenAppID

2 开始

首先,确保你拥有最新的系统和软件包列表:

sudo apt-get update && sudo apt-get dist-upgrade -y

安装Snort3的先决条件。这些包的细节可以在Snort3手册的需求部分找到:

sudo apt-get install -y build-essential autotools-dev libdumbnet-dev libluajit-5.1-dev libpcap-dev \
libpcre3-dev zlib1g-dev pkg-config libhwloc-dev cmake

下面的可以不安装(但强烈推荐安装):

sudo apt-get install -y liblzma-dev openssl libssl-dev cpputest libsqlite3-dev uuid-dev

如果你想建立最新的文档源树包括Snort++开发者指南,安装以下(纯粹是可选的)包。这些包近800MB大小:

sudo apt-get install -y asciidoc dblatex source-highlight w3m

因为我们将从github库中安装Snort,所以我们需要一些工具:

sudo apt-get install -y libtool git autoconf

Snort DAQ(数据采集库)有几个先决条件,需要安装:

sudo apt-get install -y bison flex

如果你想在内联模式下使用NFQ来运行Snort的话,安装所需的包(不需要在内联摸或IDS模式下使用afpacket)。如果不确定,那么你应该安装这个包。

sudo apt-get install -y libnetfilter-queue-dev

我们需要下载tarballs源和其他源文件,但我们希望将这些数据存储在一个文件夹中:

mkdir ~/snort_src
cd ~/snort_src

下载并安装safec为运行范围来检查某些遗留C库调用(这是可选的,但是建议你这样做):

cd ~/snort_src
wget https://downloads.sourceforge.net/project/safeclib/libsafec-10052013.tar.gz
tar -xzvf libsafec-10052013.tar.gz
cd libsafec-10052013
./configure
make
sudo make install

Snort3将使用Hyperscan快速模式匹配。Hyperscan需要Ragel和Boost头文件:
下载并安装Ragel:

cd ~/snort_src
wget http://www.colm.net/files/ragel/ragel-6.10.tar.gz
tar -xzvf ragel-6.10.tar.gz
cd ragel-6.10
./configure
make
sudo make install

Hyperscan需要Boost C++ Libraries。需要注意的是因为Ubuntu库版本太老并且Hyperscan需要boost库版本为1.58或者更高,所以我们不使用Ubuntu库中的boost头文件。下载Boost 1.65.1版本的库,但不要安装:

cd ~/snort_src
wget https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz
tar -xvzf boost_1_65_1.tar.gz

从源代码安装Hyperscan 4.6.0,Boost头文件引用的源目录位置:

cd ~/snort_src
wget https://github.com/intel/hyperscan/archive/v4.6.0.tar.gz
tar -xvzf v4.6.0.tar.gz
mkdir ~/snort_src/hyperscan-4.6.0-build
cd hyperscan-4.6.0-build/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBOOST_ROOT=~/snort_src/boost_1_65_1/ ../hyperscan-4.6.0
make
sudo make install

如果你想测试Hyperscan如何工作,那么在构建目录中运行:

cd ~/snort_src/hyperscan-4.6.0-build/
./bin/unit-hyperscan

Snort对flatbuffers有一个可选的要求,一个可记忆有效率的序列化库:

cd ~/snort_src
wget https://github.com/google/flatbuffers/archive/master.tar.gz -O flatbuffers-master.tar.gz
tar -xvzf flatbuffers-master.tar.gz
mkdir flatbuffers-build
cd flatbuffers-build
cmake ../flatbuffers-master
make
sudo make install

接下来,从Snort官网下载并安装DAQ(数据采集库)。请注意,Snort 3和Snort 2.9.x.x系列使用的是不同的DAQ。

cd ~/snort_src
wget https://www.snort.org/downloads/snortplus/daq-2.2.2.tar.gz
tar -xvzf daq-2.2.2.tar.gz
cd daq-2.2.2
./configure
make
sudo make install

更新共享库:

sudo ldconfig

从github下载最新的Snort3并安装:

cd ~/snort_src
git clone git://github.com/snortadmin/snort3.git
cd snort3
./configure_cmake.sh --prefix=/opt/snort
cd build
make
sudo make install

注意:需要把git://github.com/snortadmin/snort3.git改为https://github.com/snortadmin/snort3.git,否则会报拒绝连接
这里写图片描述
可选择的:如果你有兴趣看Snort构建时可以配置的附加选项,那么需要运行./configure cmake.sh –help命令来获得一个完整的列表。你可能会对一些选项感兴趣,比如Snort3命令行工具shell–enable-shell)或支持pcap文件大小超过2GB(–enable-large-pcap)。
注意:上面的git clone命令是从github下载的Snort++最新版(这可能是你想要的)。如果你想专门下载Snort++ build 241的话(在Snort官网上能获得的一个包版本),您需要用如下所示的git clone命令来下载特定版本。

# 如果你想要build 241版本的话可以执行以下命令
#cd ~/snort_src
#wget https://github.com/snortadmin/snort3/archive/BUILD_241.tar.gz
#tar -xvzf BUILD_241.tar.gz
#cd snort3-BUILD_241/
# configure and install Snort as above

我怀疑你想这么做,但如果你有问题,这可以帮助你确认是否是一个新的Snort版本安装方式不同的问题。Snort++仍然在开发中,并且每个版本的依赖关系在不断改变。
接下来,我们想测试下Snort运行状况:

noah@snort3:~$ /opt/snort/bin/snort -V
 ,,_     -*> Snort++ <*-
o"  )~   Version 3.0.0 (Build 241) from 2.9.11
 ''''    By Martin Roesch & The Snort Team
         http://snort.org/contact#team
         Copyright (C) 2014-2017 Cisco and/or its affiliates. All rights reserved.
         Copyright (C) 1998-2013 Sourcefire, Inc., et al.
         Using DAQ version 2.2.2
         Using LuaJIT version 2.0.4
         Using OpenSSL 1.0.2g 1 Mar 2016
         Using libpcap version 1.7.4
         Using PCRE version 8.38 2015-11-23
         Using ZLIB version 1.2.8
         Using FlatBuffers 1.7.0
         Using Hyperscan version 4.6.0 2017-12-03
         Using LZMA version 5.1.0alpha

最后是创建一个snort的链接到/usr/sbin是一个很好的习惯:

sudo ln -s /opt/snort/bin/snort /usr/sbin/snort
3 运行Snort

Snort 3需要配置几个环境变量才能正确运行。我们将这些变量暂时存储在当前会话并且永久保存到本地.bashrc文件中(需要注意的是LUA路径不能保存到/etc/profile文件中,因为这样的话它不会正确加载。你将需要为每个需要运行Snort的用户在这个系统上运行这些线路):

# 在.bashrc文件中添加
export LUA_PATH=/opt/snort/include/snort/lua/\?.lua\;\;
export SNORT_LUA_PATH=/opt/snort/etc/snort
# 或者直接运行下面的命令
sh -c "echo 'export LUA_PATH=/opt/snort/include/snort/lua/\?.lua\;\;' >> ~/.bashrc"
sh -c "echo 'export SNORT_LUA_PATH=/opt/snort/etc/snort' >> ~/.bashrc"

注意:还需要重要的一步就是使.bashrc文件生效,需执行source .bashrc命令。原文章中没有提到

将这些变量添加到/etc/sudoers文件中当你使用sudo时:

sudo visudo

在结尾添加以下这行:

Defaults env_keep += "LUA_PATH SNORT_LUA_PATH"

使用ctrl-x退出,保存时提示按y,然后按enter键来保存/etc/sudoers.tmp(会自动复制到/etc/sudoers文件中去)。
现在可以用默认配置文件来测试Snort了:

/opt/snort/bin/snort -c /opt/snort/etc/snort/snort.lua

你应该会看到输出内容然后以下面的结束:

Snort successfully validated the configuration.
o")~ Snort exiting
4 安装位置

注意安装的位置:
当我们在前面执行./configure –prefix=/opt/snort命令时我们就告诉了snort将所有的文件安装在了/opt/snort文件夹下了。如果你忽略了这个配置选项,snort将安装到相同的文件夹中,不过这一次是在根文件夹中。例如本该安装到/opt/snort/bin目录中的文件会被安装到/bin目录下,本该安装到/opt/snort/etc下的文件会被安装到/etc目录中等。这些是更常见的正常安装位置,而不是测试安装。

noah@snort3:~$ tree /opt/snort -L 3
/opt/snort
 bin
    fbstreamer
    snort
    snort2lua
    u2boat
    u2spewfoo
 etc
    snort
       file_magic.lua
       snort_defaults.lua
       snort.lua
 include
    snort
       actions
       codecs
       daqs
       decompress
       detection
       events
       file_api
       flow
       framework
       hash
       helpers
       log
       lua
       main
       managers
       mime
       network_inspectors
       packet_io
       profiler
       protocols
       pub_sub
       search_engines
       sfip
       stream
       time
       utils
 lib
    pkgconfig
       snort.pc
    snort
       daqs
       snort.cmake
       snort-noconfig.cmake
 share
    doc
       snort
39 directories, 11 files

该文件夹包含以下文件:
fbstreamer: 一个实用程序来访问flatbuffer格式生成的统计数据。
snort: Snort二进制。
snort2lua: 将Snort 2.9.x.x配置文件转化成3.x的工具。
u2boat: U2boat是一个将unified2文件转换成不同格式的工具。
u2spewfoo: U2SpewFoo是一个将unified2文件的内容标准化输出的轻量级工具。

此外,以下文件夹被创建并使用:
/opt/snort/bin: Snort二进制文件和一些支持文件。
/opt/snort/etc/snort: Snort的配置文件。
/opt/snort/include/snort: 所有的文件包括Snort。
/opt/snort/lib/pkgconfig: Snort的pkgconfig文件(为Snort编译细节)。
/opt/snort/share/doc/snort: 安装的Snort版本一些文档。

5 Snort规则

Snort3比Snort2有更多的选项,而用PulledPork或者手动下载的正常规则将会测试你可能想专门为Snort3创建规则而手动下载的社区专门规则。你可以从snort网站手动下载snort3特定社区规则:

cd ~/snort_src/
wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz
tar -xvzf snort3-community-rules.tar.gz
cd snort3-community-rules
sudo mkdir /opt/snort/etc/snort/rules
sudo cp snort3-community.rules /opt/snort/etc/snort/rules/
sudo cp sid-msg.map /opt/snort/etc/snort/rules

现在测试规则能否正确加载:

/opt/snort/bin/snort -c /opt/snort/etc/snort/snort.lua -R /opt/snort/etc/snort/rules/snort3-community.rules

输出内容中应该显示加载规则数,如下片段:

Loading rules:
Loading /opt/snort/etc/snort/rules/snort3-community.rules:
Finished /opt/snort/etc/snort/rules/snort3-community.rules.
Finished rules.
--------------------------------------------------
rule counts
rule counts
       total rules loaded: 829
               text rules: 829
            option chains: 829
            chain headers: 46
--------------------------------------------------
...

注意:在snort3-community的许多规则被注释掉了。主要的一些原因是一些规则可能会产生误报,所以Snort团队已经注释掉了这些规则,因为它们可能会淹没你的日志或导致通信中断如果你运行Snort在NIPS模式下的话。取消这些规则,请使用以下命令:

sudo sed -i '17,$s/^# //' /opt/snort/etc/snort/rules/snort3-community.rules

你可能想运行Snort使用以下标志检测问题,warn-allpedantic标志。来自Snort3手册:
警告将不会输出除非–warn-被指定。–warn-all能够指定所有的警告,–pedantic指定致命的警告*
当你运行Snort时不会想用–pedantic标志,因为简单的flowbit警告(flowbit在一个规则中被设置但是却不被使用是一个常见的问题)将产生警告而引起Snort报错并退出。这是一个很好的标志当用于测试你的配置。

6 Snort内建规则

为了使解码器和检测员告警(这些检测恶意流量却不能轻易的发现普通规则),我们需要在位于/opt/snort/etc/snort/目录下的snort配置文件snort.lua中启动这一项:
需要sudo权限来编辑你的snort.lua配置文件:

sudo vi /opt/snort/etc/snort/snort.lua

在第190行修改enable_builtin_rules为true。开始有两个连字符是注释(或命令被注释掉了)而不是解析snort时加载。删除前两个连字符使enable_builtin_rules启用这个选项。snort.lua文件的缩进行必须是四个空格(不是一个制表符)否则配置不会被加载。你的ips模块应该是这个样子(缩短是为了清晰):

ips =
{
    -- use this to enable decoder and inspector alerts
    enable_builtin_rules = true,
}

现在开始测试:

/opt/snort/bin/snort -c /opt/snort/etc/snort/snort.lua

你应该能看到builtin rules被加载(我们没有加载社区规则,被以text rules显示):

--------------------------------------------------
rule counts
       total rules loaded: 466
            builtin rules: 466
            option chains: 466
            chain headers: 1
--------------------------------------------------

现在让我们加载两种规则(内嵌的和社区的规则):

/opt/snort/bin/snort -c /opt/snort/etc/snort/snort.lua -R /opt/snort/etc/snort/rules/snort3-community.rules

你将会看到builtin rules和text rules都将被加载:

--------------------------------------------------
rule counts
       total rules loaded: 1295
               text rules: 829
            builtin rules: 466
            option chains: 1295
            chain headers: 46
--------------------------------------------------
7 安装OpenAppID

OpenAppID允许应用程序层流量的识别。你可以创建规则在application-layer流量上起作用(例如屏蔽facebook),并为每种类型的流量监测进行日志流量统计。Snort团队已经上传了一个在社区协助下把探测器打成一个叫做 Application Detector Package的包,你可以去下载并安装。首先下载OpenAppID探测器包:

cd ~/snort_src/
wget https://www.snort.org/downloads/openappid/6329 -O OpenAppId-6329
tar -xzvf OpenAppId-6329
sudo cp -R odp /opt/snort/lib/

现在我们需要编辑Snort配置文件来指向这个odp目录:

sudo vi /opt/snort/etc/snort/snort.lua

在第113行(你的行号可能略有不同)你会看到appid = entry。你会想在这里添加app_detector_dir选项,指向odf文件夹的父文件夹。它应该是这样的:

appid =
{
    app_detector_dir = '/opt/snort/lib',
}

需要注意的是你必须有四个空格缩进符(而不是一个制表符)。现在我们要测试这个配置文件能否被正确加载:

/opt/snort/bin/snort -c /opt/snort/etc/snort/snort.lua --warn-all

你应该看到的输出:

...
Snort successfully validated the configuration (with 0 warnings).
o")~ Snort exiting

现在加载Snort OpenAppID探测器以及所有规则(我们省略pedantic标志,因为这些规则将抛出非致命并且可以忽略的警告):

/opt/snort/bin/snort -c /opt/snort/etc/snort/snort.lua -R /opt/snort/etc/snort/rules/snort3-community.rules \
--warn-all

创建一个简单的规则来测试OpenAppID是否正常工作:

sudo touch /opt/snort/etc/snort/rules/local.rules
sudo vi /opt/snort/etc/snort/rules/local.rules

用下面的内容:

alert tcp any any -> any any ( msg:"Facebook trafic Seen"; appids:"Facebook";sid:10000001; )

现在测试,以确保规则正确加载(正确格式化的):

/opt/snort/bin/snort -c /opt/snort/etc/snort/snort.lua -R /opt/snort/etc/snort/rules/local.rules --warn-all

如果你向上滚动输出,你应该看到这一个规则加载成功。现在,让我们在一个接口上运行snort在检测模式(改变接口eth0低于匹配名称),在控制台上打印警报:

sudo /opt/snort/bin/snort -c /opt/snort/etc/snort/snort.lua -R /opt/snort/etc/snort/rules/local.rules \
-i eth0 -A alert_fast -s 65535 -k none

-k none标志告诉Snort忽略坏的校验,-s 65535阻止Snort删除超大的包。流和碎片弹解码器将删除坏的校验和数据包,数据包将不会被OpenAppID探测器处理。通过包含这些标志,我们确保带有坏校验的数据包会被处理。
现在打开另一个窗口(打开一个新的终端或者ssh会话),使用wget连接facebook:

wget facebook.com

从第一个控制台窗口你会看到警报输出类似如下:

08/0519:13:45.451834 [∗∗] [1:10000001:0] ”Facebook trafic Seen” [∗∗] [Priority: 0] [AppID: Facebook] {TCP} 157.240.1.35:443 −> 10.0.0.104:33882
08/0519:13:45.451842 [∗∗] [1:10000001:0] ”Facebook trafic Seen” [∗∗] [Priority: 0] [AppID: Facebook] {TCP} 10.0.0.104:33882 −> 157.240.1.35:443

注意:可是我输出的却和原文章有出入(已翻墙)
这里写图片描述
使用ctrl-c来停止Snort。
如果你想收集OpenAppID统计信息(每个探测器探测到了多少流量),您将需要在snort.lua文件中使其生效,并运行Snort带有-l标志(日志目录)。
首先创建一个日志目录:

sudo mkdir /var/log/snort

现在修改snort.lua文件来允许appid探测器进行日志统计(第113行):

appid =
{
    app_detector_dir = '/opt/snort/lib',
    log_stats = true,
}

现在运行Snort,并且监听一个接口,并将日志信息加载到/var/log/snort文件夹下:

sudo /opt/snort/bin/snort -c /opt/snort/etc/snort/snort.lua -R /opt/snort/etc/snort/rules/local.rules \
-i eth0 -A alert_fast -k none -l /var/log/snort

在收集数据并停止Snort后,你将会看到appid_stats.log在/var/log/snort文件夹下。改文件是由root所拥有,所以你需要添加可读权限:

sudo chmod a+r /var/log/snort/appid_stats.log

现在你可以看看snort的协议数据收集:

noah@snort3:~/snort_src$ cat /var/log/snort/appid_stats.log
1513397914,DNS,296,442
1513397914,Facebook,2065,5356
1513397914,HTTP,543,586
1513397914,Wget,543,586
1513397914,HTTPS,1522,4770
1513397914,SSL client,1522,4770
1513397914,ICMP for IPv6,156,0

注意:我这里用的是wget http://www.baidu.com,产生的appid_stats.log内容为
这里写图片描述
这是一个以逗号分隔的文件,在这个顺序中分别显示时间(unixtime),探测器,发送字节(tx)和接收字节(rx)。如果你不想要这个收集的数据,你可以在snort.lua配置文件中禁用日志统计选项。
关于探测器的更多信息,你可以查看OpenAppID detector Guide

8 安装示例插件

如果你想开发Snort插件,您需要编译和安装snort-extras包。如果你遵循本文档安装指令的话,snort-extras目录将会在snort3目录下(否则你可以从snort官网上下载)。
进入extras目录,然后编译并安装:

cd ~/snort_src/snort3/extra
export PKG_CONFIG_PATH=/opt/snort/lib/pkgconfig/
./configure_cmake.sh --prefix=/opt/snort
cd build
make
sudo make install

如果你想使用Snort新添加的插件,你需要添加参数–plugin path* –script path*参数选项(插件被写在c++或lua中)。
例如,加载一个alert_ex插件:

/opt/snort/bin/snort --plugin-path /opt/snort/lib/snort_extra -A alert_ex --warn-all

(warn-all标志在这里是获取所有的错误)。
如果你想测试一个lua脚本插件:

/opt/snort/bin/snort --script-path /opt/snort/lib/snort_extra -A lualert --warn-all

看到所有可用(不含snort-extras包中的插件)的插件,使用以下命令:

/opt/snort/bin/snort --list-plugins

现在可以看到snort所有新插件包括那些在extras目录中的插件:

/opt/snort/bin/snort --script-path /opt/snort/lib/snort_extra --plugin-path /opt/snort/lib/snort_extra \
--list-plugins

请参见snort3 extras readme,包括源文件的更多信息。
为了看到extras文件夹下可用的新插件,我们先展现所有的默认日志模块,然后再加上extras中的:

noah@snort3:~$ /opt/snort/bin/snort --list-plugins | grep logger
logger::alert_csv v0 static
logger::alert_fast v0 static
logger::alert_full v0 static
logger::alert_sfsocket v0 static
logger::alert_syslog v0 static
logger::log_codecs v0 static
logger::log_hext v0 static
logger::log_pcap v0 static
logger::unified2 v0 static

noah@snort3:~$ /opt/snort/bin/snort --script-path /opt/snort/lib/snort\_extra \
--plugin-path /opt/snort/lib/snort\_extra --list-plugins | grep logger
logger::alert_csv v0 static
logger::alert_ex v0 /opt/snort/lib/snort_extra/loggers/alert_ex.so
logger::alert_fast v0 static
logger::alert_full v0 static
logger::alert_json v0 /opt/snort/lib/snort_extra/loggers/alert_json.so
logger::alert_sfsocket v0 static
logger::alert_syslog v0 static
logger::alert_unixsock v0 /opt/snort/lib/snort_extra/loggers/alert_unixsock.so
logger::log_codecs v0 static
logger::log_hext v0 static
logger::log_null v0 /opt/snort/lib/snort_extra/loggers/log_null.so
logger::log_pcap v0 static
logger::unified2 v0 static
9 Snort++开发人员指南

如果你有兴趣开发snort插件或模块,你需要构建snort++开发人员指南。这需要几个软件包(在本指南之前可选的文档包)。需要注意的是这些包将近800MB大小:

sudo apt-get install -y asciidoc dblatex source-highlight w3m

现在构建指南:

cd ~/snort_src/snort3
./doc/dev_guide.sh

现在在你的当前目录下有dev_guide.html了(snort_src/snort3)。

10 加载示例PCAP文件后生成的报警信息输入到CSV文件中

如果你出于测试目的而正在寻找可用于从你的内嵌和社区规则生成警报的PCAP文件,我发现elcabezzonn的github库是一个不错的选择。首先从克隆开始:

cd ~
git clone https://github.com/elcabezzonn/Pcaps.git

正如上面所讨论的部分规则,许多规则在snort3-community规则中被注释掉了。为了从pcap文件生成尽可能多的不同类型的警报,你应该通过移除每一行的斜杠开始来取消这些规则。想要做到这一点,可使用以下命令:

sudo sed -i '17,$s/^# //' /opt/snort/etc/snort/rules/snort3-community.rules

本质上这个sed命令是开始看第17行(在版本信息之后)并删除哈希标记和下面的每一行的空间。
现在我们运行snort,告诉它从该目录加载所有pcap文件和所有社区规则并在控制台上打印警告信息(我用了所有的标志如果你向下滚动):

/opt/snort/bin/snort -c /opt/snort/etc/snort/snort.lua --pcap-filter \*.pcap --pcap-dir ~/Pcaps \
-R /opt/snort/etc/snort/rules/snort3-community.rules -A alert_fast -s 65535 -k none -q

你可以通过wc -l命令来统计输出了多少的行数来知道可选的确定检测到了多少警报。当我运行这个命令后知道了snort产生了277条警报。
你可以修改最后一个命令(没有wc命令)输出任何插件,通过命令行配置或在snort.lua(第250行)文件中进行修改。例如,使用警报csv插件将警报数据保存到一个csv文件中,你将在snort.lua(第253行)文件中这样修改:

alert_csv =
{
    file = true,
}

然后运行snort如下:

sudo /opt/snort/bin/snort -c /opt/snort/etc/snort/snort.lua --pcap-filter \*.pcap --pcap-dir ~/Pcaps \
-R /opt/snort/etc/snort/rules/snort3-community.rules -l /var/log/snort -s 65535 -k none -q

我们这里列举了很多,让我们讲解一下这个命令:
sudo /opt/snort/bin/snort
这里我们使用sudo命令来运行snort二进制,因为我们想写往/var/log/snort文件夹下写入文件
-c /opt/snort/etc/snort/snort.lua
这是我们的snort.lua配置文件
–pcap-filter *.pcap
这个是告诉snort该如何识别位于pcap目录下的pcap文件
–pcap-dir /Pcaps
这个是告诉snort去哪里寻找pcap文件
-R /opt/snort/etc/snort/rules/snort3-community.rules
这是加载规则文件(除了builtin rules)
-l /var/log/snort
snort应该保存日志文件的位置
-s 65535
设置snaplen为了不让snort删除超大的包
-k none
忽略坏校验,否则snort将删除带有坏校验的包,而且他们不会被评估。
-q
安静模式,不打印头
你会注意到我们没有在命令行指定输出插件,这是因为我们在snort.lua中配置了alert_csv插件,在命令行上指定一个优先输出于任何在snort.lua配置的插件。
运行命令后,你应该会在/var/log/snort目录下看到 alert_csv.txt。你要让这个文件可读:

sudo chmod a+r /var/log/snort/alert_csv.txt

使用wc命令,我们可以看到有多少警报从这些pcap文件中生成(当我们输出到控制台这应该是一样的):

noah@snort3:~$ wc -l /var/log/snort/alert_csv.txt
277 /var/log/snort/alert_csv.txt

注意:我的却和原文章有出入
这里写图片描述
这个插件还有更多的选择,更多信息可以去snort3手册中查找。

11 下一步

有关运行Snort 3和编译选项的更多信息请参见Snort 3手册。强烈推荐去阅读手册,因为Snot 3和Snort 2.9.9.x系列有很大的不同。配置文件和规则都是不同的,并且两个版本之间不兼容。老的Snort 2版本的配置文件和规则可以转换为Snort3的格式通过使用snort2lua等命令。
在我的个人网站可以找到相关的教程,包括在Ubuntu系统上的全功能snort配置,包括Barnyard2、PulledPork、BASE、snort作为一个NIPS(删除或阻断恶意流量)的配置和OpenAppID layer 7应用程序检测的配置。这些教程在SublimeRobots.com上。
如果你想将告警信息加载到SIEM(Splunk、ELK或者其他组件中),Snort团队正在开发一个将警报信息输出为JSON格式的日志目录的JSON插件,这是非常适合摄取这些类型的工具。警报json插件的实例包和一个很好的指南设置可以在这篇文章中找到:Snort 3.0 with ElasticSearch, LogStash, and Kibana (ELK)
反馈:请给我反馈遇到的问题和建议来修改本指南:Noah@SublimeRobots.com。反馈可以帮助我更新这些指南,帮助我识别常见问题和人们运行这些指令时遇到的问题。

注:原文章地址(在snort官网可下载该文件):https://www.snort.org/documents/snort-3-0-for-ubuntu-14-and-16

pdf文件我已上传到CSDN:http://download.csdn.net/download/m0_37739193/10247710
我自己的测试环境:Ubuntu 14.04 64位(按原文章的命令和步骤成功安装了Snort 3)

由于本人英语水平有限,可能翻译的有瑕疵,还望广大读者能够给出建议和修改意见。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值