Snort作为常见的支持分布式的网络入侵检测系统(NIDS),能够进行实时网络流量分析并记录各类攻击行为和相关网络数据包。BASE(Basic Analysis and Security Engine)是基于PHP的广泛使用的一种高效Snort分析查询系统。虽然这两者配合安装配置有些复杂,但是因为其比较灵活,扩展性好,只要配置使用得当,也适合用来构建校园网入侵检测平台。
Snort 支持多种操作系统(Windows/Linux/Solaris等),源代码和安装包可以从 http://www.snort.org/dl/ 获取,由于Snort版本一直都在持续更新,以下介绍以 2.8.0 版本为例。综合性能和功能考虑,不建议在Windows下安装Snort。可以选择的Linux发行版本,推荐CentOS、Fedora、Redhat。虽然Snort都有 rpm 包提供,安装比较方便,不过从源代码编译会更加灵活和便于进行优化。
下面简单介绍在一台CentOS下从源码编译Snort和配置BASE的全过程。
下文数据库选用了Mysql,Snort也支持连接SQLServer,PostgreSQL,Oracle等数据库。本文对搭建一个入侵检测平台作了最基本的描述,实际过程中还会碰到各种问题,您可以通过阅读下载的源代码里的相关文件以及访问 http://www.snort.org/docs/ 来获得更多的信息和支持。
安装之前确认要有Mysql系列支持和php-pear支持,如果没有,推荐用yum 安装
# yum install mysql*
# yum install php-gd
# yum install php-pear
# pear install Image_Color
如果需要 Image_Graph, Image_Canvas 等进行绘图统计, 这些组件
可以去 http://pear.veggerby.dk/download/ 下载再安装。
# pear install Image_Canvas-0.3.0.tgz
# pear install Image_Graph-0.7.2.tgz
编译安装支持输出到Mysql数据库的Snort
# tar zxvf snort-2.8.0.tar.gz /* 解压缩下载下来的 Snort源码包 */
# cd snort-2.8.0 /* 进入解压缩好的目录编译安装 */
# ./configure --with-mysql=/usr /* 增加支持输出告警信息到 Mysql 数据库 */
# make /* 编译 */
# make install /* 安装 */
# snort –V /* 如果出现以下界面,说明安装成功 */
,,_ -*> Snort! <*-
o" )~ Version 2.8.0 (Build 67)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/team.html
(C) Copyright 1998-2007 Sourcefire Inc., et al.
同防病毒软件需要更新病毒库一样,Snort 也一样需要有检测规则库,有两种途径可以获取规则(rules)文件下载。
(1).在http://www.snort.org/ 注册就可以下载到 snortrules-snapshot-CURRENT.tar.gz;
(2).在 http://www.bleedingthreats.net/cgi-bin/viewcvs.cgi/rules/ 可以下载到一个第三方的 rules 文件 rules.tar.gz,这个系列更新也比较频繁。
下载完以后解压缩规则文件到rules目录下。
# tar zxvf snortrules-snapshot-CURRENT.tar.gz
# tar zxvf rules.tar.gz
安装Apache,PHP,Adodb,BASE支持
这个不用多说, Apache / PHP一般用系统自带的即可, PHP最好用最新的5系列版本.
BASE 可以从http://sourceforge.net/projects/secureideas/ 获取版本,下面以1.3.6版本为例。Adodb 可以从 http://sourceforge.net/projects/adodb/ 下载.
# cd /var/www/html
# tar zxvf base-1.3.6.tar.gz
# tar adodb496a.tgz
然后进入 http://server ip/base-1.3.6/setup, 按提示一步步操作即可.
注意:
(1) Mysql数据库里需要根据Snort的要求预先建立对应数据库
mysql>create database snort; /* 建立一个数据库 */
mysql> use snort; /* 转到新建的数据库 */
mysql> source /home/snort-2.8.0/schemas/create_mysql /* 导入SQL脚本 */
(2) 如果提示 Your PHP Logging Level is too high 那么需要把 /etc/php.ini 中
error_reporting = E_ALL
改为:error_reporting = E_ALL & ~E_NOTICE
启动Snort监测并把信息输出到Mysql数据库里
使用以下命令指定监测网卡和配置文件以及参数。
# PCAP_FRAMES=max /usr/local/bin/snort -i eth0 -c /home/snort-2.8.0/etc/snort.conf d -e
snort.conf 是 snort 的启动配置文件,里面一些参数需要事先定义,例如:
var RULE_PATH /home/snort-2.8.0/etc/rules
var PREPROC_RULE_PATH /home/snort-2.8.0/preproc_rules
output database: log, mysql, user=root password=temp dbname=snort host=127.0.0.1
include $RULE_PATH/local.rules /* 可以灵活控制加载的入侵检测规则类别 */
include threshold.conf
threshold.conf 实际上是定义了例外规则的一张列表,您可以通过修改这个文件来消除误报或者不关注的网络行为带来的大量告警信息。
只要Snort源源不断地把入侵检测信息送入数据库,您就可以通过http://server ip/base-1.3.6来查看了解当前以及长期的网络入侵记录。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。