一个网络入侵检测系统的实现(1)
一、 前言 互联网的普及给网络管理人员带来了极大的挑战:随处可得的黑客工具和系统漏洞信息使我们的网络无时无刻不处于危险之中。一般说来,一个典型的网络攻击是以大量的端口扫描等手段获取关于攻击对象的信息为开端的,这个过程必然产生大量的异常网络流量预示着即将到来的真正攻击,然而当前被广泛使用的网络产品都具有一个普遍的弱点--被动防御,即对这些重要的网络攻击先兆熟视无睹,错过了最佳的防御时间。为了扭转这种不利的局面,变被动防御为积极防御,就要求网管人员对网络的运行状态进行实时监控以便随时发现入侵征兆并进行具体的分析,然后及时进行干预,从而取得防患于未然的效果。完成这种功能的安全产品就是网络入侵检测系统(Network Intrusion Detection Systems,NIDS)。 目前,市场上的这类产品可分为硬件和软件两种类型,但无论选择那种都有一个共同的特点:昂贵。即便在单点安装的情况下,无论是硬件类型的费用还是软件类型的许可费都需要数万元乃至十余万元。如果无法承受这笔开支该怎么办?难道网络安全工作就不去搞了吗?答案是否定的。 正如所带给我们的巨大挑战一样,互联网也同时带给我们无数的宝贵资源,只等我们去开发、利用。开放源代码软件(Open Source Software)便是其中之一,免费可得的软件发布形式,使其具有广大的用户群;众多志愿者的协同开发模式使其具有卓越的兼容性;大量的网上社区弥补了缺少商业服务的不足。本文试图论述利 用互联网上免费可得的开放源代码软件实现一个完整的网络入侵检测系统的过程。 二、 系统概述 本系统采用三层分布式体系结构:网络入侵探测器、入侵事件数据库和基于Web的分析控制台。为了避免不必要的网络流量,本例将网络入侵探测器和入侵事件数据库整合在一台主机中,用标准浏览器异地访问主机上的Web服务器作为分析控制台,两者之间的通信采用HTTPS安全加密协议传输。 由于实现本系统所需的软件较多,有必要在此进行简要的说明: Snort 功能简述:网络入侵探测器; 正式网址:http://www.snort.org/ 软件版本:1.8.6 Libpcap 功能简述:Snort所依赖的网络抓包库; 正式网址:http://www.tcpdump.org/ 软件版本:0.7.1 MySQL 功能简述:入侵事件数据库; 正式网址:http://www.mysql.org/ 软件版本:3.23.49 Apache 功能简述:Web服务器; 正式网址:http://www.apache.org/ 软件版本:1.3.24 Mod_ssl 功能简述:为Apache提供SSL加密功能的模块; 正式网址:http://www.modssl.org/ 软件版本:2.8.8 OpenSSL 功能简述:开放源代码的SSL加密库,为mod_ssl所依赖; 正式网址:http://www.openssl.org/ 软件版本:0.9.6d MM 功能简述:为Apache的模块提供共享内存服务; 正式网址:http://www.engelschall.com/sw/mm/ 软件版本:1.1.3 PHP 功能简述:ACID的实现语言; 正式网址:http://www.php.net/ 软件版本:4.0.6 GD 功能简述:被PHP用来即时生成PNG和JPG图像的库; 正式网址:http://www.boutell.com/gd/ 软件版本:1.8.4 ACID 功能简述:基于Web的入侵事件数据库分析控制台; 正式网址:http://www.cert.org/kb/aircert/ 软件版本:0.9.6b21 ADODB 功能简述:为ACID提供便捷的数据库接口;