在Debian上,如何配置Snort

・13 分钟阅读

Snort是一个免费的网络入侵检测系统(IDS)。目前,snort有针对Fedora,CentOS,FreeBSD和基于windows的系统的包,操作系统之间的确切安装方法不同。在本教程中,我们将直接从Snort的源代码安装,本指南是为Debian编写的。

更新,升级和重新启动

在我们实际获得Snort源之前,我们需要确保我们的系统是最新的,我们可以通过以下命令来执行这个操作。


sudo apt-get update
sudo apt-get upgrade -y
sudo reboot

预安装配置

一旦你的系统重新启动,我们需要安装一些软件包,以确保我们可以安装SBPP ,


sudo apt-get install flex bison build-essential checkinstall libpcap-dev libnet1-dev libpcre3-dev libnetfilter-queue-dev iptables-dev libdumbnet-dev zlib1g-dev -y

一旦安装了所有软件包,你就需要为源文件创建一个临时目录,我将使用/usr/src/snort_src要创建此文件夹,你需要以root用户身份登录,或者拥有sudo权限- root只是让它变得更容易。


sudo mkdir /usr/src/snort_src
cd /usr/src/snort_src

安装数据采集库(DAQ )

在获取Snort源代码之前,先安装DAQ ,安装是简单的。


wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz

从归档文件中提取文件。


tar xvfz daq-2.0.6.tar.gz

更改为DAQ目录。

 
cd daq-2.0.6

 

配置和安装DAQ 。


./configure; make; sudo make install

最后一行,将首先执行./configure ,然后它将执行make ,最后,它将执行make install ,我们在这里使用较短的语法只是为了节省一点时间。

安装Snort

我们想确保我们再次在/usr/src/snort_src目录中,所以,请确保以下列目录更改为:


cd /usr/src/snort_src

现在我们已经在源目录中了,我们将下载源代码的tar.gz文件,在撰写本文时,Snort的最新版本是2.9.8.0


wget https://www.snort.org/downloads/snort/snort-2.9.8.0.tar.gz

实际安装snort的命令与用于DAQ的命令非常类似,但是它们有不同的选项。

提取Snort源文件。


tar xvfz snort-2.9.8.0.tar.gz

更改到源目录。

 
cd snort-2.9.8.0

 

配置和安装源。


 ./configure --enable-sourcefire; make; sudo make install

Snort安装后

安装Snort之后,我们需要确保共享库是最新的,我们可以使用以下命令执行这个操作:

 
sudo ldconfig

 

完成该操作后,测试你的Snort安装:

 
snort --version

 

如果此命令不起作用,你需要创建一个符号链接,你可以通过键入以下内容来完成这个操作:


sudo ln -s /usr/local/bin/snort /usr/sbin/snort
snort --version

生成的输出将类似于以下内容:


 ,,_ -*> Snort! <*-
 o" )~ Version 2.9.7.5 GRE (Build 262)
 '''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
 Copyright (C) 2014-2015 Cisco and/or its affiliates. All rights reserved.
 Copyright (C) 1998-2013 Sourcefire, Inc., et al.
 Using libpcap version 1.6.2
 Using PCRE version: 8.35 2014-04-04
 Using ZLIB version: 1.2.8

不使用root权限

现在已经安装了snort,我们不希望它作为root运行,所以,我们需要创建snort用户和组,要创建新的用户和组,可以使用以下两个命令:


sudo groupadd snort
sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort

由于我们已经使用源安装了程序,所以,我们需要创建配置文件和snort规则。


sudo mkdir /etc/snort
sudo mkdir /etc/snort/rules
sudo mkdir /etc/snort/preproc_rules
sudo touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules /etc/snort/rules/local.rules

在创建目录和规则之后,现在需要创建日志目录。


sudo mkdir /var/log/snort

最后,我们还需要一个地方来存储动态规则,然后才能添加任何规则。


sudo mkdir /usr/local/lib/snort_dynamicrules

创建完所有以前的文件后,对它们设置适当的权限。


sudo chmod -R 5775 /etc/snort
sudo chmod -R 5775 /var/log/snort
sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules
sudo chown -R snort:snort /etc/snort
sudo chown -R snort:snort /var/log/snort
sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules

设置配置文件

为了节省大量时间并且不必复制和粘贴所有内容,只需将所有文件复制到配置目录中即可。


sudo cp /usr/src/snort_src/snort*/etc/*.conf* /etc/snort
sudo cp /usr/src/snort_src/snort*/etc/*.map /etc/snort

现在配置文件已经存在,你可以执行以下两种操作之一:

  • 你可以启用Barnyard2
  • 或者你可以只保留配置文件,并有选择地启用所需的规则,

配置

/etc/snort/snort.conf文件中,你需要更改变量HOME_NET ,它应该设置为你的内部网络,这样它就不会记录你自己的网络尝试登录到服务器,这可能是10.0.0.0/24192.168.0.0/16 ,在/etc/snort/snort.conf的45行,将变量HOME_NET更改为网络块的IP值。

在我的网络中,它看起来像这样:


ipvar HOME_NET 192.168.0.0/16

然后,你必须将EXTERNAL_NET变量设置为:

 
any

 

它只是把EXERNAL_NET变成你的HOME_NET

设置规则

/etc/snort/snort.conf文件中104行的某处,你应该看到"var"声明和变量RULE_PATHSO_RULE_PATHPREPROC_RULE_PATHWHITE_LIST_PATHBLACK_LIST_PATH ,它们的值应该设置为我们在Un-rooting Snort中使用的路径。


var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules

设置这些值后,从第548行开始删除或注释掉当前规则。

现在,让我们检查一下你的配置是否正确,你可以用snort验证它。


 # snort -T -c /etc/snort/snort.conf

你将看到类似于以下(为了简洁而截断)的输出。


 Running in Test mode

 --== Initializing Snort ==--
 Initializing Output Plugins!
 Initializing Preprocessors!
 Initializing Plug-ins!
 .....
 Rule application order: activation->dynamic->pass->drop->sdrop->reject->alert->log
 Verifying Preprocessor Configurations!

 --== Initialization Complete ==--

 ,,_ -*> Snort! <*-
 o" )~ Version 2.9.8.0 GRE (Build 229) 
 '''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
 Copyright (C) 2014-2015 Cisco and/or its affiliates. All rights reserved.
 Copyright (C) 1998-2013 Sourcefire, Inc., et al.
 Using libpcap version 1.7.4
 Using PCRE version: 8.35 2014-04-04
 Using ZLIB version: 1.2.8

 Rules Engine: SF_SNORT_DETECTION_ENGINE Version 2.4 <Build 1>
 Preprocessor Object: SF_IMAP Version 1.0 <Build 1>
 Preprocessor Object: SF_FTPTELNET Version 1.2 <Build 13>
 Preprocessor Object: SF_SIP Version 1.1 <Build 1>
 Preprocessor Object: SF_REPUTATION Version 1.1 <Build 1>
 Preprocessor Object: SF_POP Version 1.0 <Build 1>
 Preprocessor Object: SF_DCERPC2 Version 1.0 <Build 3>
 Preprocessor Object: SF_SDF Version 1.1 <Build 1>
 Preprocessor Object: SF_GTP Version 1.1 <Build 1>
 Preprocessor Object: SF_DNS Version 1.1 <Build 4>
 Preprocessor Object: SF_SSH Version 1.1 <Build 3>
 Preprocessor Object: SF_DNP3 Version 1.1 <Build 1>
 Preprocessor Object: SF_SSLPP Version 1.1 <Build 4>
 Preprocessor Object: SF_SMTP Version 1.1 <Build 9>
 Preprocessor Object: SF_MODBUS Version 1.1 <Build 1>

 Snort successfully validated the configuration!
 Snort exiting

既然所有的配置都没有错误,我们就可以开始测试Snort了。

测试Snort

测试Snort最简单的方法是启用local.rules ,这是一个包含自定义规则的文件。

如果你在snort.conf文件中注意到546行周围的某处,则此行存在:


include $RULE_PATH/local.rules

如果你没有它,请在546行前后添加它。然后,你可以使用local.rules文件进行测试,作为基本测试,我只是让Snort跟踪ping请求(ICMP请求),你可以通过在local.rules文件中添加以下行来做到这一点。


 alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001; rev:001;)

在文件中保存之后,保存它,然后继续阅读。

运行测试

你将需要将eno1更改为你的系统正在监听的任何网络接口。


$ sudo /usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eno1

一旦你运行了它,ping这个计算机,你将看到如下所示的输出:


01/07−16:03:30.611173 [**] [1:10000001:0] ICMP test [**] [Priority: 0] 192.168.1.105 -> 192.168.1.104
01/07−16:03:31.612174 [**] [1:10000001:0] ICMP test [**] [Priority: 0] 192.168.1.104 -> 192.168.1.105
01/07−16:03:31.612202 [**] [1:10000001:0] ICMP test [**] [Priority: 0] 192.168.1.105 -> 192.168.1.104
^C*** Caught Int−Signal

你可以按Ctrl+C退出程序,就是这样,Snort已全部设置完毕。

杨和超 profile image