基于java的局域网网络入侵检测系统的设计与实现-大学毕业论文_第1页
基于java的局域网网络入侵检测系统的设计与实现-大学毕业论文_第2页
基于java的局域网网络入侵检测系统的设计与实现-大学毕业论文_第3页
基于java的局域网网络入侵检测系统的设计与实现-大学毕业论文_第4页
基于java的局域网网络入侵检测系统的设计与实现-大学毕业论文_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE基于代理的入侵检测系统的实现摘要入侵检测系统在如今的网络安全领域已经成为一个关键性的组件,但传统的入侵检测系统存在的一定的不足,如误报率和漏报率比较高,检测速度慢,占用资源多等。为了适应网络安全的发展需求,针对现有的入侵检测系统,结合移动代理技术,提出了基于移动代理的分布式入侵检测模型。本文首先分析了当今网络安全的现状和存在的问题,指出了传统的入侵检测系统的局限性,并阐述了入侵检测技术的发展历史和研究现状。然后讲叙了分布式入侵检测模型的构成,在该模型各个分布节点上使用Snort抓取网络数据包,并记录可疑攻击数据,通过移动代理技术对可疑数据融合后进行综合分析,完成对分布式入侵的检测功能。该模型在windows环境下实现,采用日本IBM公司的代理移动代理环境,结合Snort入侵检测系统,利用JAVA语言编程,实现从可疑数据中,分析出攻击行为,并自动添加相应规则,增强对网络的保护能力。关键字:分布式;移动代理;入侵检测;Snort;代理

TheRealizationofIntrusionDetectionSystemBasedonAgentAbstractToday,intrusiondetectionsystemhasbecomeakeypartoftheareaofthenetworksecurity,buttherestillhassomedisadvantagesintraditionalintrusiondetectionsystems,suchasthehighfalsepositiverateandthehighfalsenegativerate,theslowlyspeedofdetection,takingupalotofresourcesandsoon.Inordertomeetthedemandsofthenetworksecuredevelopment,thethesisprovidesthemodeofdistributedintrusiondetectionsystembasedonmobileAgenttechnologyaccordingtonowadaysintrusiondetectionsystem.Firstofall,thestatusandexistedproblemsaboutthesecurityofnetworkisanalyzedinthisthesis,whichpointsoutthelimitationsofthetraditionalintrusiondetectionsystems,andgivesdetaildescriptionsofthedevelopmenthistoryandtheresearchstatusoftheintrusiondetectiontechnology.Second,thethesisdescribesthemodeofthedistributedintrusiondetectionsystembasedonmobileAgenttechnology.InthismodeSnortisusedonthedistributednodestograspthenetworkdatapackets,andrecordthesuspiciousdata.ThesystemrealizesthegeneralanalysisonfusedsuspiciousdatacollectedbythemobileAgenttechnology.Thissystemisrealizedinthewindowsoperationsystem,whichadoptstheAgentmobileAgentbelongedtotheJapaneseIBMcompanyandcombinedwithsnortintrusiondetectionsystem.Thesystemdevelopedinjavalanguageanalyzestheintrusionbehavior,increasestherulesautomatically,andstrengthenstheabilityofprotectiontothenetwork.Keywords:distributed;mobileAgent;intrusiondetection;Snort;Agent

目录1 引言 11.1 绪论 11.2 研究现状 11.3 本文主要内容 22 入侵检测和移动代理技术 22.1 入侵检测技术 22.1.1 入侵检测概述 22.1.2 入侵检测的分类 32.1.3 人侵检测系统的发展趋势 42.2 移动代理技术 52.2.1 移动代理 52.2.2 移动代理与入侵检测系统结合的优势 53 基于移动代理的分布式的入侵检测模型 53.1 传统的入侵检测系统缺陷 53.2 基于移动代理的分布式入侵检测系统 63.2.1 系统设计目标 63.2.2 系统模型设计 63.3 系统主要部件介绍 73.3.1 移动代理环境 73.3.2 数据收集 73.4 模型的工作机理 73.5 本模型的优缺点分析 73.6 分布式攻击检测实例 83.6.1 DoorKnob攻击基本原理 83.6.2 检测过程 84 系统的设计与实现 94.1 移动代理代理系统介绍和配置 94.1.1 代理系统架构 94.1.2 代理功能模型 104.1.3 代理安装与配置 104.2 Snort介绍与配置 114.2.1 Snort的简介 114.2.2 Snort系统组成 124.2.3 Snort的安装 124.2.4 Snort的配置 124.2.5 Snort数据库的配置 134.2.6 Snort网络入侵检测的使用 134.3 系统平台的其他重要配置 144.4 系统实现技术 154.4.1 入侵检测数据收集 154.4.2 具体实现中采用的关键技术 154.5 代码分析模块 154.6 下一步工作 23结论 23参考文献 24致谢 25声明 26第1页共26页引言绪论随着计算机网络的飞速发展和应用,人们对网络和计算机的依赖也越来越大。目前,Internet已经成为世界上规模最大、用户最多、影响最广泛的网络。它遍及全球180个国家,包括60多万个网络,为用户提供各种信息服务,以及传播科研、教育、商业和社会信息最主要的渠道。它丰富了人们的文化生话,满足了人们日益增长的信息需求。但是网络病毒的泛滥、保密信息的泄露、计算机黑客入侵,使得网络信息安全问题日益突出。不仅给企业和个人造成巨大的经济损失,严重的甚至威胁着国家政治、经济和军事的安全。根据美国FBI统计,美国每年因网络安全所造成的经济损失高达75亿美元,而全球平均每20秒钟就有一起Internet计算机侵入事件。因此,确保计算机和数据通信网络的安全成为世人关注的社会问题,成为计算机科学技术的热点领域。目前,要解决系统得安全问题,最直接的一个想法就是重新设计并构建新的计算机系统,但这在现实的实践中,是不可行的。Miller给出一份关于现今流行的操作系统和应用程序研究报告,指出不可能出现没有缺陷软件,即使再好的软件技术也无法消除漏洞的出现。其次,要花很长的时间将如今带有安全缺陷的系统转换成安全系统。第三,如今加密技术方法还不完善。第四,安全访问控制等级和用户的使用效率成反比。第五,访问控制和保护模型本身存在一定的问题。第六,在软件工程中存在软件测试不充足、软件生命周期缩短、大型软件复杂性等难以解决的问题。面对以上的问题,可行的解决办法是:建立容易实现的系统,并根据相应得策略建立其辅助系统,以增强网络的安全性。研究现状近年来,从事计算机网络安全的人员,通过对信息系统服务、传输媒介和协议的深入研究,使维护网络安全的产品不断更新换代,从单机的防病毒软件,到网络的防火墙,再到现在的入侵检测系统等等。入侵检测技术是主动保护自己网络免受入侵攻击的一种网络安全技术,而入侵检测系统(IntrusionDetectionSystem,IDS)就是能够实施该功能的工具。IDS能根据入侵行为的踪迹和规律发现入侵行为,从而有效地弥补传统安全防护技术的缺陷,成为防火墙之后的又一道安全防线。1980年4月,入侵检测概念由JamesP.Anderson的提出,这是第一次正式阐述了“入侵检测”这个概念。即提出了一种对计算机系统风险和威胁的分类方法,并将威胁分为外部渗透、内部渗透和不法行为三种,还提出了利用审计跟踪数据监视入侵活动的思想。这被公认为是IDS最初的理论基础。从1984年到1986年,斯坦福研究所的DorothyE.Denning和PeterNeumann研制出了一个实时入侵检测系统模型,取名为IDES(IntrusionDetectionExpertSystem,入侵检测专家系统)。它具有以下的特点,独立的特定系统平台、应用环境、系统弱点以及入侵类型,为构建IDS提供了一个通用的框架,后来在1988年,TeresaLunt等人改进了该入侵检测模型,并开发出了该检测系统。该系统包括异常检测器和专家系统,分别用于统计异常模型的建立和基于规则的特征分析检测。1988年11月莫里斯蠕虫事件发生之后,军方、学术界和企业对网络安全高度重视,这促使了人们投入更多的资金和精力去研发IDS。现在,入侵检测技术的研究正朝智能化和分布式两个方向前进。对入侵检测的研究,从早期的审计跟踪数据分析,到实时入侵检测系统,到目前应用于大规模网络的分布式入侵检测系统,基本上已发展成具有一定规模和相应理论的研究领域。本文主要内容入侵检测至今已发展了20余年,在这过程中出现了数百种基于不同的技术和环境的入侵检测系统,但大多数都具有误报和漏报率高,灵活性有限,可移植性差等缺陷,本文针对这些缺陷,在移动代理(Mobile代理)技术和多系统互操作性的通用入侵检测模型基础上,提出了具有伸缩性的、重用性的、适应性好的基于移动代理的分布式入侵检测模型,并加以了实现。在一定程度上降低了误报和漏报率,并解决了移植性和灵活性差等问题,使网络检测和效率有所提高。本文除了该章外,还有以下主要内容。第二章概述入侵检测和移动代理技术,主要包括入侵检测的概念和分类,以及移动代理的定义和功能。第三章在现有的移动代理和入侵检测工具基础上,分析对比各自的优缺点后,提出面向移动代理的分布式入侵检测系统模型。第四章是系统的具体设计与实现,分析了该模型的一些问题,如移动代理和入侵检测的选材和实现等,并加以实现。第五章对本文作了全面的总结。入侵检测和移动代理技术入侵检测技术入侵检测概述入侵是指任何试图危及计算机资源的完整性、机密性或可用性的行为,而入侵检测是对入侵行为的发觉,它通过从计算机网络或系统中的若干关键点收集信息,并对这些信息进行分析,从而判断是否有违反安全策略的行为和遭到攻击的迹象。进行入侵检测的软件与硬件的组合便是入侵检测系统(IDS)。入侵检测是防火墙的合理补充,帮助系统对付网络攻击,它扩展了系统管理员的安全管理能力,包括安全审计、监视、进攻识别和响应,从而提高了信息安全基础结构的完整性。入侵检测被认为是防火墙之后的第二道安全闸门,在不影响网络性能的情况下能对网络进行监测,从而提供对内部攻击、外部攻击和误操作的实时保护。网络入侵检测系统(IDS)是一项很新的网络安全技术,目前已经受到各界的广泛关注,它的出现是对原有安全系统的一个重要补充。入侵检测的分类根据目标系统的类型的不同可以将入侵检测系统分为如下两类:基于主机的入侵检测系统。通常,基于主机的入侵检测系统可监测系统、事件和操作系统下的安全记录以及系统记录。当有文件发生变化时,入侵检测系统将新的记录条目与攻击标记相比较,看它们是否匹配。如果匹配,系统就会向管理员报警,以便采取措施。基于网络的入侵检测系统。基于网络的入侵检测系统使用原始网络包作为数据源。该系统通常利用一个运行在混合模式下的网络适配器来实时监视并分析通过网络的所有通信业务。根据入侵检测系统分析的数据来源分类。入侵检测系统分析的数据可以是主机系统日志、网络数据包、应用程序的日志、防火墙报警日志以及其他的入侵检测系统的报警信息等。据此可将入侵检测系统分为基于不同分析数据源的入侵检测系统。根据入侵检测分析方法的不同可将入侵检测系统分为如下两类:异常入侵检测监测系统。异常入侵检测系统利用被监控系统的正常行为的信息作为检测系统中入侵、异常活动的依据。误用入侵检测系统。误用入侵检测系统根据已知入侵攻击的信息(知识、模式)来检测系统中的入侵和攻击。根据检测系统对入侵攻击的相应方式的不同可将入侵检测系统分为如下两类:主动的入侵检测系统。主动的入侵检测系统在检测出入侵后,可自动地对目标系统中的漏洞采取修补、强制可疑用户(可能的入侵检测)退出以及关闭相关服务等对策和相应措施。被动的入侵检测系统。被动的入侵检测系统在检测出对系统的入侵攻击后产生报警信息通知系统安全管理员,至于之后的处理工作则有系统管理员完成。根据系统各个模块运行的分布方式的不同,可将入侵检测系统分为如下两类:集中式入侵检测系统。系统的各个模块包括数据的收集与分析以及响应都集中在一台主机上运行,这种方式适用于网络环境比较简单的情况。分布式入侵检测系统。系统的各个模块分布在网络中不同的计算机、设备上,一般来说分布性主要体现在数据收集模块上,如果网络环境复杂、数据量比较大,那么数据分析模块也会分布,一般是按照层次性的原则进行组织。人侵检测系统的发展趋势分布式入侵检测这个概念有两层含义:第一层是针对分布式网络攻击的检测方法;第二层是使用分布式的方法来检测分布式的攻击,其中的关键技术为检测信息的协同处理与入侵攻击的全局信息的提取。分布式系统是现代IDS主要发展方向之一,它能够在数据收集、入侵分析和自动响应方面最大限度的发挥系统资源的优势,其设计模型具有很大的灵活性。智能化入侵检测使用智能化的方法与手段来进行入侵检测。所谓的智能化方法,现阶段常用的有神经网络、遗传算法、模糊技术、免疫原理等方法,这些方法常用于入侵特征的辨识与泛化。利用专家系统的思想来构建入侵检测系统也是常用的方法之一。特别是具有自学习能力的专家系统,实现了知识库的不断更新与扩展,使设计的入侵检测系统的防范能力不断增强,应具有更广泛的应用前景。异常检测和误用检测的结合,使这两种方法能够紧密结合,互补各自的优、缺点。全面的安全防御方案使用安全工程风险管理的思想与方法来处理网络安全问题,将网络安全作为一个整体工程来处理。从管理、网络结构、加密通道、防火墙、病毒防护、入侵检测等多方面对网络作全面的评估,然后提出可行的全面解决方案。基于网络和基于主机的入侵检测系统相互结合这两种方法都有各自的优势,都能发现对方无法检测到的一些入侵行为。比如基于主机的入侵检测系统使用系统日志作为检测依据,因此它们在确定攻击是否已经取得成功时与基于网络的检测系统相比具有更大的准确性。在这方面,基于主机的入侵检测系统对基于网络的入侵检测系统是一个很好的补充,人们完全可以使用基于网络的入侵检测系统提供早期报警,而使用基于主机的入侵检测系统来验证攻击是否取得成功。在新一代的入侵检测系统中,将把现在的基于网络和基于主机这两种检测技术很好地集成起来,提供集成化的攻击签名、检测、报告和事件关联功能。移动代理技术移动代理移动代理是一个自主程序,它能够在异构的网络中从一台主机迁移到另一台主机,在迁移前,暂停自身的执行,封装代码及状态,然后利用传输机制,从一台主机移动到另外一台主机,然后将代码实例化并恢复封存的状态,继续运行。而移动代理系统则是一个允许代理在系统中不同主机前迁移的平台,即一个代理运行环境,代理在其中进行自己的操作。通常情况下,移动代理系统由代理、代理环境和通信信道组成。代理是一个软件实体,可以从一个代理环境移动到另一个代理环境,通过这样可以完成相应的任务。而在移动代理之间以及移动代理和控制台之间的通行是通过通信信道作为媒介进行的。移动代理与入侵检测系统结合的优势将移动代理技术和入侵检测相结合,与传统的IDS相比,主要具有以下的优势:减轻网络负载。捕获的数据不用送回中心分析主机,节约网络资源。独立运行。代理主机独立自动运行。减少误报漏报。通过代理主机,将数据可以综合分析,对于网段攻击检测有很好的效果。基于移动代理的分布式的入侵检测模型传统的入侵检测系统缺陷入侵检测系统通常采用模式匹配方式来检测入侵,即在检测过程中,只是把网络传输的数据流依次进行匹配,而不查看具体数据包的内容。这样一旦发现匹配的字串,不管是不是真正的攻击行为,就会报警。这样不可避免的会导致误报率和漏报率的出现。在模式匹配的检测过程中,网络中的每个数据包都要与特征库中的记录进行比较,据资料指出,假设网络中每秒钟流过15000个数据包,一般情况下,则每秒钟所需要的最大比较次数为:937.5亿次。这样,必然会因为计算机的运算速度跟不上而出现遗漏对很多数据包的检测而产生漏报。对于传统的网络入侵检测系统,并没有相应一个处理模块来收集各个节点的数据进行综合分析,这对一些网络入侵是无济于事。在网络入侵中,有一种名为doorknob攻击方法,入侵者试图猜测网络上几台主机的用户口令,为了避免被入侵主机的怀疑,入侵者只有试图猜了几次放在网络上的几台电脑主机,这样的入侵情况在许多的主机型IDS并不会被检测到,这种入侵网络上一台以上的电脑主机的入侵行为,称之为网段入侵(networkintrusion)。基于移动代理的分布式入侵检测系统系统设计目标对于该系统功能有如下的要求:首先,网络性能要求。在不明显增加网络负载的情况下,能对网络进行入侵检测。其次,记录怀疑不确定行为。攻击的方法在不断的更新,它们的攻击特征也不断变化。所以在不改动系统的情况下,建立某种检测机制,在该分布式系统中,不但对已知的攻击能检测,对不能确定的行为能进行记录。其三,自动完善要求。对怀疑的行为能进行分析和确定是否为攻击行为,若是攻击,能自动添加规则,使系统对该攻击具有免役能力。系统模型设计将移动代理和入侵检测结合起来,让入侵检测系统成为更灵活、更健壮、更自制的检测工具,本文提出基于移动代理的分布式入侵检测模型,是根据移动代理可以自主迁移的特性,该模型系统可以安装具体的网络系统的安全策略配置在任何需要检测的系统中,只要安装了移动代理环境和入侵检测数据收集器,就可以成基于移动代理的分布式入侵检测系统的一部分。本位提出的系统设计模型如图3-1所示:图3-1系统设计模型系统主要部件介绍移动代理环境本系统采用的移动代理环境是由日本IBM公司所提出的代理,它是完全由Java语言开发,并提供实用的平台代理sWorkbench是开发或执行mobile代理系统。代理这个字是由"代理"与"applet"两个字所合成的,简单的说就是具有代理行为的Javaapplet物件。在代理系统中,代理物件是可以在网络中从一台主机移动到另一个主机。代理物件在移动时,会携带程序代码和所有对象的状态数据,并采用了内嵌的安全机制,代理的实现是采用事件驱动方式,并采用对称算法进行域内的身份认证和对移入的代理进行一致性检测,并可通过图形界面(Tahiti管理程序)设置安全访问策略。代理有丰富的API函数,可以很方便的构造应用程序,它提供的通信协议是应用层协议ATP(基于TCP的代理传输协议),但同时也支持JavaRMI。数据收集根据本系统的设计要求,能对分布式攻击检测,所以本文采用入侵检测系统Snort作为数据收集器,记录网络入侵和可疑数据,最终达到在Snort基础上,建立起一个更加完善的入侵检测系统。模型的工作机理本系统的工作过程如下:在分布式的各个节点上运行Snort工具检测攻击,并记录相应的数据到数据库,包括可以数据。启动移动代理环境,运行移动代理程序,该程序会通过遍历所有节点,自动的将各个数据库里可疑的数据提取出来,并通过代理带回移动主机上。在代理主机上对这些各节点的可疑数据综合分析。若分析出攻击行为,则自动添加规则到规则文件中,禁止该行为主机对该保护网络的再次访问。本模型的优缺点分析优点总结网络性能好。该模型的实现是分布在网络的一些节点上,检测时对网络不会有影响,占用网络资源少。自我完善。该模型能对可疑数据记录并综合分析,最终确定是否含有攻击,若有攻击的存在,通过自动添加访问规则来自动完善系统。降低漏报率。通过移动代理将各节点的数据综合分析,让检测分析数据更为准确,实现了对网段攻击检测,在一定程度上弥补了传统的网络入侵检测这方面的不足。不足之处但该模型仍存在着先天的缺陷。因为是对已记录的分布式可疑数据分析,这意味着攻击发生后,才进行系统的检测和完善,即可以检测出这种攻击的再次来袭,但对于第一次的攻击是检测不出来的。分布式攻击检测实例DoorKnob攻击基本原理图3-2实例所处的网络结构假设网络结构如图3-2所示,网络由多个子网构成,每个子网拥有多台主机,攻击者发起DoorKnob攻击的步骤如下:攻击者在时刻t以空密码的root用户尝试登录主机A1,隔一段时间T,在时刻t+T以空密码的root用户尝试登录主机B1,依此类推,在时刻t+2nT以空密码的root用户尝试登录主机Bn。如果没有找到可利用的主机,在时刻t+(2n+1)T以密码123456的root用户尝试登录主机A1,然后再依次类推,直至发现可利用的主机。攻击者通过设置适当的时间间隔T,可避免各主机上的入侵检测组件对其的检测。但是基于移动代理的体系结构能有效的检测这种攻击。检测过程首先,信息收集器收集主机上的可疑信息,把登录失败的信息看作是一种可疑信息,因为登录失败可能是由于用户输入错误,也可能是由攻击者产生的。当移动代理将各主机中的可疑信息融合后可得出图3-3所示信息:图3-3融合后的数据移动代理在各主机之间移动时,可统计各远程主机的登录失败次数,如果超过了一个门限值(比如15),则认为是攻击发生。图3-3中远程主机实际上是在发动DoorKnob攻击,由于在各主机上的登录失败次数都没有超过门限,所以驻留在主机上的IDS无法检测到这种攻击。移动代理访问主机1和主机2后,检测到主机的登录失败次数为13,仍没有超过门限(15),当移动代理迁移到主机3,检测到它的登录失败次数为23,攻击被检测。其它主机的登录失败信息被认为是一种正常情况。系统的设计与实现移动代理代理系统介绍和配置代理系统架构代理s的系统架构主要分为四个阶段,如图4-1所示。首先当一个正在执行的代理程序想要将自己外送到远端时,会对代理sRuntime层发出请求,然后代理sRuntime层把代理的状态消息与运行代码转变成序列化(serialized)的字节阵列(bytearray);接着若是外送的请求成功时,系统会将代理程序的执行动作结束,然后将字节阵列传送至ATCI(代理TransportandCommunicationInterface)层处理,此层提供使用ATP(代理TransferProtocol)的介面,其中ATP为一个简单的应用层协定(application-levelprotocol),如图4-2所示,使用时不必顾虑代理物件是否被派送到不同的代理系统就可以传送代理物件;之后,系统会将字节阵列附上相关的系统信息,像是系统名称以及代理物件的id等,并以bitstream透过网路传至远端工作站。图4-1代理的系统架构下图图4-2ATP的示意图代理功能模型代理系统首先提供了一个环境方便用户来管理代理的基本行为:如创建代理、克隆代理、分派代理到远端机器、召回远端的代理、暂停、唤醒代理以及清除代理等,如图4-3所示。图4-3代理的物件模型代理与代理之间的通信,可用消息传递的方式来传递消息对象。此外,基于安全上的考虑,代理并非让外界直接存取其消息,而是透过一个代理(proxy)提供相应的接口与外界沟通,如图4-4所示。这样做还有一个好处,即代理的所在位置会透明化,也就是代理想要与远端的代理沟通时,只在本地主机的上下文环境中产生对远端代理的代理,并与此代理沟通即可,不必直接处理网络连接与通信的问题。图4-4代理基本功能介面代理安装与配置安装jdk-1_5_0_06-windows-i586-p.exe到G:\Java\jdk\,完成安装后,在环境变量里给出java\bin的路径。在网上下载代理s-2.0.2.jar,并解压到G:\代理s\,可以看见以下文件META-INF、BIN、CNF、INSTALL.html、LIB、LICENSE.html、PUBLIC。设置代理环境变量:(在MS-DOS)cd到G:\代理s\binsetant_home=G:\代理ssetjava_home=G:\Java\jdk在bin下输入ant,并确定,等上一会儿,系统会在bin下生成.keystore,java.policy。打开.java.policy,将G:\代理s/lib改为G:\\代理s/lib,保存退出。先将.keystore,java.policy拷贝到F:\WINNT下,在将.keystore拷贝到F:\DocumentsandSettings\Administrator下。在bin下输入代理sd,并确认,过一会儿可以看到登陆界面,如图4-5所示,输入用户名:代理_key,密码:代理s后,即可登陆Tahiti界面,如图4-6所示,Tahiti是可视化代理管理界面,让使用者方便地监视和控制代理的执行,单击Tahiti界面中的create,弹出Create代理窗口,点击下面列表中的示例,如examples.hello.He1lo代理,再点击左下角的create,会弹出对话框,这样就产生了一个代理。图4-5代理登录界面图4-6Tahiti运行界面Snort介绍与配置Snort的简介Snort是一个开放源代码的网络入侵监测系统,其主要功能是实时记录和分析IP网络中的数据流。通过对协议的分析、数据包内容的搜索和匹配,它能被用于监测许多攻击和扫描,如缓冲区溢出、端口隐蔽扫描、CGI攻击、SMB探测、操作系统识别探测等等。Snort是基于特征检测的IDS,使用规则的定义来检查网络中的有问题的数据包。一个规则被触发后会产生一条告警信息。Snort系统组成Snort主要由以下四个基本模块组成:数据包嗅探器、预处理器、检测引擎和报警输出模块。这些模块使用插件模式和Snort结合,扩展起来非常方便,既保障了插件程序和Snort的核心代码的紧密相关性,又保障了核心代码的良好扩展性。例如有预处理和检测插件,报警输出插件等。预处理和检测插件使Snort的检测引擎能够更有效地检测数据包的内容,报警输出插件可以用多种方法输出报警信息。Snort的安装安装Winpcap(windowspacketcapture)Winpcap是Windows平台下一个免费、公共的网络访问系统,它为win32应用程序提供访问网络底层的能力。Winpcap不能阻塞、过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。它提供了以下的各项功能,这些功能均有助于以太网数据流监视软件功能的实现:捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据报;在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;在网络上发送原始的数据报;收集网络通信过程中的统计信息。安装MS-SQL安装MS-SQL企业版,安装过程中将数据库访问的用户"sa"的密码配置好,比如:"sa"。安装完成后,在企业管理器里,建立一个名为"Snort"的数据库。Win2K环境下安装SnortSnort的配置在使用Snort之前,需要根据网络环境和安全策略对Snort进行配置。主要包括:设置网络变量配置记录方式配置所使用的规则集在此并不需要自己编写配置文件,只需要对Snort.conf文件进行修改即可。这个文件包含了大量的默认设置,而且有很好的注释,用户可以方便地对Snort进行配置。首先,对主要的配置项目介绍如下:HOME_NET变量:该变量指入侵检测保护的网络是哪个网段。要对该变量进行设置,找到varHOME_NETany,并把any换成需要检测的网段地址就可以了,比如:34/25。配置记录方式:找到outputdatabase,针对不同的数据库,有相应的选项,比如:outputdatabase:log,mssql,dbname=snortuser=sapassword=sa,填好将检测日志记录到什么数据库,并给出访问该数据库的用户名和密码。在Snort安装路径下有一个rules文件夹,里面定义了一些检测规则,如果检测到符合规则的数据,会自动根据规则定义的动作做出相应的响应。用户可以在该文件夹下定义更适合自己网络环境的规则文件,然后在配置文件里将其包括进去,比如:#include$RULE_PATH/myrule.rules。Snort数据库的配置数据库作为数据存储的部件,也要进行相应设置,主要有以下的两个部分:建立表单。Snort目录下,自带了MS-SQL、oracle等数据库创建表单的文件,用户在查询分析器里打开相应的表单创建文件,并运行就完成了Snort表单的创建。数据源驱动。在计算机数据源(ODBC)里的“用户DSN”里添加数据源,在创建过程中选择"Snort"数据库,并填好能访问该数据库的用户名以及密码,比如用户名为"sa",密码"sa"。Snort网络入侵检测的使用snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的数据流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网络入侵检测模式是最复杂的,但是可以根据用户的需求进行配置。可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。Snort是在命令行模式下运行的,在Windows环境下,要借助于“命令提示符”。下面对网络入侵检测系统进行介绍:snort最重要的用途还是作为网络入侵检测系统(NIDS),使用下面命令行可以启动这种模式:Snort-dev-l/../log-h/24-c/../etc/snort.conf其中“/../”表示Snort文件的安装路径。snort.conf是规则集文件。snort会对每个包和规则集进行匹配,发现这样的包就采取相应的行动。如果不指定输出目录,snort就输出到/var/log/snort目录。注意:如果想长期使用snort作为自己的入侵检测系统,最好不要使用-v选项。因为使用这个选项,使snort向屏幕上输出一些信息,会大大降低snort的处理速度,从而在向显示器输出的过程中丢弃一些包。此外,在绝大多数情况下,也没有必要记录数据链路层的包头,所以-e选项也可以不用:snort-d-h/24-l./log-csnort.conf这是使用snort作为网络入侵检测系统最基本的形式,日志符合规则的包,以ASCII形式保存在有层次的目录结构中。在运行Snort工具时,界面如图4-7所示。图4-7Snort运行界面系统平台的其他重要配置该系统配置在win2k系统下,为了系统能正常的工作,还需要以下配置:下载数据库动态驱动解压到本地某一文件夹中,该驱动包括:msbase.jar、mssqlserver.jar、msutil.jar并在环境变量中给出其路径。结果最后显示java开发的可视化界面上,对于代理的安全设置默认是不允许的,这就需要在其策略文件(F:\DocumentsandSettings\Administrator\.代理s\security\代理s.policy)里添加安全规则:permissionjava.lang.RuntimePermission"exitVM";本系统要对F:\Snort\rules\myrules.rules文件进行读写操作,所以必须要在代理的策略文件中要添加以下语句:permissionjava.io.FilePermission"F:\\Snort\\rules\\myrules.rules","read";permissionjava.io.FilePermission"F:\\Snort\\rules\\myrules.rules","write";系统实现技术入侵检测数据收集启动snort工具cd到F:\snort\bin下输入命令:snort-d-h/25-lf:\snort\log-cf:\snort\etc\snort.conf-i2其中-i2指通过本地网卡的接口来检测,其中编号为2,对于不同的主机,编号可能有所不同。具体实现中采用的关键技术数据的携带。该系统使用了单项链表实现在访问分布式计算机的时候,将分布式数据库的数据带回到代理主机。分析结果的显示。在分析完数据,将可疑地址通过java可视化界面显示在屏幕上。分析结果的记录。通过java对规则文件的操作,通过自动添加规则对可疑入侵行为来加以限定。代码分析模块该模块主要包括两个部分:移动遍历代理和数据分析处理。移动遍历代理主要完成数据的提取,数据分析处理主要完成数据的分析记录,自动增加相应的规则禁止入侵地址再次访问。该模型实现的代码如下:packagedesign;importcom.ibm.代理.*;importcom.ibm.代理.event.*;.*;.URL;importjava.sql.*;importjava.util.*;importjava.io.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.lang.*;publicclassdesignextends代理{int_theRemote=0;URLtarget;String[]ip;nodeend,head,temp,search,pre;classnodeimplementsSerializable//数据移动前序列化{StringIpSo;intTimes;nodenext;}//实现数据从数据库的读取privatevoidmyJDBC(){//把驱动、数据源通过变量传递StringDriver="sun.jdbc.odbc.JdbcOdbcDriver";Stringsource="jdbc:odbc:snort";try{//查找用于JDBC驱动的类,这种查找会使得JAVA虚拟机装入该类,这个类的静态//初始化语句块会对驱动程序进行初始化,从而下面可直接使用该驱动程序进行//数据库连接,无需要做其他额外的事情Class.forName(Driver);}catch(ClassNotFoundExceptionexc){//当没有驱动程序时,应用程序无法继续运行,故退出程序System.out.println("没有发现驱动程序:"+Driver);exc.printStackTrace();System.exit(1);}try{//建立与指定数据库的连接ConnectionConnection=DriverManager.getConnection(source);SQLWarningwarn=Connection.getWarnings();while(warn!=null){System.out.println(warn.getMessage());warn=warn.getNextWarning();}//创建一个用于执行预编译SQL的语句对象:查询记录的cidStringsql="selectip=dbo.inet_ntoa(ip_src)fromiphdr,event,signaturewhereiphdr.cid=event.cidandsignature=signature.sig_idandsig_name='SCANProxy(8080)attempt'";PreparedStatementpStm=Connection.prepareStatement(sql);//发送和执行预编译的SQL语句,获得查询结果集ResultSetresult=pStm.executeQuery();//"i"用于记录读出数据库多少个记录,"j"在输出记录时用于循环inti=0,j=0;//使用迭代模式访问查询结果集,计算有多少条数据while(result.next()){i++;}//关闭查询结果集合result.close();//关闭SQL语句pStm.close();System.out.println("i="+i);i=i-1;//建立"i"个单元的数组ip=newString[i+1];//再读数据库//创建执行简单SQL语句的SQL语句对象Statementstm=Connection.createStatement(); //查询记录的IP地址,发送和执行简单SQL语句,获得查询结果集sql="selectip=dbo.inet_ntoa(ip_src)fromiphdr,event,signaturewhereiphdr.cid=event.cidandsignature=signature.sig_idandsig_name='SCANProxy(8080)attempt'";result=stm.executeQuery(sql);//使用迭代模式访问查询结果集,把数据用数组接受下来while(result.next()){ip[j]=result.getString("ip");j++;}//输出数组for(j=0;j<=i;j++){intk=j+1;System.out.println("第"+k+"个IP地址:"+ip[j]+"\t");}//关闭查询结果集合result.close();//关闭SQL语句stm.close();//关闭数据库连接Connection.close();}catch(SQLExceptionexc){System.out.println("在执行数据库访问时发生了错误!");exc.printStackTrace();}}//建立单项链表,添加头和尾,并把第一个ip地址插入进去。privatevoidaddhead(){temp=newnode();head=temp;temp=newnode();temp.IpSo="end";end=temp;head.next=end;temp=newnode();temp.IpSo=ip[0];temp.Times=1;temp.next=head.next;head.next=temp;}//在链表尾添加节点,并把数据写道刚建立的节点中privatevoidaddnode(){inti;if(_theRemote==0)i=1;elsei=0;while(i<ip.length){search=head.next;booleant=false;temp=newnode();pre=temp;while(!t&&(search.next!=null)){if(ip[i].equals(search.IpSo)){t=true;break;}pre.next=search;search=search.next;}if(t){search.Times=search.Times+1;}else{search=pre.next;temp=newnode();temp.IpSo=ip[i];temp.Times=1;temp.next=search.next;search.next=temp;}i++;}}//遍历链表,把链表的节点值输出privatevoidprint(){search=head.next;while(search!=null){if(search.Times>10){System.out.println(search.IpSo+":"+search.Times+"次");}search=search.next;}}//数据分析处理privatevoidaddrule(){StringIP="可疑地址:";System.out.println("检查分析数据中(是否有攻击数据)………………");search=head.next;JFrameframe=newJFrame("基于代理平台的分布式入侵检测系统");frame.setLocation(newPoint(341,256));JPanelcontentPane=(JPanel)frame.getContentPane();contentPane.setPreferredSize(newDimension(341,129));JLabelLabel1=newJLabel("数据分析完毕,可疑结果已经记录",JLabel.CENTER);contentPane.add(Label1,BorderLayout.NORTH);JLabelLabel2;while(search!=null){if(search.Times>3){try{RandomAccessFileraf=newRandomAccessFile("F:\\Snort\\rules\\myrules.rules","rw");System.out.println("Filelength="+raf.length());intL=(int)raf.length();raf.seek(L);raf.writeBytes("alerttcp"+search.IpSo+"any->$HOME_NETany;");raf.close();IP=IP+""+search.IpSo;Label2=newJLabel(IP,JLabel.CENTER);contentPane.add(Label2,BorderLayout.CENTER);System.out.println(search.IpSo+":"+search.Times+"次");}catch(IOExceptione){System.out.println("addrules.打开文件出错!");}}search=search.next;}frame.pack();frame.setVisible(true);System.out.println("数据已分析处理完毕!");}publicvoid

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论