基于Snort的入侵检测系统的研究

2008-07-14 10:05张治国秦国亮骆德全
电脑知识与技术 2008年18期

张治国 秦国亮 骆德全

摘要:随着互联网的不断发展,入侵检测系统已变成计算机网络安全防范体系的重要组成部分之一。本文是在介绍了入侵检测系统的基本原理的基础上,从体系结构、工作原理两个方面分析了Snort入侵检测系统,并介绍了怎样根据自己的网络环境,编写规则来保护网络的安全。

关键词:入侵检测系统;Snort;编写规则

中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)18-20ppp-0c

Research of Snort-based Intrusion Detection System

ZHANG Zhi-guo, QIN Guo-liang, LUO De-quan

(Computer school, Sichuan University, Chengdu 610065, China)

Abstract: With the development of Internet, IDS has become one important part of network security system. This paper analyzes IDS Snort in structure and working principle aspects, which based on introduction of basic principle of IDS, then we introduce how to create Snort rule to protect our network according to our network environment.

Key words: IDS; Snort; Writing rule

1 引言

互联网的不断发展,网上不断增多的服务种类,使得网络的安全问题变得越来越突出。要保证网络的安全,首先要防范对网络的攻击行为,通常采用防火墙技术。但是,防火墙存在很多的缺陷。因此,通过使用入侵检测系统来加强网络的安全已变得很重要了。而Snort是一种开放的源代码的入侵检测工具,这使得基于Snort的入侵检测系统应用得很广泛。本文就是在这些的基础上,对基于Snort入侵检测系统进行了分析和研究。

2 入侵检测系统

入侵检测(Intrusion Detection,ID),是在有内部非授权行为或外部攻击行为时,及时发现并进行记录和报告,以便有可能采取进一步措施以保护网络的技术,把入侵检测的软件和硬件的组合便构成了入侵检测系统(Intrusion Detection System, IDS)。入侵检测系统主要完成以下功能:监视、分析用户及系统活动;系统构造和弱点的审计;识别反映已知攻击的活动模式并向相关人士报警;异常行为模式的统计分析;评估重要系统和数据文件的完整性;操作系统的审计跟踪管理,并为识别用户违反安全策略的制定提供指南。其通用的模型如图1。

图1入侵检测系统的通用模型

3 Snort入侵检测系统的简介

在市面上有很多的入侵检测系统,比如有ISS公司的Real Secure入侵检测系统、NFR公司的NID入侵检测系统、NAI公司的Cyber Cop Monitor入侵检测系统、Cisco公司的Cisco Secure IDS入侵检测系统等。但是这些商业软件许多都是昂贵而庞大的系统,而基于Snort的入侵检测系统具有便于配置、功能强大、使用灵活等诸多优点,这使得基于Snort的入侵检测系统使用得非常广泛,在业内被喻为“瑞士军刀”。在这里我们主要介绍一下基于Snort的入侵检测系统工作原理以及在网络中应用。

Snort是一个强大的轻量级的网络入侵检测系统. 它是一个跨平台、开放源代码(Open Source)的免费软件,它运行在Libpcap库函数基础上,并支持多种系统软硬件平台,如RedHat Linux、Debian Linux、HP-UX、NetBSD以及MacOSX等。不仅能够进行协议分析、内容检索、内容匹配,而且能够用于检测缓冲区溢出、隐蔽端口扫描、CGI攻击、OS指纹识别等大量的攻击和探测,Snort使用基于规则的匹配模式来检测这些攻击,并提供了模块化的检测引擎,从而使它能够检测出各种不同的攻击方式,并对攻击进行实时报警。

4 Snort的体系结构

Snort使用一种易于扩展的模块化体系结构,开发人员可以加入自己编写的模块来扩展Snort的功能。Snort的体系结构由四部分组成:数据包解码器(嗅探器)、预处理器、检测引擎、日志记录与告警系统,其体系结构如图2所示,首先Snort通过数据解码器从网络中捕获数据包,然后交由预处理器进行处理,然后从检测引擎的所有规则链中进行匹配,若匹配成功,则说明检测到可疑数据,通过告警日志子模块进行记录,告警信息也可存入SQL数据库中。

图2Snort的体系结构

5 Snort的工作流程

基于规则的匹配的是Snort的核心检测机制,其工作流程为:Snort首先读取规则文件,从规则文件中读取每一条规则并对其进行解析,用对应的语法表示出来,然后在内存中建立规则语法树,并初始化和解析规则树,分别生成TCP 、UDP 、ICM和IP四个不同的规则树,每一个规则树包含独立的三维链表:RTN(规则头),OTN(规则选项)和指向匹配函数的指针。当Snort捕获一个数据包时,首先分析该数据包使用哪个IP协议以决定将与某个规则树进行匹配;然后与RTN结点依次进行匹配,当与一个头结点相匹配时,向下与该头结点的OT N结点进行匹配。每个OT N结点包含一条规则所对应的全部选项,同时包含一组函数指针,用来实现对这些选项的匹配操作。当数据包与某个OT N结点相匹配时,即判断此数据包为攻击数据包,而规则匹配流程图如图3。

图3Snort的工作流程

6 Snort的应用实例

Snort是一种开放源代码的网络入侵检测系统,因此我们可以根据网络的变化,编写新的规则来实现对网络的保护。

在命令行中输人启动Snort的命令C:snortin>snort-dev-1 c:snortlog -h 222.18.28.53/24 -c c:snortetcsnort.conf,这个命令以网络人侵检测系统的工作模式启动Snort,并捕获网络的所有数据包,存放到Mysql数据库中。

然后,我们就可以根据网络的实际情况来编写规则。例如我们想监控某种特定的Web内容,就可以按下面的步骤来编写一条规则以实现对网络的监控。

首先,因为HTTP流量是建立在TCP之上的,所以我们需要为该规则建立它使用的TCP协议。

其次,根据你想监控的目标地址来建立规则。比如,你想监控你指定的任何外部地址和它的整个内部网络,这样你需要在规则头中使用﹩EXTERNAL_NET变量和﹩HOME_NET变量;同时你还想让该规则应用到Web服务器,你还需要用到﹩HTTP_PORTS来标志与HTTP连接相关的段端口。这样,形成的规则头为

Alert tcp ﹩EXTERNAL_NET﹩HTTP_PORTS ->﹩HOME_NET any

其中,﹩HOME_NET any是指HTTP请求可以选择目标地址中的任意的端口。

然后,就是编写规则选项来指定你想要监控的内容。假如你想对上面地址中的某个网站的所有的访问进行监控,你就可以把规则选项设置如下:

(msg:"POSSIBLE B-HAT packetstrom content";content:"packetstorm";nocase; flow: to_client; priority:3; rev:1; sid:1000001;)

该规则就是对任何包含“packetstorm”的内容报警。该规则分配了的优先级为3,将它设置为当TCP会话中出现ACK数据包时触发。

通过以上的例子,我们可以看出,只要我们只要懂得了Snort的规则的基本原理后,我们就可以根据我们所在的网络的实际情况,编写规则来保护网络的安全。

7 结束语

Snort作为一个简洁、高性能、易于扩展的网络入侵检测系统,这使得它广泛应用到中小企业的网络防御系统中。而今由网络入侵检测系统、防火墙、病毒防护软件等一起构成多层次的、全面的网络安全防御体系受到越来越多的企业的欢迎,因此我们可以预言基于Snort的入侵检测系统将会被应用得越来越广泛。

参考文献:

[1] 宋劲松.网络入侵检测——分析、发现和报告攻击[M].北京:国防工业出版社,2004:30.

[2] 唐正军,李建华.入侵检测技术[M].北京:清华大学出版社,2004:7-8.

[3] 杨延玉,张同光.入侵检测系统Snort的研究和应用[J].平原大学学报,2007(4):105-106.

[4] 唐正军.入侵检测技术导论[M].北京:机械工业出版社,2004:16-17.

收稿日期:2008-04-05

作者简介:张治国(1983-),男, 重庆万州人,硕士研究生,研究方向:网络技术、网络安全;秦国亮,男,河南安阳人,硕士研究生;骆德全,男,四川攀枝花人,硕士研究生。