飞翔无限fxwx.com广西经贸职业技术学院论坛

标题: 网络入侵检测系统的实现 [打印本页]

作者: 月中水    时间: 2009-10-16 02:58
标题: 网络入侵检测系统的实现
来源:比特网
8 k$ c4 f- p3 h, n1 G    互联网也同时带给我们无数的宝贵资源,只等我们去开发、利用。开放源代码软件(Open Source Software)便是其中之一,免费可得的软件发布形式,使其具有广大的用户群;众多志愿者的协同开发模式使其具有卓越的兼容性;大量的网上社区弥补了缺少商业服务的不足。本文试图论述利- j& C0 `: Q# m2 E
  用互联网上免费可得的开放源代码软件实现一个完整的网络入侵检测系统的过程。
6 ~% _! t' V( h5 A* c系统概述* \) n- T4 E( @+ `; Y4 O
  本系统采用三层分布式体系结构:网络入侵探测器、入侵事件数据库和基于Web的分析控制台。为了避免不必要的网络流量,本例将网络入侵探测器和入侵事件数据库整合在一台主机中,用标准浏览器异地访问主机上的Web服务器作为分析控制台,两者之间的通信采用HTTPS安全加密协议传输。( Y" _( ~  Z, G4 x4 m$ b! ]
  由于实现本系统所需的软件较多,有必要在此进行简要的说明:0 K8 }  q- `) a8 d) h) C( M
  Snort
, v- ^! x8 l: o, Z. g  功能简述:网络入侵探测器;+ v: Y' ?- m& D0 T
  正式网址:http://www.snort.org/, F' k3 X3 B& K: u/ s+ a
  软件版本:1.8.6
/ b! D; W8 m- {# j  Libpcap
5 {/ d8 j* \% b$ ]% V! f& h( V  功能简述:Snort所依赖的网络抓包库;
" x3 h, J, u9 E8 }0 B& S0 D: z  正式网址:http://www.tcpdump.org/+ ]+ x1 a) A7 Z1 _# L; r& c
  软件版本:0.7.1, F& Q& H# E4 l7 X1 N, Z' s
  MySQL
3 c4 G  P* Z9 S. X2 l  功能简述:入侵事件数据库;% J1 q# e- D/ I# |, ~: x# z4 _1 Q! [
  正式网址:http://www.mysql.org/
' I; Z+ [1 B# S. H  软件版本:3.23.49
8 |1 p# f/ }6 t- l  Apache# k7 b* g4 c. b0 m3 H
  功能简述:Web服务器;; N* n& Y2 ]9 m1 G* c
  正式网址:http://www.apache.org/
/ g. S) W5 U7 O3 z8 y  软件版本:1.3.24: R1 M$ [5 @% G! w7 \' H. X: j# W( z
  Mod_ssl4 q% ^  C- x! b7 c. ]
  功能简述:为Apache提供SSL加密功能的模块;
  a  X. E1 ~% v5 G  正式网址:http://www.modssl.org/
, X, p; }7 G5 k9 H: g( O0 _9 ~  软件版本:2.8.8
( l) S5 U7 k% Y( m* D+ |# u  OpenSSL9 S9 |' j: }2 ^0 H
  功能简述:开放源代码的SSL加密库,为mod_ssl所依赖;
1 u1 p7 r5 j! g( [  正式网址:http://www.openssl.org/8 D5 \8 s' r1 P+ T8 `2 f
  软件版本:0.9.6d
5 r; v! _4 R& u* f  MM
1 p% E1 {, e. v  功能简述:为Apache的模块提供共享内存服务;" A) x0 z% v* P2 N. V. ]
  正式网址:http://www.engelschall.com/sw/mm/3 n0 X) v: @6 Z) I  X* ?
  软件版本:1.1.3
# ]. Q% S( _2 k2 N( s' ?/ k  PHP) q: }: @- r9 U' F
  功能简述:ACID的实现语言;
) X) _0 o/ T2 X. j9 A0 g6 @; M5 k  正式网址:http://www.php.net/% g4 O7 c6 T* y8 b" V
  软件版本:4.0.6# q) p+ v5 V; ]4 U
  GD
3 C( e6 L) c7 a9 s, @' f& C- L7 c  功能简述:被PHP用来即时生成PNG和JPG图像的库;6 C3 t) X8 y' s$ J( K2 r
  正式网址:http://www.boutell.com/gd/
; Y# H" h+ d$ R1 S- O1 i6 F: K  软件版本:1.8.4* ?( r- [8 p) d4 ?  u
  ACID
% g( {- t* i  y4 u7 r& B9 u  功能简述:基于Web的入侵事件数据库分析控制台;" C& A6 d! ^* q, J' b$ g
  正式网址:http://www.cert.org/kb/aircert/
  ^9 G; l, j1 D% o  软件版本:0.9.6b21
; |7 p  Y- O( D. L+ X3 c  ADODB
, N  u8 _% c, P. {9 w' Z. J: N  功能简述:为ACID提供便捷的数据库接口;
6 r, t3 ?- d5 i8 F  正式网址:http://php.weblogs.com/ADODB1 m* v6 X$ e* ~5 |& L( K" [
  软件版本:2.00
6 ?& {6 u& K. Z+ y6 T+ n  PHPlot  ?9 b1 N( n3 k% W- U! s! S" c; x
  功能简述:ACID所依赖的制图库;. f7 b- ~3 w- A* X7 p7 l, u
  正式网址:http://www.phplot.com/4 T" i# d6 q9 t2 q6 _2 r2 j
  软件版本:4.4.6  z. [7 [: N' O# o
  上述软件都是开源软件,可以直接登录相应软件的正式网站,下载源代码。此外,需要特别说明的一点是虽然本例中网络入侵检测系统所采用的系统平台是Solaris 8 for Intel Platform,但是在其它种类的系统平台上,如Linux 、OpenBSD以及Windows 2000等,其具体的实现步骤大同小异,因此就不在另行说明了。
2 |. K( {- G- b2 m  三、 安装及配置+ S* D  E! _, H5 m2 S' ~* l! @* V
  在正式进行软件安装之前,请检查系统,确保拥有符合ANSI标准的C/C++编译器等软件开发工具。* U9 T4 |7 G/ O- j- H6 a
  1、 安装MySQL+ D3 S! |8 i  R3 d. \
  首先,以超级用户的身份登录系统,创建mysql 用户和mysql用户组;
% R/ G- F" B8 H# J  然后,以mysql身份登录,执行下列命令:; f7 o+ B, T$ o
  $gzip -d -c mysql-3.23.49.tar.gz | tar xvf -/ U1 J5 [7 a% W8 {2 {1 H
  $cd mysql-3.23.492 X2 R  J7 }- K4 b
  $./configure
& C' a/ f& E8 j* m3 K) F- E. g9 ?  $make3 q3 F0 l0 ]% R, U" b, a
  $make install
9 S' o) x( N" S: ]' ~4 a  这样,就按照缺省配置将MySQL安装在/usr/local目录下。然后将源代码树中的缺省配置文件my.cnf拷贝到/etc目录下。接下来,以超级用户身份执行源码树中scripts目录下的可执行脚本文件mysql_install_db来创建初始数据库。用/etc/init.d/mysql.server命令启动数据库服务器后,使用/usr/local/bin/mysqladmin程序来改变数据库管理员的口令。/ P, v: _: Z2 v& G
  2、 安装Snort
4 B/ B4 @* S4 s2 T% Q; k; N  首先安装Snort所依赖的库libpcap:
& a: B8 [- I' s  #gzip -d -c libpcap-0.7.1.tar.gz | tar xvf -
# @  x. B  r, T" i3 e! J5 N) o  #cd libpcap-0.7.19 M6 _/ i& c. g0 w
  #./configure
8 Y- B4 K. }/ w: z  #make/ ]" u; Y' x# y
  #make install
. Q0 g3 C+ r. N* s6 B  t$ S7 R  这样libpcap缺省地安装在/usr/local目录下。8 g8 D" s" D1 |5 l- m8 S; ?
  然后开始安装Snort:
' B: u! v5 e% \7 E  #gzip -d -c snort-1.8.6.tar.gz | tar xvf -! \( y9 D' x5 i) w
  #cd snort-1.8.63 \4 Z0 u/ S: ]8 D, s8 Z
  #./configure --prefix=/usr/local      --with-mysql=/usr/local  --with-libpcap-includes=/usr/local      --with-libpcap-libraries-/usr/local. J; M' P% U1 F/ x5 ^: N! c7 N5 p
  #make: t$ e  s9 {9 t7 @
  #make install
5 `+ C; _, q# K& a2 t& K/ l5 g8 f, p  安装完毕后,将源码树中的snort.conf文件、classification.config文件和规则文件(*.rules)拷贝到系统的/etc目录下。
" ~6 q4 r* e! _' S" C; \  按照下列步骤配置Snort将其捕获的网络信息输出到MySQL数据库:9 A% S; x" U" i0 f2 {) r
  1) 创建Snort入侵事件数据库和存档数据库:
2 Q* ?& F9 x) \1 o2 k% n  #/usr/local/bin/mysqladmin -u root -p create snort% q! m  p# m* v; |5 M1 [! @
  #/usr/local/bin/mysqladmin -u root -p create snort_archive0 J7 W. s2 N' N
  2) 执行Snort源码树下contrib目录下的create_mysql SQL脚本文件创建相关表:
2 C: l/ O2 ~( |# O# I& X  #/usr/local/bin/mysql -u root -D snort -p < create_mysql
/ \" B: y  V: q5 Q9 n  #/usr/local/bin/mysql -u root -D snort_archive -p < create_mysql" s4 e/ R4 P" [. }* h6 v2 {+ {0 `
  3) 编辑/etc/snort.conf文件在output plugin 段中加入如下一行:
% Z  b: B5 \# c7 K  output database: alert, mysql, user=root password=abc123
8 n$ u4 ^( V  L) ~# _1 D; u. W; ~  dbname=snort host=localhost" Y2 s! f5 ]7 V4 _: a7 b
  3、 安装Apache9 E& R6 |% u. p" K, `4 J. |0 {9 b
  1) 安装MM库' U2 y, `5 ]# v9 k
  #gzip -d -c mm-1.1.3.tar.gz | tar xvf -
  r$ t. i' Z4 h- U% [) ]/ x) C  #cd mm-1.1.3& e) n  i  L! m$ b4 H
  #./configure
- O9 v6 B* |( z) V0 m8 {  #make2 `2 @* i1 X- r# B* q) [) C
  #make install" ~% I, g0 l6 Y3 M, f9 ]* j  x
  MM库被按照缺省配置安装在/usr/local目录下。
: f# s5 i( X# ^9 ~( v# j4 y  2) 安装OpenSSL
9 S: c3 a5 z3 o  s: l  #gzip -d -c openssl-0.9.6d.tar.gz | tar xvf -+ `0 E" p1 X# g* A; D% X
  #cd openssl-0.9.6d
8 G  S6 B% o  J- ]# d2 |  #./config
7 Q$ d5 t+ G2 W; w: f  #make
. h/ f* t/ z" s/ o7 `1 p+ W, _  #make test2 y9 N8 k0 s0 h0 S* E
  #make install
. A- }9 |8 l* n) w) X5 a/ |. n  OpenSSL按照缺省设置安装在/usr/local目录下。3 Q, Z  N5 o6 u* i2 K  S
  3) 为Apache扩展mod_ssl代码
! M. @4 m% Z7 B2 `, s  #gzip -d -c apache-1.3.24.tar.gz | tar xvf -
# K' c# H# {8 m; S4 T  #gzip -d -c mod_ssl-2.8.8-1.3.24.tar.gz | tar xvf -
5 j& `+ N- @3 Q) C- }  #cd mod_ssl-2.8.8-1.3.24
# c' O1 P5 f% m4 U5 b' R  #./configure --with-apache=apache-1.3.24* b/ E- c* b% E) \0 m2 E# }3 }
  该命令运行成功之后,会有提示说明已经成功扩展了Apache的源代码。4 b( O& e6 M) ]/ b0 a
  4) 安装Apache
. m6 T1 k* W$ L  e9 o# M# o  #cd ../apache-1.3.24
4 ^) O9 z) e3 q! e  #SSL_BASE=/usr/local EAPI_MM=/usr/local ./configure -enable-module=so      --enable-module=ssl      --prefix=/usr/local2 V) n7 l6 h- x  I* P" r. y
  #make" D( [: h/ a1 c& C' Q
  #make certificate
' o0 V- z- ]( J  #make install
" M' R7 \5 l4 F  其中,make certificate命令是为mod_ssl生成所需的安全证书,按照提示输入相应信息即可。这样,Apache就被安装在了/usr/local目录下。
3 t3 Y" S5 X/ w' E" B4 x9 }: a& o/ k  4、 安装PHP  |" {/ [4 p' n% P. @$ l" A
  首先安装为PHP提供既时生成PNG和JPG图象功能的GD库:' }6 A, g  B% I) k1 @
  #gzip -d -c gd-1.8.4.tar.gz | tar xvf -2 q8 a% [4 a/ o0 p: h6 n
  #cd gd-1.8.4# P  v7 s- y9 O; r
  #make# d* O! I- ?6 _3 o5 J3 W
  #make install
5 u  ]) @9 W: C  按照缺省配置,将其安装到/usr/local目录下。接下来开始正式安装PHP:" B2 N. V& H& s  L3 [1 P" r$ l" G
  #gzip -d -c php-4.0.6.tar.gz | tar xvf -1 X/ ~8 X) b) Q9 S& r' E$ {
  #cd php-4.0.6
; Y( \' y  a3 `1 G+ [  #./configure -with-mysql=/usr/local      --with-apxs=/usr/local/bin/apxs      --with-gd=/usr/local
' |3 A! D, V  E8 l1 W' ?* d  #make; i% G/ W- x# O- t( Z8 q/ O4 L0 S
  #make install/ w1 ]! K+ I9 Q# U5 |/ O
  此处采用的是PHP的Apache动态模块DSO安装模式,完成之后,将会在/usr/local/libexec目录下生成Apache DSO模块libphp4.so。




欢迎光临 飞翔无限fxwx.com广西经贸职业技术学院论坛 (http://www.gxjmbbs.com/) Powered by Discuz! X3.2