admin 管理员组文章数量: 1086019
2024年6月1日发(作者:pycharm安装scrapy)
网络入侵检测系统的设计与实现
王相林
1
, 景志刚
2
(
1.
杭州电子科技大学
,
杭州
310018
;
2.
中国人民银行征信服务中心
,
北京
100800
)
摘
要: 本文所实现的网络入侵检测系统采用三层分布式体系结构: 网络入侵探测器、入侵事件数据库和
基于
W eb
的分析控制台
,
并详细讨论了系统各模块的设计与实现方法
,
以及涉及到的技术
,
给出了
系统实现图
。
该系统具有结构完整
、
简单实用的特点
,
并在实际模拟环境中给出较好的检测效果
。
关键词
:
入侵检测
;
网络安全
;
通用入侵检测框架
;
Libpcap
1
网络入侵检测系统的设计基础
( 1) P
2
DR
模型
入侵检测就是
P
2
DR
模型中的检测,
它的作用在
于承接防护和响应的过程
。
入侵检测是
P
2
DR
模型作
为一个动态安全模型的关键所在, 可以说提出
P
2
DR
模型的原因就是要描述入侵检测技术
[1[2]]
。
( 2)
通用入侵检测框
CIDF
本系统根据网络数据包
,
利用协议分析和模式匹
配来进行入侵检测
。
通用入侵检测框架
CIDF
组件之
间通过实时数据流模型相互交换数据,并且采用“通
用入侵检测对象
(GIDO) ”
作为系统各种数据交换
、
存
储的标准
[3] [4]
。
事区) 区, 用来监控互联网和内网的网络流量。使用两
块网卡
,
网络入侵探测器使用无
IP
地址的网卡进行
监听以保证网络入侵检测系统自身的安全
,
通过另一
块网卡接入内网并为其分配内网所使用的私有
IP
地
址
,
以便从内网访问分析控制台
。
通过启用
APACHE
服务器的用户身份验证和访问控制并结合
SSL
以保
证系统的访问安全
。
系统所用的实验平台是
Redhat
及
Apache, MM, Mod_ssl, ACID, Phplot, Linux 9.0
以
MySQL
等多种软件。系统实现如图
1
所示。
2
系统的实现
( 1)
三层分布式体系结构
本系统采用三层分布式体系结构
:
网络入侵探测
器
,
入侵事件数据库和基于
Web
的分析控制台
。
为了
现
代
计
算
机
(
总
第
二
三
三
期
)
避免不必要的网络流量
,
将网络入侵探测器和入侵事
件数据库整合在一台主机中
,
用标准浏览器异地访问
主机上的
Web
服务器作为分析控制台
, 两者之间的
通信采用
HTTPS
安全加密协议传输
。
IDS
在交换网络中的位置一般选择在
: ①
尽可能靠
近攻击源
; ②
尽可能靠近受保护源
。
这些位置通常是服
务器区域的交换机上﹑
Internet
接入路由器之后的第一
台交换机上或者重点保护网段的局域网交换机上
[5]
。
( 2)
系统组成和实现
该系统被部署在网络服务器所处的
DMZ
( 非军
图
1
系统实现图
3
系统的模块设计和分析
( 1)
网络数据引擎模块
在本系统中
,
为了使网络数据引擎模块能够接受
网络中的所有数据
,
一般是将网卡置为混杂模式
,
混
杂模式下计算机能够接受所有流经该网段的信息
。
这
部分开发时利用了在 Linux 中比较成熟的伯克利包
" !
网络纵横
过滤器
BPF(Berkeley Packet Filter)
机制和网络安全工
具开发库
,
即数据包捕获函数库
Libpcap(Packet Cap-
ture Library)。BPF
是当时洛仑兹伯克利实验室的研究
人 员
Steven McCanne
和
Van Jacobson
于
1993
年 在
Usenix
'
93
会议上正式提出的一种用于
Unix
的内核数
据包过滤机制
。
(pcap_t *p,int cnt,pcap_handler callback,u_char *user);
此函数返回读取的包数, 当读到文件的
EOF
时返回
0;
返 回
- 1
表 出 错
,
此 时 可 用
pcap_perror
或
pcap_geterr
函数来显示出错文本
。
参数
cnt
指定在返
回前续处理的最大包数
, cnt
为
- 1
则处理在一个缓冲
区中接收的所有数据包
; cnt
为
0
表处理所有数据包
直至发生一个错误 (
或遇到
EOF) 。 Callback
制定了
一个可用三个参数调用的例程, 这三个参数包括: 一
个
u_char
指针
(
从
pcap_dispatch( )
函数传递得到
) ,
一
个指向
pcap_pkthdr
结构的指针
(
它位于真正的网络
头和数据之前
)
和一个长度
。Callback
一般设计成对
所捕获的数据包进行分析的例程
,
如根据数据链路层
类型选择数据包﹑打印数据包内容﹑实施信息匹配过
滤等
。
所以
,
基于
BPF
和
Libpcap
设计包捕获分析系
统
,
只需要集中设计此
Callback
例程即可
。
(
2
) 分析模块
分析模块包括预处理模块﹑规则匹配处理模块﹑
规则知识库
,
这个模块是入侵检测系统的核心部分
,
对整个系统的高效运作起着至关重要的作用
。
下面分
别介绍此三个模块
:
图
2 Libpcap
数据采集分析图
当一个数据包到达网络接口设备时, 链路层设备
驱动器通常把它传送给系统协议堆栈进行处理
。
但
是
,
当
BPF
也在该网络接口上监听时
,
驱动器将会首
先调用
BPF, BPF
会将数据包传递给每个监控进程的
过滤器
,
这些用户自定义的过滤器将决定一个数据包
是否被接受以及数据包中的哪些内容应该被保存下
来
。
对于每一个决定接受数据包的过滤器
, BPF
将所
需的数据复制到与之相连的缓存中
,
然后
,
设备驱动
程序重新获得控制权
。
此时
,
如果该数据包的目标地
址不是本机地址
,
则驱动程序从中断过程返回
,
否则
,
将进行正常的网络协议处理过程
。
Libpcap
是一种支持
BPF
模型过滤机制的包函数
库
,
它的最大优点是不需要为解析过滤规则耗费过多
的精力
,
而且可在不同系统上不加变化地移植
,
提供
了一个可独立于系统用户层包捕获的系统程序开发
接口
[6]
。
BPF
和
Libpcap
结合起来可设计出高效的网络数
据引擎模块
。
①预处理模块
预处理模块的作用就是对数据包进行预处理
,
以
方便处理模块对数据包的检查和处理
。
提供了一个报
警﹑丢弃数据包﹑修改数据包的框架
。
这个预处理模块
在实现的时候
,
我们把它做成预处理器
,
预处理器被
设计为模块化的插件
。
预处理器插件组成包括
:
●
预处理器的解码家族
。
预处理器的其中一个任
务是将包送到检测引擎之前先将包规格化
。
例 如
,
HTTP
协议允许二进制字符能够指定使用
%xx
符号表
示的通用资源标志符
( URL)
来表示
;
●fra g2 处理器。分片是 TCP/IP 协议簇的一个基
本功能
,
正如在
Internet
上的不同路由器有不同大小
的网络链接一样
。
数据包被分成更小的片
,
以使它们
能够适合地穿过各种网络
。
使用
frag2
预处理器
,
分片
包在送到处理模块之前进行重组
,
因此特征能够针对
完整的会话
,
不再是一个单独的小包
。
同样能够在分
片到某个阀值之后进行报警
;
●s tre a m4
预处理器
。stream4
实现了流重组的
功能
,
有两个目标
:
第一个是
TCP
状态维护
,
第二个
是会话重组
;
●
端口扫描处理器家族
。IDS
很重要的一个方面
是它能够检测端口扫描的能力
。
在接入
Internet
的网
络上端口扫描经常发生
,
被可能的入侵者用来识别服
用 程 序 利 用
Libpcap
的
在 初 始 化 完 毕 后 ,
应
链路层的 数
pcap_dispatch( )
或
pcap_loop( )
捕获数据
据包
。
这两个函数作用类似
,
仅以
pcap_dispatch( )
为
例 介 绍 其 工 作 原 理 其 函 数 原 形 为
。 : pcap_dispatch
现
代
计
算
机
(
总
第
二
三
三
期
)
M O D E R N C OM P U T E R
2006.4
" !
网络纵横
务器和开放端口。一旦攻击者发现开放端口, 他就可
能试图通过这些端口破坏这些服务
。
我们提供了两种
端口扫描预处理器
。
一个是
Portscan
预处理器
,
一个
是
Portscan2
预处理器
, 这两个预处理器的工作方式
有一些不同点
。Portscan
预处理通过检查机器
(
客户
端
)
在某一段事件内连接的端口数目来确定
,
它也用
同 样 的 方 式 来 检 测
UDP
端 口 扫 描 和 秘 密 扫 描
。
Portscan2 处理器能检测 SYN- ACK 是否为现在合法
连接中的包或者端口扫描
。Portscan2
通过新的输出
格式比
Portscan
提供更多的信息
,
并且支持不同的端
口阀值和事件阀值
;
●
其他预处理器
。
还有其他很多的预处理器
,
可
以根据自己的需要选用
,
例如
: rpc_deccode
预处理器
可以和
HTTP
解码器一样对
RPC
解码
, telnet decode
预处理器和
HTTP
解码器一样对
Telnet
和
Ftp
解码
,
状 态
, conversation
预 处 理 器 提 供 基 本 的 协 议 会 话
Back Orifice Detector
检测网络中的木马
,
等等
。
而且
用户还可以自己编写预处理插件
,
插件的使用为用户
提供了很大的灵活性
。
②
规则匹配处理模块和规则知识库 这个模块主
要用来做两件事情
:
一是如何描述入
侵行为
,
二是使用什么算法来快速检测入侵行为的存
在
。
在实现中
,
我们使用了
Snort
的检测规则来描述入
侵行为
,
使用一种经过改进的
Boyer- Moore
算法来检
测
。
在这个模块设计过程中
,
存在两个关键问题
:
检测
规则和引擎架构设计。
( 3)
入侵与日志数据库
一个好的入侵检测系统不仅仅应当为管理员提
供实时﹑丰富的警报信息
,
还应详细地记录现场数据
,
以便于日后需要取证时重建某些网络事件
。
数据库管
理的前端程序通常与控制台模块集合在一起
。
该数据库的数据来源主要是分析模块处理后的
数据
,
包括报警信息以及其他重要的信息
,
以及管理
员经过条件查询后对查询结果处理所得的数据
,
如生
成的本地文件﹑格式报表等
。
通过相应的数据库连接插件
,
可以将分析模块的
处理信息记录到数据库中
。
目前支持
Snort
分析模块
的数据库有很多
,
例如
: PostSQL
﹑
MySQL
﹑
UnixODBC
﹑
Oracle
等
,
因为我们的入侵检测系统是在
Linux
下开
管理系统
。MySQL
完全适用于网络
,
用其建造的数据库
可以在网上的任意地方访问
。MySQL
可以使用
SQL
语
言
。SQL(
结构化查询语言
)
是世界上最流行和标准化的
数据库语言
。MySQL
是一个客户机
/
服务器结构的实现
,
它由一个服务器守护进程程序
Mysqld
和很多的客户程
序和库组成
。SQL
是一种标准化的语言
,
它使得存储﹑更
新信息更容易
,
它的目标是快速﹑健壮和易用
。
为了便于入侵响应模块进行分析,
我们设计的
MySQL
数据库主要包括了
8
张二维表
,
它们是
:
数据
表 件 产 生 器 表
( data) ,
事
( sensor) ,tcp
表
( tcphdr) ,udp
表
( udphdr) ,icmp
表
( icmphdr) ,opt
协议表
, ip
表
( iph-
dr)
和签名表
( signature) 。
( 4) 入侵响应模块
一旦创建了一个数据库并且要将数据记录到其
中
,
我们就会需要一种响应机制对数据库中收集到的
报警数据进行分析并产生报告
,
我们利用分析控制台
引擎
( ACID)
进行数据分析
。ACID
是一个基于
PHP
的
分析引擎
,
可以对
MySQL
数据库的数据进行查找和
处理
[7]
。ACID
支持以下的特点
:
检测时
①
用于寻找与报警元信息
(
例如
:
签名﹑
间
)
匹配的报警的查询生成器和搜索界面
,
以及潜在
的网络证据( 例如, 源/目的地址﹑端口号﹑有效载荷,
或者标记
) 。
②
数据包解码器将对记录报警的第三层和第四
层的数据包信息提供图形显示
。
③
报警管理通过提供逻辑组来给报警组提供报
警
,
删除报警或者误报
,
发送
E- mail
或者在各个报警
数据库之间传送报警
[7]
。
探测器﹑签名﹑协议﹑
④
基于时间﹑
IP
地址﹑
TCP/
UDP
端口号
,
根据指定的参数生成各种图标和统计数
据
。
如图
3
所示
。
现
代
计
算
机
(
总
第
二
三
三
期
)
发的, 所以我们选用与
Linux
兼容性较好的
MySQL
数据库
。
多线程
SQL
数据库服
MySQL
是一个多用户﹑
务器
。
可以用于各种流行操作系统平台的关系数据
库
,
它是具有客户机
/
服务器体系结构的分布式数据库
图
3
入侵响应图示和统计数据
( 5)
控制中心
因为所构建的是一个基于网络的入侵检测系统
,
"
M O D E R N C OM P U T E R
2006.4
!
网络纵横
控制中心需要具有很强的网络管理功能, 从网络管理
技术来看
,
目前主要是基于
Agent
﹑基于
CORBA
和基
于
Web
的网络管理技术
。
比较而言
,
因为
Web
技术
的成熟以及在
Internet
上的广泛应用
[8]
,
基于
Web
技
术的网络管理正成为网络管理的一个标准模式
。
正是
由于
Webmin
基于
Web
的管理方式
,
方便第三方管理
模块的加载模式
,
以及足够的安全性
,
使得我们决定
选用
Webmin
作为我们的控制中心的开发平台
,
如图
4
所示。
块
。
这一点使其具有很强的可移植性
;
目前
Webmin
支持绝大多数的
Unix
系统
,
包括各种版本的
Linux
系
统
。
结 语
该入侵检测系统具有结构完整
、
简单实用的特
点
。
该系统采用目前最先进的软
、
硬件平台
,
在该系统
上可以很好的集成入侵检测系统所需要的工具和软
件
,
进行
IDS
实验和研究
,
开发出
IDS
产品
。
参考文献
[1]/ids
[2]IDWG. The Intrusion Detection Exchange Protocol(IDXP).
The Intrusion Detection Message Exchange Format. Intru-
sion Detection Message Exchange Requirements
[3]CIDF Working Group. A Common Intrusion Specification
Language. /,2000
[4]
韩东海
.
入侵检测系统实例剖析
.
北京
:
清华大学出版
社
,
2002
[5]
罗守山
.
入侵检测
.
北京
:
北京邮电大学出版社
,2004
[6]Lee, Keum- Chang Mikhailov, Ludmil. Intelligent Intrusion
Detection System. 2004 2nd International IEEE Conference
'
Intelligent Systems
'
- Proceedings
[7]/reg- bin/, 2005
[8]/products/sentarus/features/, 2005
(
收稿日期
:
2005- 12- 19
)
图
4
控制中心图
一 个 基 于
Web
的
Unix
系 统 管 理 工
Webmin
是
具
。
通过浏览器本地或远程访问
Webmin
的各种管理
功能即可完成相应的管理动作
。Webmin
自身包括一
个简单的
Web
服务器和一些
CGI
程序
,
这些程序全
部使用
Perl5
写成
,
并且未使用任何非标准的
Perl
模
Ana lys is a nd Imple me nta tion
of Ne twork Intrus ion De te ction S ys te m
WANG Xiang- lin
1
,
JING Zhi- gang
2
现
代
计
算
机
(
总
第
二
三
三
期
)
(
1. Computer College of Hangzhou Dianzi University
,
Hangzhou 310018 China
;
2. Inspection Service Center of People
'
s Bank of China, Beijing 100800 China)
Abs tra ct
:
This IDS adopts distributing architecture with three layers: detector of network intrusion
,
database
of intrusion event, and analysis console based on Web. Design and implementation methods of
modules referring technology as well as implementation figs are also discussed in detail. This IDS
has Characteristics of integrity and simpleness utility, preferably detection effect is presented
in practicality simulated environment.
Ke y words : Intrusion Detection; Network Security; CIDF
;
Libpcap
M O D E R N C OM P U T E R
2006.4
" !
版权声明:本文标题:网络入侵检测系统的设计与实现 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1717250093a703612.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论