自:https://www.newbyter.net/?p=1403
一、编译
编译是在Ubuntu 11.04 (32bit)下完成的,Ubuntu采用默认安装方式。
Snort本身用到了一些第三方的库,这些库默认在Ubuntu下并没有安装,因此需要我们自己手动安装。具体包括:libdnet-1.12、libpcap-1.0.0、pcre-8.12、zlib-1.2.5等,除此之外,还需要安装build-essential、flex和bison包。
这些第三方库的编译安装比较简单,一般只需要执行以下三个命令即可:
./configure
make
sudo make install
当所依赖的包和库均已安装完毕后,就可以编译安装snort了。
Snort的源码可以从www.snort.org获得,本文使用的snort源码版本为2.9.0.5,下载后的压缩包名为snort-2.9.0.5.tar.gz。另外,还应下载daq源码,因为snort在编译时需要用到该库。daq在snort的官方站点也直接提供了源码下载。本文使用的daq版本为0.5,下载后的压缩包名为daq-0.5.tar.gz。最后,需要下载snort的规则库,因为我们需要snort工作在IDS模式下,这需要提供相应的入侵检测规则库。幸运的是,snort官方同样提供了规则库下载,不过分为收费版本和免费版本。只需要注册一个免费的账户就可以下载免费版本的规则库了。本文使用的版本库下载后的压缩包名为snortrules-snapshot-2905.tar.gz。编译时并不需要用到规则库,运行时才会用到。
接下来是snort的编译过程,直接./configure是可以的,但是这样编译出来的snort一些功能没有启用,不能满足我们的需要,所以必须使用一些配置选项,具体如下:
./configure –enable-ipv6 –enable-gre –enable-mpls –enable-targetbased –enable-decoder-preprocessor-rules –enable-ppm –enable-perfprofiling –enable-zlib –enable-active-response –enable-normalizer –enable-reload –enable-react –enable-flexresp3
完毕后,使用 make 命令进行编译,编辑完毕后使用 sudo make install 完成安装。
下面是编译过程中的截图:
【图1】snort编译中
【图2】snort编译完毕
二、安装和运行
编译snort成功后,执行 sudo make install 就顺利安装了。snort将会被安装到 /usr/local 目录下。
接下来要让snort运行起来。现在需要解压出刚才下载的snort规则库压缩包,假设解压后的文件夹名字叫做snort-rules-2905,该文件夹下的etc目录下有一个snort.conf文件,这个文件里面提供了一些默认配置,对本文来说是足够了,但是要运行起来,还有一个细节需要修改:
查找 compress_depth 20480 decompress_depth 20480 并将其中的两个20480 都替换为 65535
修改后记得保存一下。然后还需要将 snort-rules-2905/so_rules/precompiled/Ubuntu-10-4/i386/2.9.0.5 文件夹拷贝到 /usr/local/lib 下,并更名为 snort_dynamicrules。
完成上面的步骤后,就可以准备开始运行snort了。
打开控制台,切换到 /usr/local/bin 目录下,执行:
sudo ./snort -dev -l /home/jian/tmp/log -h 192.168.1.0/24 -c /home/jian/soft/snort-rules-2905/etc/snort.conf
其中 -l 参数指明了日志文件的存放位置,-h 参数指明了检测的网段,-c 参数指明了配置文件的位置。
如果运行成功,将会显示类似下面的画面:
【图3】成功运行snort
三、调试
为了方便分析snort的源码,以及进行后续开发,一个方便的调试和开发环境是相当重要的。本文选择采用Eclipse IDE for C/C++ Developers (下文简称Eclipse)作为调试和开发环境。
首先打开Eclipse,不过需要以管理员权限打开,原因是snort在以IDS模式运行时需要管理员权限,如果直接打开则Eclipse运行在普通用户权限下,虽然能编译,但是运行snort将失败。解决这一问题有多种方法,但是直接以管理员权限运行Eclipse是一个比较简单直接的解决办法。
具体为:切换到eclipse所在的目录下,执行 sudo ./eclipse 即可。
打开Eclipse后,依次选择菜单 File → New → Project,然后在弹出的对话框中,选择C/C++ 分类下的Makefile Project with Existing Code,如下图:
【图4】选择项目类型
然后点击 Next,进入下一步。这一步需要告诉Eclipse我们的snort源码在哪个位置,并选择编译器类型。编译器类型我们选择Linux GCC,如下图所示:
【图5】定位snort源码位置并选择编译器类型
完毕后点击Finish,Eclipse就会立刻开始编译Snort的源码。
Eclipse编译源码是直接根据我们之前在控制台下切换到snort源码目录执行的./configure(带相应参数)后生成的makefile文件来编译的,因此需要确保Eclipse在编译之前我们就已经手动调用了./configure(带相应参数)已经生成了正确的makefile文件。
完成至此,已经离最后的成功之差一步了:
打开Debug Configurations,并切换到Arguments选项卡,输入:
-dev -l /home/jian/tmp/log -h 192.168.1.0/24 -c /home/jian/soft/snort-rules-2905/etc/snort.conf
如图:
【图6】配置Debug Configurations
好了,点击Apply按钮,然后Close即可。
同样的,也应该配置Run Configurations,这里不再赘述。
通过以上配置,我们就可以开始调试snort源码了。也能够随心所欲的修改snort中的源码并重新编译,进行各种实验了。