Snort/Daq安装与配置
Snort/Daq 安装与配置
这两天做实验, 在安装配置Snort的时候遇到不少坑. 在这里做个简单的记录, 希望对更多的人有所帮助.
环境: Ubuntu 16.04
Snort 简单介绍
- 说实话,我对Snort 也没有深入的了解, 所以引用了 @百度百科 的解释:
在1998年,Marty Roesch先生用C语言开发了开放源代码(Open Source)的入侵检测系统Snort.直至今天,Snort已发展成为一个多平台(Multi-Platform),实时(Real-Time)流量分析,网络IP数据包(Pocket)记录等特性的强大的网络入侵检测/防御系统(Network Intrusion Detection/Prevention System),即NIDS/NIPS.Snort符合通用公共许可(GPL——GNU General Pubic License),在网上可以通过免费下载获得Snort,并且只需要几分钟就可以安装并开始使用它。snort基于libpcap。
相关软件源码压缩包下载
这里直接提供了资源, 我就是采用以下版本的压缩包. 如果不愿意冒险,想少走一些弯路, 就可以直接在这里下载. 如果有特殊需求, 可以在Snort官网下载其他版本.
解压与安装
- 将这两个安装包解压到合适位置. 我在这里以~/dpdkovs/lab3/ 为例子.
tar xvf snort-2.9.8.0.tar.gz /root/dpdkovs/lab3/ |
- 安装相应的依赖,需要的依赖有很多 : build-essential , libpcap-dev , libpcre3-dev , libdumbnet-dev , flex , bison , zlib1g-dev, liblzma-dev, openssl, libssl-dev,libnghttp2-dev
这些库用包管理器很容易就安装好了, 但是麻烦之处在于, 编译安装还需要 automake-1.14.1 这个库. 虽然这个库本身也可以用包管理器安装, 但是烦人之处在于, 使用包管理器安装的automake 版本是 1.15. 我曾经试过1.15, 甚至是1.14 都不能编译通过. 必须是1.14.1版本才可以. 这里直接提供 1.14.1版本的压缩包. 大家不用四处找啦~
为了方便, 和之前两个安装包安装到同一个目录吧.
tar xvf automake-1.14.1.tar.gz
cd automake-1.14.1/如果就这样编译的话, 还是会报错的, 因为没有 autoconf ,是无法编译automake的, 所以编译之前,应该先安装autoconf. 顺便, 把之前提到的所有依赖全部安装好吧
## 现在是root |
## Ubuntu 16 only (not Ubuntu 14) |
开始编译安装
现在所有依赖基本上安装好了,可以开始一个一个安装了.
安装顺序 automake -> daq -> snort 其实后面两个顺序没有必然要求
- 安装automake
## 现在应该在automake 目录下, 不在的话手动切过去 |
- 安装daq
cd ../daq-2.0.6/ |
- 安装snort
cd ../snort-2.9.8.0 |
由于我们把所有适当的依赖提前安装好了, 所以编译过来应该顺风顺水.
配置Snort
安装好之后, 必须配置Snort才能正确使用.
- 执行下面的命令来更新 共享库. 如果跳过这步, 可能会GET AN ERROR!
ldconfig |
- 在/usr/sbin 中创建一个软链接
ln -s /usr/local/bin/snort /usr/sbin/snort |
- 测试Snort. 传递 -V 参数给它, 你会得到这样的结果. 说明安装成功了! 前面的小猪是Snort的logo. 是不是和我一样可爱哈哈哈~
snort -V |
以为这样就结束了? NO~ 配置Snort,让它以NIDS模式运行. Follow me!
- 在/etc 目录下, 建立起我们的配置架构
# Create the Snort directories: |
我们需要将一些配置文件和动态预处理器cp一份到/etc的相应目录下.这些配置文件是:
- classification.config
- file magic.conf
- snort.conf
- threshold.conf
- attribute table.dtd
- gen-msg.map
- unicode.map
cd ~/snort_src/snort-2.9.9.0/etc/ ## 切换到Snort源码的etc 目录
cp *.conf* /etc/snort
cp *.map /etc/snort
cp *.dtd /etc/snort
cd ~/snort_src/snort-2.9.9.0/src/dynamic-preprocessors/build/usr/local/lib/snort_dynamicpreprocessor ##根据你的文件树来
cp * /usr/local/lib/snort_dynamicpreprocessor/
检验下配置, 现在/etc目录下的配置树应该是这样的
## 执行tree命令 |
- 现在, 我们需要配置Snort的主配置文件, /etc/snort/snort.conf. 当Snort 运行的时候以它为参数, Snort就会以NIDS的模式运行.
我们需要注释掉在Snort配置文件中引用的所有单独的规则文件,因为我们不是单独下载每个文件,而是使用PulledPork来管理我们的规则集,这些规则集将所有规则组合成一个文件。下面这一行将注释掉我们的snort.conf文件中的所有规则集(从540行开始有大约100行注释掉):
sed -i "s/include \$RULE\_PATH/#include \$RULE\_PATH/" /etc/snort/snort.conf |
现在我们将手动更改在snort.conffi乐一些设置,使用你喜欢的编辑器:
vim /etc/snort/snort.conf ##Life is short, I select vim. Hhhhhhhhhhhhh~ |
第45行,HOME_NET应该匹配你的内部网络。在下面的例子中,我们的HOME NET是192.168.122.1,带有一个24位的子网掩码(255.255.255.0):
ipvar HOME_NET 192.168.122.1/24 |
在第104行开始,在snort.conf中设置以下文件路径:
var RULE_PATH /etc/snort/rules |
为了使测试Snort变得简单,我们要启用local.rules文件,在那里我们可以添加Snort可以提醒的规则。从546行取消注释(去掉散列符号),看起来像这样:
include $RULE_PATH/local.rules ## 把include前面的#去掉 |
一旦配置文件准备好了,我们将会让Snort验证它是一个有效的文件,并且所有必要的文件都是正确的。
snort -T -i eth0 -c /etc/snort/snort.conf |
- 一旦执行到这一步,说明你的Snort 已经完全配置好了. 接下来我们可以添加自己的rule. 这就是你的事情了.
以inline模式监听两个网卡的流量
snort -i p2p1:p2p2 --daq afpacket --daq-mode inline -c /etc/snort/snort.conf -Q -f 'not ip' |
总结
按照惯例,做一个小的总结. 这是一个Snort的配置教程. 参考的官方的文档. 如果有任何问题, 可以写邮件到我的邮箱, 邮箱地址在我的名片下面.
Bye~