免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 856 | 回复: 0
打印 上一主题 下一主题

构建基于snort的入侵检测系统 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-25 15:39 |只看该作者 |倒序浏览
[color="#ffff00"]构建基于snort的入侵检测系统
作者:nixe0n
简介
1.安装准备
1.1.获得snort源代码
1.2.快速安装
1.3.configure脚本功能选项简介
1.4.关于本文的几个注意事项
2.为snort提供数据库支持
2.1.PostgreSQL数据库的编译安装
2.2.编译snort数据库日志插件
2.3.配置snort数据库输出插件
3.安装分析员控制台ACID
3.1.需要的软件
3.2.支持软件的安装
3.2.1.安装支持PHP的Apache WEB服务器

3.2.2.安装ADODB和PHPlot


3.3.安装ACID

3.4.系统配置


4.安装实时日志监视程序razoback


4.1.需要的支持

4.2.安装


5.配置snort

6.启动系统

总结


简介


snort是一个轻量级的入侵检测系统,它具有截取网络数据报文,进行网络数据实时分析、报警,以及日志的能力。


snort的报文截取代码是基于libpcap库的,继承了libpcap库的平台兼容性。

它能够进行协议分析,内容搜索/匹配,能够用来检测各种攻击和探测,例如:缓冲区溢出、隐秘端口扫描、CGI攻击、SMB探测、OS指纹特征检测等等。

snort使用一种灵活的规则语言来描述网络数据报文,因此可以对新的攻击作出快速地翻译。

snort具有实时报警能力。可以将报警信息写到syslog、指定的文件、UNIX套接字或者使用WinPopup消息。

snort具有良好的扩展能力。它支持插件体系,可以通过其定义的接口,很方便地加入新的功能。

snort还能够记录网络数据,其日志文件可以是tcpdump格式,也可以是解码的ASCII格式。


本文将介绍一个使用snort、PostgreSQL数据库、Apache、PHP、ACID和razorback搭建入侵检测系统的解决方案。


1.安装准备


1.1.获得snort源代码

用户可以从snort的官方站点http://www.snort.org获得其源代码或者RPM包。使用源代码安装
snort需要libpcap库,可以从ftp://ftp.ee.lbl.gov下载。如果用户使用某些插件,还可能需要其它的库,将在下面做详细介
绍。


1.2.快速安装


安装RPM包


rpm -ihv --nodeps snort-1.8.1-RELEASE.i386.rpm


从源代码的快速安装


你如果不需要一些额外的功能,可以使用快速安装,只要按照以下步骤做就可以了:


1) 确认libpcap包已经安装完毕。

2) ./configure

3) make
4) make install


然后,你就可以使用snort了,可以参考本站的相关文章。


1.3.configure脚本功能选项简介

默认的功能可能无法满足你的要求,因此你可以把一些其它功能加入到你的snort二进制代码中。configure脚本提供了一些选项。通过这些选项,你
可以在编译时,将一些额外的功能编译到二进制目标中。下面对这些选项做一个简要的介绍,其中一些重要的选项,例如:数据库支持、FlexResp将有专门
的章节进行讨论。而一些标准的configure选项如:--prefix,此处也将不再涉及。


--enable-smbalerts


使SMB报警代码生效。不过,这项功能有安全隐患,需要谨慎使用。


--enable-flexresp


把灵活反应(Flexible Response)代码编译连接到snort二进制目标文件。它能够使snort在IP层主动断开恶意连接。这项功能需要LibNet库,可以从http://www.packetfactory.net下载其源代码。


--with-postgresql=DIR


提供PostgreSQL数据库支持。


--with-libpcap-includes=DIR


指定libpcap库头文件的位置。


--with-libpcap-libraries=DIR


指定libpcap静态库的位置。


--with-mysql=DIR


指定mysql数据库的路径。


--with-oracle=DIR


指定oracle数据库的位置。


--with-openssl=DIR


指定openssl的位置。


--with-odbc=DIR


提供ODBC数据库支持


--with-oracle=DIR


提供Oracle数据库支持


--with-snmp

提供SNMP协议支持,通过snortSnmp插件,snort能够向网络管理系统(Network Management
System)发出snmp报警。这项功能需要ucd-snmp软件包的支持,这个包可以从http://net-
snmp.sourceforge.net下载。


--enable-idmef


把IDMEF XML插件连接到snort二进制代码中。这个插件需要libidmef、libxml2和libntp库,可以分别从以下地址下载:


libidmef http://www.silicondefense.com/idwg/libidmef

libxml2(>=2.3.7) http://www.xmlsoft.org

libntp http:/www.ntp.org

这些库的位置由--with-libxml2-includes=DIR、--with-libxml2-libraries=DIR、--with-
libntp-libraries=DIR、--with-libidmef-includes=DIR和--with-libidmef-
libraries=DIR等功能选项指定。


1.4.关于本文的几个注意事项

本系统由snort、PostgreSQL数据库、PHP、Apacke、ACID以及其它一些辅助软件组成,所有的软件都将安装在/opt/ids/目
录下。因此,在配置完成后,你需要将/opt/ids/bin加入到PATH环境变量中,把/opt/ids/lib/加入到
/etc/ld.so.config文件,然后执行ldconfig -v或者LD_LIBRARY_PATH环境变量。


2.为snort提供数据库支持

从1.6.3版开始,snort加入了对数据库的支持,通过相应的插件,你可以将snort日志信息记录到数据库中。snort当前支持的数据库包括:
PostSQL、MySQL、unixODBC和Oracle。snort还可以通过unixODBC向具有ODBC驱动的数据库记录日志信息,例如
DB2、Informix等。


本文将使用PostgreSQL数据库作为snort记录日志信息的数据库(纯粹属于个人偏好,也可以使用MySQL)。同时,在本节中还会对一些相关的程序做一些介绍,这些程序可以在snort源代码的contrib目录下找到。


2.1.PostgreSQL数据库的编译安装


获得软件包


你可以从PostgreSQL的官方站点获得其源代码或者RPM包。


安装RPM包


#rpm -ihv postgresql-xxx.rpm

#rpm -ihv postgresql-devel-xxx.rpm


源代码安装


#tar zxvf postgresql-7.1.x.tar.gz

#cd postgresql-7.1.x

#./configure --prefix=/opt/ids --disable-debug

#make

#make install


建立数据库


建立一个postgresql数据库非常简单。


初始化数据库


#mkdir -p /opt/ids/var/pgsql

#chown ids pgsql

[ids@localhost ids]initdb --pgdata=/opt/ids/var/pgsql --pglib=/opt/ids/lib

[ids@localhost ids]pg_ctl -w -D /opt/ids/var/pgsql -o "-o -F" start (运行PostgreSQL后端服务器)

数据库系统初始化完成,这个系统的管理者是ids用户。这里应该注意一个问题,由于fsync造成PostgreSQL数据库的速度大大慢于MySQL数
据库,所以需要使用-o "-o
-F"功能选项关闭PostgreSQL数据库的fsync功能。这样会使PostgreSQL数据库的速度大大提高,至少不会比MySQL数据库慢。


建立snort记录日志的数据库


[ids@localhost ids]createuser snort (建立一个snort用户)

Shall the new user be allowed to create database?(y/n) y

Shall the new user be allowed to create more new user?(y/n) n

CREATE USER

[ids@localhost ids]createdb -W -U snort snort (建立snort数据库,这个数据库归snort使用)

Password:123456 (密码只输入一次,要注意其准确性)

CREATE DATABASE

[ids@localhost ids]cd /path-of-snort-source/ (进入snort源代码所在的目录)

[ids@localhost snort-1.8.1-RELEASE]psql snort snort=3.23版或者PostgreSQL>=7.1版。


PHP>=4.0.4版。从http://www.php.net获得。


Apache WEB服务器,需要支持cokies。可以从http://www.apache.org下载。


snort>=1.7版


ADODB>=0.93版。可以从http://php.weblogs.com/adodb下载。


还有一些可选的库。


GD 1.8.*:PHPlot加载图象的库,http://www.boutell.com/gd/


PHPlot>=4.4.6:PHP图形库。http://www.phplot.com


3.2.支持软件的安装


3.2.1.安装支持PHP的Apache WEB服务器


假设Apache和PHP3的源程序都保存在/tmp目录下,首先登录为root:


$ su

# cd /tmp

# tar -xzvf apache_1.3.x.tar.gz

# cd apacke_1.3.x

# ./configure

# cd /tmp

# tar -xzvf php4-4.0.x.tar.gz

# cd php-4.0.x
# ./configure --with-pgsql=/opt/ids --with-apache=../apache_1.3.x
--enable-track-vars --enable-bcmath --with-gd --prefix=/opt/ids
--with-php-config=/opt/ids/lib/php.ini

# make

# make install

# cd ../apache_1.3.x

# ./configure --prefix=/opt/ids --activate-module=src/modules/php4/libphp4.a

# make

# make install

# cd ../php-4.0.x

# cp php.ini-dist /opt/ids/lib/php.ini
配置文件的修改我们将在后面介绍。
3.2.2.安装ADODB和PHPlot
安装adodb非常简单,分别把下载的软件包解压,然后把它们复制到一个PHP可以找到的目录:
# tar zxvf adodb112.tgz

# cd adodb

# mkdir /opt/ids/share/acidsupport

# cp * /opt/ids/share/acidsupport

# cd ..

# tar zxvf phplot-4.4.6.tar.gz

# cd phplot-4.4.6

# cp * /opt/ids/share/acidsupport


3.3.安装ACID


所有支持软件的安装就绪后,就可以安装ACID了。安装步骤也是非常简单:


# tar zxvf ACID-0.9.6b11.tar.gz

# cd acid

# cp * /opt/ids/htdocs


3.4.系统配置


配置Apache服务器


编辑/opt/ids/conf/httd.conf文件。



Listen 127.0.0.1:80(根据自己的情况设置)

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps


配置ACID


ACID的配置文件是acid_config.php,这也是一个PHP文件。你需要修改以下变量:



$DBlib_path = "/opt/ids/share/acidsupport/adodb"; /* ADODB的安装路径 */

$DBtype = "postgres"; /* 数据库类型 */


$alert_dbname = "snort"; /* 记录snort日志信息的数据库 */

$alert_host = "localhost"; /* 数据库所在的地址 */

$alert_port = "5432"; /* 数据库服务器监听的端口 */

$alert_user = "snort"; /* 数据库用户 */

$alert_password = "123456"; /* 用户的密码 */


$ChartLib_path = "/opt/ids/share/acidsupport/phplot/"; /* PHPlot的安装路径 */


4.安装实时日志监视程序razoback


razorback是一个GNOME环境应用程序,你可以使用它实时监视snort的日志。用户可以从http://www.intersectalliance.com/获得其最新版本。


4.1.需要的支持


snort能够向syslog记录日志信息。


GNOME库


4.2.安装


快速的安装可以使用以下命令:


# tar zxvf razorback-0.x.x.tar.gz

# cd razorback-0.x.x

# ./configure --prefix=/opt/ids/

# make

# make install


在正常情况下,只有root用户才可以运行razorback。razorback也可以使用PAM(插入式验证模块),通过这个途径,普通用户可以运行razorback,只要输入root的密码。


# chmod a+s /opt/ids/bin/razorback

# cat > /etc/pam.d/razorback  /etc/security/console.apps/razorback >根据自己的系统进行设置。
因为,安装程序不能自动安装snort的配置文件snort.conf和各种规则集文件(1.7版以*-lib命名,1.8版以*.rules命名),所
以需要手工把它们复制到你指定的目录中,一般是${prefix}/etc/。当然,你可以指定其它的目录,由于snort的规则集文件很多,为了保持目
录结构的清晰,我们把它们放在/opt/ids/etc/snort.d目录中:


# mkdir -p /opt/ids/etc/snort.d

# cp snort.conf /opt/ids/etc/snort.d

# cp *.rules(>=1.8版)或者cp *-lib(1.7.x版) /opt/ids/etc/snort.d

# cp classification.conf /opt/ids/etc/snort.d

# chmod 700 /opt/ids/ids/etc/snort.d/


6.启动系统


系统安装完成后,我们就可以启动系统了。


[ids@localhost ids]/opt/ids/bin/pg_ctl -w -D /opt/ids/var/pgsql -o "-o -F" start

[ids@localhost ids]su

# /opt/ids/bin/snort -D -c /opt/etc/snort.d/snort.conf

# /opt/ids/bin/apactl start


然后,使用startx启动X-window系统。


[ids@localhost ids]razorback&

[ids@localhost ids]netscape http://localhost


总结


本文主要讲述了如何搭建一个基本的snort的入侵检测系统的具体步骤。snort本身还有很多功能,但是本文基本没有涉及,关于这些功能的运用将单独讨论。:)
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/21953/showart_145519.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP