基于SNORT的入侵防御系统的实现---毕业论文

上传人:红** 文档编号:1690669 上传时间:2019-11-02 格式:DOC 页数:69 大小:1.98MB
返回 下载 相关 举报
基于SNORT的入侵防御系统的实现---毕业论文_第1页
第1页 / 共69页
基于SNORT的入侵防御系统的实现---毕业论文_第2页
第2页 / 共69页
基于SNORT的入侵防御系统的实现---毕业论文_第3页
第3页 / 共69页
点击查看更多>>
资源描述
本 科 毕 业 论 文 基于 SNORT 的入侵防御系统的实现 The Implementation of SNORT-Based Intrusion Prevention System 姓 名: 学 号: 学 院:软件学院 系:软件工程 专 业:软件工程 年 级: 指导教师: 年 月 摘 要 在网络化高度发达的今天,从网络中获取信息已经成为人们日常生活中不可分割的一部 分。网络已经成为经济、文化、军事和社会活动中无处不在的工具。在带来发展的同时,网 络安全问题也随之突显出来。在这样的环境下,网络安全技术不得不与时俱进,以增强网络 安全的保障。传统的入侵检测系统,防火墙等在保障信息安全上都发挥着巨大的应用,但是 他们的作用单一,无法应对复杂多变的网络环境。入侵检测系统具有发现入侵、记录事件的 功能,其重点在于入侵行为的检测上,缺乏对于入侵的应对和阻断能力。防火墙对流经的网 络流量进行检测,拦截不符合安全策略的数据包。但是防火墙的访问规则是静态的,不能动 态地响应入侵行为的变化。本文将入侵检测和防火墙相结合,来实现一个简单的入侵防御系 统 IPS。论文主要研究了以下三方面的问题: 第一、对入侵检测系统 Snort 的工作原理和报警信息的内容进行研究,并在代码中实现 调用 Snort 的工作。 第二、实现一个基于 API 的包滤器式的防火墙,能够限制一台指定 IP 地址、端口号的 客户机,对本机发送 TCP、UDP 或者 ICMP 的数据包。 第三、实时获取 Snort 报警信息,解读警报中的关键字段,动态地对防火墙进行设置。 从而在发现恶意行为的伊始,阻断产生威胁的连接,达到防御入侵的效果。 关键词:入侵防御系统;入侵检测技术;Snort;防火墙;过滤器 Abstract With rapid development of the Internet nowadays, obtaining information from the network has become an inseparable part of our daily life. The Internet has been widely used as a ubiquitous tool in our economic, cultural, military and social activities. In addition to benefits of development, the security problem of network is being highlighted. In such an environment, network security technology is required to keep pace with the times so as to improve the level of network security. Although traditional IDS (Intrusion Detection System), firewall and so on are playing a significant role in information security, they are unable to cope with the complex and changeable network environment. For instance, IDS has the ability of detecting and recording events. It focuses on detecting intrusion behavior, but can not fulfill the function of blocking and responding to intrusion; firewall has the capability of detecting network traffic and intercepting the packets which do not conform to the safety strategy. But the access rules of firewall are static, they can not respond to changeable invasion behavior in a dynamic way. In this thesis, the author combines IDS and firewall to implement a simple IPS (Intrusion Prevention System). The whole work mainly focuses on the following three aspects: Firstly, the thesis researches the working principle and the alert information of Snort so as to prepare for calling the detection function of Snort. Secondly, the thesis aims to implement a firewall based on API packet filter. It is expected to restrict a client with a certain IP address and port number to sending packets to the host by TCP, UDP or ICMP protocol. Thirdly, the thesis analyzes how to gain real-time Snort alerts, read the key fields of it, and configure the firewall dynamically so as to block the potential threatening connection at the beginning of malicious behavior and realize invasion defense. Key words: Intrusion Prevention System; Intrusion Detection Technology; Snort; Firewall; filter 目录 第一章 绪论 .1 1.1 选题背景和研究意义 1 1.2 入侵防御软件的发展历程 2 1.3 国内外发展现状 4 1.4 本文的主要工作和论文结构 5 第二章 背景知识 .6 2.1 入侵检测的概念.6 2.1.1 基本术语 .6 2.1.2 IDS 基本结构 .7 2.1.3 入侵检测的分类.7 2.1.4 入侵检测性能关键参数 .8 2.1.5 入侵诱骗技术、蜜罐技术与入侵响应技术 .8 2.2 入侵防御的核心思想和模型.9 2.3 Snort 介绍 10 2.3.1 Snort 原理 10 2.3.2 Snort 系统组成 11 2.4 防火墙的类别与特点12 2.4.1 包过滤防火墙12 2.4.2 应用代理防火墙12 2.4.3 复合型防火墙13 2.4.4 防火墙操作系统 14 2.4.5 防火墙的抗攻击能力与局限性 14 2.4.6 防火墙术语14 2.5 本章小结 .15 第三章 S nort 的部署与分析.16 3.1 Snort 的配置 16 3.1.1 Snort 的安装 16 3.1.2 Snort 配置文件的修改 17 3.1.2 Snort 连接数据库 17 3.2 Snort 的使用 18 3.2.1 Snort 的运行 18 3.2.2 BASE 分析引擎 .19 3.3 SNORT报警信息分析 .21 3.3.1 从数据库中还原警报信息22 3.3.2 警报的具体含义22 3.3.3 报警信息处理方案24 3.4 本章小节 .25 第四章 包过滤式防火墙的实现 26 4.1 简介 .26 4.2 MyFirewall 的结构 .26 4.3 MyFirewall 的工作流程 .27 4.4 核心代码分析 .29 4.5 本章小结 .30 第五章 MyIPS 的设计与实现.31 5.1 MyIPS 系统设计 31 5.1.1 UI 界面设计 .31 5.1.2 系统结构设计 .32 5.1.3 数据库设计 .33 5.2 MyIPS 详细设计说明 34 5.2.1 入侵检测模块34 5.2.2 监听报警模块36 5.2.3 入侵响应模块和包过滤器模块38 5.2.4 界面美化工作42 5.3 实验结果和相关问题的讨论 .42 5.4 本章小结 .45 第六章 总结 46 参考文献 .48 致谢 .49 Contents Chapter 1 Introduction 1 1.1 Research Topics Background and Significance.1 1.2 Intrusion Prevention Systems Developing Process.2 1.3 The Status Quo at Home and Abroad.4 1.4 The Main Work and Structure of This Thesis5 Chapter 2 Background Knowledge .6 2.1 The Concept of Intrusion Detection 6 2.1.1 Basic Terms 6 2.1.2 The Basic Structure of Intrusion Detection System .7 2.1.3 Types of Intrusion Detection.7 2.1.4 Key Parameter of Intrusion Detections Performance .8 2.1.5 Intrusion Deception Technology,Honeypot and Intrusion response Technology .8 2.2 The Kernel and Model of Intrusion Prevention System.9 2.3 Snorts Introduction10 2.3.1 Snorts Elements .10 2.3.2 Snorts Structure11 2.4 The Category and Characteristics of Firewall .12 2.4.1 Packet Filter Firewall.12 2.4.2 Application Gateway Firewall 12 2.4.3 Compound Firewall13 2.4.4 Operation System with Firewall .14 2.4.5 Firewalls anti-attack ability and Limitations 14 2.4.6 Basic Terms 14 2.5 Chapter Summary15 Chapter 3 Snorts Deployment and Analysis .16 3.1 Snorts Deployment16 3.1.1 Snorts Installation16 3.1.2 Configure with Snort Files.17 3.1.2 Snorts Connection with Database.17 3.2 Make Use of Snort18 3.2.1 Operation Snort18 3.2.2 Cooperate with BASE .19 3.3 Analysis Snorts Alert Information21 3.3.1 Rebuild Alert Information from Database.22 3.3.2 Alerts Detail 22 3.3.3 Solution about How to deal with Alert Information.24 3.4 Chapter Summary25 Chapter 4 Implement of Packet Filter Firewall .26 4.1 Introduction.26 4.2 MyFirewall Structure.26 4.3 MyFirewalls Work Flow27 4.4 Analysis of Core Code29 4.5 Chapter Summary30 Chapter 5 MyIPSs Design and Implement31 5.1 System Design31 5.1.1 UI Design.31 5.1.2 Structure Design .32 5.1.3 Database Design .33 5.2 Detailed Design34 5.2.1 Intrusion Detection Module .34 5.2.2 Alert Listen Module .36 5.2.3 Intrusion Deception Module and Packet Filter Module 38 5.2.4 UI Beautification.42 5.3 The Experimental Results and Discuss Related Issues42 5.4 Chapter Summary45 Chapter 6 Summary .46 References48 Acknowledgement.49 基于 Snort 的入侵防御系统实现 1 第一章 绪论 1.1 选题背景和研究意义 信息化高度发达的今天,数据通信网络日益普及,信息的获取和交换日趋便利。与此同 时,它也为网络攻击提供了新的途径与平台,网络安全因此受到了极大的威胁,但是,传统的 防火墙和 IDS 有着自身的明显不足。根据 Vandyke Software (美国网络安全软件开发商) 2003 年的调查显示,在目前网络安全事件的受害者中, 86%的用户使用了防火墙, 42%的用户使用了 入侵检测系统 1( Intrusion Detection System, IDS)。目前的问题是,安全模型在变化:在越来 越多可以穿越防火墙的流量中,夹带着攻击,即面向应用的攻击。 大部分防火墙检查的层次主要集中在传输层以下,即使是优秀的防火墙也只能提供一小 部分深度检测能力 2。当企业服务器接受了这些“糖衣炮弹” 后,攻击者就可以此为跳板,向 企业内网发送大量的攻击性报文。一旦这些人在服务器上留下“rootkit”、 “back door”等后门, 那么它就可以在任何时间、任何地点无限制的访问企业整个信息系统。 而 IDS 系统是作为一个旁观者监控网络中的流量信息,同时记录下可疑的流量。IDS 相 当于一个安装在轿车上的报警器,每天会产生大量的报警信息,然而,大多数是误报。虽然 如此,却又不能对其置之不理,因为真正的攻击信息可能夹杂其中。所以需要专门有富有专 业知识的人员对大量的信息进行分析,然后人工采取响应措施。在整个过程中,一但有一环 节出错,就给了入侵者可乘之机。 在这种情况下,入侵防御系统( Intrusion Prevention System, IPS)作为一种全新的技术应运 而生。IPS 技术可以深入分析各种协议报文,从中找出隐藏的攻击数据,对恶意报文进行丢 弃以阻断攻击,并且通过报警、联动、阻断等手段直接或间接的保护网络 3。和传统技术相 比,IPS 的优点是当它检测到攻击企图后,它会自动地将攻击包丢掉或采取措施将攻击源阻 断。 IPS 智能响应的特质可以即时有效地处理攻击信息,这对于目前复杂多变的网络环境是 十分重要的。随着时代发展,IPS 在网络安全领域意义越来越大,政府、学校和银行机构都 逐渐开始部署 IPS。可以说,谁能在 IPS 技术上占据优势,谁就能成为未来几年网络安全领 域的领跑者。 基于 Snort 的入侵防御系统实现 2 1.2 入侵防御软件的发展历程 说到入侵防御系统,不能不提他的前身入侵检测系统。本节从入侵检测系统的起源谈起, 介绍到近年来入侵防御系统出现这段期间的发展历程。 1.2.1 入侵检测系统的起源 一般意义上,业界将 James P. Anderson 在 1980 年发布的那篇Computer Security Threat Monitoring and Surveillance作为入侵检测概念的最早起源,在这篇文章里,不仅将威胁分为 了外部渗透、内部渗透和不法行为三种,还创造性的提出了将审计技术应用到对威胁的检测 上来。没错,虽然不论厂商还是用户,都是先开发/ 拥有入侵检测产品,而后再考虑审计产品, 但从单纯的技术上来说,入侵检测技术的确是起源于审计技术,所不同的是,入侵检测更关 注“坏”的事件,而审计产品则更多关注“好”事件。 但这只是一个概念的起步,一直到 1986 年 Dorothy Denning 等人才在其论文 An Intrusion Detection Model 中给出了一个入侵检测的抽象模型 IDES(入侵检测专家系统),并在 1988 年 开发出一个 IDES 系统。 在这个模型的基础上,1990 年加州大学戴维斯分校的 L.T.Heberlein 等人开发出了第一个 真正意义上的入侵检测系统 NSM(Network Security Monitor),在这个实物模型中,第一次采 用了网络实时数据流而非历史存档信息作为检测数据的来源,这为入侵检测系统的产品化做 出了巨大的贡献:再也不需要将各式各样的审计信息转化为统一格式后才能分析了,入侵检 测开始逐步脱离“审计”的影子。入侵检测系统发展史翻开了新的一页,两大阵营正式形成: 基于网络的 IDS 和基于主机的 IDS。 1.2.2 入侵检测系统的成长与发展 1988 年之后,美国开展对分布式入侵检测系统(DIDS)的研究,将基于主机和基于网 络的检测方法集成到一起。DIDS 是分布式入侵检测系统历史上的一个里程碑式的产品。 上世纪 90 年代中期,商业入侵检测产品初现端倪,1994 年出现了第一台入侵检测产品: ASIM。而到了 1997 年,Cisco 将网络入侵检测集成到其路由器设备中,同年,ISS 推出 Realsecure,入侵检测系统正式进入主流网络安全产品阶段。 在这个时期,入侵检测通常被视作防火墙的有益补充,这个阶段用户已经能够逐渐认识 到防火墙仅能对 4 层以下的攻击进行防御,而对那些基于数据驱动攻击或者被称为深层攻击 基于 Snort 的入侵防御系统实现 3 的威胁行为无能为力。厂商们用得比较多的例子就是大厦保安与闭路监控系统的例子,防火 墙相当于保安,入侵检测相当于闭路监控设备,那些绕过防火墙的攻击行为将在“企图作恶” 时,被入侵检测系统逮个正着。 而后,在 20012003 年之间,蠕虫病毒大肆泛滥,红色代码、尼姆达、震荡波、冲击波 此起彼伏。由于这些蠕虫多是使用正常端口,除非明确不需要使用此端口的服务,防火墙是 无法控制和发现蠕虫传播的,反倒是入侵检测产品可以对这些蠕虫病毒所利用的攻击代码进 行检测( 就是前面提到的滥用检测,将针对漏洞的攻击代码结合病毒特征做成事件特征,当发 现有该类事件发生,就可判断出现蠕虫。),一时间入侵检测名声大振,和防火墙、防病毒一 起并称为“网络安全三大件” 。 1.2.3 入侵防御系统的出现 正当入侵检测概念如日中天之际,2003 年 GARTNER 的一篇入侵检测已死的文章, 带来了一个新的概念:入侵防御。在此之前,防火墙产品之所以不能做 4 层以上的分析,有 一个原因就是分析性能跟不上,入侵检测产品由于采用旁路部署方式,对数据实时性的要求 不是很高。当硬件发展和软件算法都足以支撑串行设备进行深层分析的时候,串接在网络中, 对应用层的威胁行为也能发现并防御的产品需求就呼之欲出了。一时间,在各大网络安全论 坛都对 IPS 将能否取代 IDS 展开了激烈的讨论。 事实上,自 2002 年 IPS 概念传入国内起,IPS 这个新型的产品形态就不断地受到挑战 4。 当时各大安全厂商、客户都对 IPS 的兴趣都不太大,有人提出这样的观点是:在 IDS 基础上 发展起来的 IPS 产品,在没能解决 IDS 固有问题:“误报”和“滥报”的前提下,是无法得 到推广应用的。 现在 IPS 的市场份额比起前几年已经大幅上升,但是和拥有近 20 年应用历史的 IDS 相比, IPS 的技术和市场都尚未成熟。虽然所以在相当长一段时间内,IDS 与 IPS 技术仍将保持并 驾齐驱的局面。这也是新旧事物共存的一个必然过程。 但是我们可以看到,IDS 的工作方式决定了其缺乏实时响应能力的缺陷,IPS 弥补了这个 缺陷,实现了动态保护。虽然 IPS 目前也存在一些问题,比如没有解决 IDS 系统遗留下来的 “误报” 、 “滥报” ,而且在线接入的工作方式对它的性能提出了苛刻的要求。但是从时代发展 的趋势来看,IPS 的缺点是技术性的,随着技术的进步,IPS 成为网络安全防护的主流工具是 必然的。可以说,谁能够突破技术上的困难,开发出优秀的 IPS 产品,谁在未来的 10 年内, 基于 Snort 的入侵防御系统实现 4 能够占据网络安全领域的领导地位。 1.3 国内外发展现状 国内安全厂商对 IPS 的开发起步较晚,直到 2005 年 9 月才由绿盟科技推出了第一款具有 自主知识产权的 IPS 产品 冰之眼网络入侵保护系统 ICEYE NIPS,打破了国外产品垄断 的局面。 国内目前对于 IPS 研究处于领先地位的是启明星辰,它的入侵防御产品天清系列融 合了基于攻击躲避原理的阻断方法与基于攻击特征的阻断方法,提高了对深层攻击行为的识 别能力,而且对攻击变种,SQL 注入等无法通过特征判断的攻击行为也能实现精准阻断。 国外的 IPS 巨头则比较多,IBM 、McAfee 、ISS 、TippingPoint、赛门铁克均在此领域有 所建树。其中 TippingPoint 起步较早,在 04 年由世界领先的网络与安全测试机构 NSS Group 组织的性能测试中独领风骚,荣获金牌奖。它的产品 UnityOne 是一个由最新型的网络处理器 技术组成的一个高度专业化的硬件式入侵检测防御平台。在具有千兆处理速度的同时处理延 迟不到一微秒,且具有高度的检测和阻挡准确性。随后多家网络安全公司加快了研发的步伐, 呈现出百花齐放的局面。McAfee 旗下产品 McAfee IntruShield 在 2003 年第四季度2005 年第 一季度保持到 IPS 全球收入第一名的好成绩。而 IBM 在 2006 年收购 ISS 后,IBM ISS 旗下 产品以高达 22%的全球份额成为这一领域的领跑厂商。 以上提到的所有公司都是从 IDS 产品做起,他们在看到 IPS 这一块巨大的潜力之后,都 先后进行了 IPS 产品的研发及推广。其中最具有代表的就是 IBM ISS,它从占据统治地位的 入侵检测设备领域转移到入侵防御速度之迅速,令整个市场都惊叹不已。而且同时推出了高 端和低端的 IPS 产品也证明了 IBM ISS 的产品开发的决心。 从市场上来看,IDS/IPS 产品正在网络安全领域扮演着越来越重要的角色。国内的市场 销售额从 2003 年的 2.75 亿元,到 2004 的 3.8 亿元,再到 2005 年的 5. 5 亿元,增长比突破 了 40%。赛迪顾问最新发布的“2006 年第二季度中国网络安全产品市场分析报告 ”中显示,2006 年第二季度,中国网络安全产品市场总体规模达 11.37 亿元,比 2006 年第一季度增长 23.2%。 根据世界级咨询公司 Frost Source create_mysql; 基于 Snort 的入侵防御系统实现 18 Grant all on *.* to “snort”localhost” (3)用同样的方法创建 snort_archive 表 如表 3-2 第三条所示,我们取消掉 output database 项的注释,并将参数改为 alert, mysql, user=snort password=snorttest dbname=snort host=localhost encoding=ascii detail=full(其中 alert 参数表示仅仅将警报信息存入数据库) 。这样,Snort 与数据库联系的通道就建立起来了。 (数 据库内容如图 3-1 所示) 图 3-1:Snort 数据库的清单 3.2 Snort 的使用 首先在控制台运行 Snort,随后通过 BASE 分析引擎来观看 Snort 捕获到的数据。 基于 Snort 的入侵防御系统实现 19 3.2.1 Snort 的运行 Snort 是控制台方式运行的应用程序,其使用的功能由命令行传入的参数决定。在此段落 对本项目中需要用到的命令做一些解释。 常用命令:snort -i 4 -dev -c c:snortetcsnort.conf -l c:snortlog -h 192.168.1.0/24 参数解释: -i 用来指定捕获数据包使用的网卡,在多网卡的情况下需要先用-W 参数来查看本机的 网卡列表,确认正在连接网络所使用的网卡,因为本机安装了虚拟机,所以物理网卡排在列 表在第四,故使用-i 4。 dev 嗅探所有类型的数据包,并且给出数据包的详细信息。 -c 指定配置文件所在路径。 -l 指定 log 文件所在路径。 -h 启用混杂模式,对一个网段进行监听。 输入 snort -i 4 -dev -c c:snortetcsnort.conf -l c:snortlog -h 192.168.1.0/24,Snort 开始运行, 捕获数据的同时按照配置文件的设置将警报信息存入数据库。 运行效果如图 3-2 所示: 基于 Snort 的入侵防御系统实现 20 图 3-2:Snort 运行显示 3.2.2 BASE 分析引擎 从上一节的运行结果来看,Snort 通过命令控制台的输出信息不太友好,而储存在数据库 中的数据还不了解其内容,不利于我们进行分析工作。为了对 Snort 的报警信息进行研究, 首先需要一个直观的可视化界面。 为了达到这个目的,本项目以 BASE 分析引擎为参考来分析 Snort 数据。BASE 即基本分 析和安全引擎,是一个基于 WEB 的 GUI(图形用户界面) 。这里使用的 WEB 平台为 Apache 服务器+PHP+ADODB 的组合, BASE 运行效果如图 3-3 所示: 基于 Snort 的入侵防御系统实现 21 图 3-3:BASE 分析界面 如果数据库连接正常的话,运行 BASE 便会自动获取到 Snort 存入数据库的警报信息。 可以清楚的看到,右侧的图标对 Snort 捕获到的 TCP、UDP 和 ICMP 的数据包数量进行了统 计。而左侧列出了“警告数” , “来源 IP 地址数” , “单一 IP 连接数”等重要信息。 在本项目中使用 BASE 主要是通过一个直观的途径来阅读 Snort 的报警信息,单击“最 近 15 单项警告数”便可以进入警报分析页面,如图 3-4 所示: 基于 Snort 的入侵防御系统实现 22 图 3-4:BASE 报警信息分析 这个页面中的数据就是本项目中分析 Snort 报警信息的依据,对信息的具体分析工作将 在下一段落展开。 3.3 Snort 报警信息分析 Snort 的检测是通过规则链进行的,能识别的事件数由规则库所决定。本项目使用的规则 库包含 44 个规则文件,可以认为 Snort 系统能够且仅能够识别出 44 种事件,对其响应生成 警报。然而 Snort 并没有对警报内容提供进一步的说明,其帮助文件也缺少这方面的内容, 这些信息是 Snort 的一个收费服务。本节内容为自行对警报进行的分析工作。 对警报的分析主要是围绕 Snort 存入数据库的内容展开。由于无法方便地获得攻击信息 的总表,所以在这个环节,分析的是捕获到静态的样本数据。 第一步需要分析,一条完整的警报记录是怎样存储在数据库中的。 第二步需要研究,每一种警报传递的信息是什么。 第三步需要归纳,建立一个处理警报信息的策略。 基于 Snort 的入侵防御系统实现 23 3.3.1 从数据库中还原警报信息 当一条警报存入数据库的时候,它的关键内容分别存入了多张表中。此时数据库中存储 的是分类的统计性质的信息,而没有一个个体记录。在分析的起步阶段,必须要对个体信息 进行分析。在 BASE 中可以获取单条警报信息的完整记录,但是本项目直接调用的是 Snort, 所以需要参照着 BASE 分析的条目对 Snort 数据库中的警报信息进行还原。 通过对比 BASE 分析的数据和 Snort 数据库中的字段,可以获得以下信息: (1)一条警报记录的主键为 cid,它是记录的标识号。 (2)警报类别的信息存放在 signature 表中,警报类型标识号为 sig_id,与警报名称 sig_name 一一对应, sig_class_id 中存放事件分类编号。 (3)与警报相关的 IP 地址信息存放在 iphdr 表中,源地址用 ip_src 表示,目的地址用 ip_dst 表示,数据类型为 ulong 型的十进制整数。 (4)与协议相关的信息依据类别存放在 icmphdr,tcphdr 和 udphdr 中,每一张表只记录 与自己有关的警报信息。从这三张表的联合查询中可以获得一条警报的协议类型以及对 应的端口号 tcp_sport,tcp_dport 。 通过分析得知,如果要获得一条警报的关键信息,需要查询的表为 signature、iphdr、icmphdr,tcphdr 和 udphdr。需要查询的字段为 cid,sig_id,sig_name ,sig_class_id ,ip_src,ip_dst ,tcp_sport 以及 tcp_dport。 3.3.2 警报的具体含义 在分析完警报信息储存在数据库中的结构后,需要对其具体含义进行分析。这里所指的 具体含义主要包含警报所对应的攻击行为或事件情景。 通过上一节的分析,我们可以得到警报号,警报名称,事件类型,源 IP 地址,目的 IP 地址等警报内容信息。其中,源 IP 地址和目的 IP 地址可以直接拿来用,但是警报的其它消 息还需要我们进一步去分析。其中很重要的一点就是了解什么样的行为会触发这些警报,并 且了解那些行为代表什么样的攻击,使用什么漏洞以及特定针对什么端口等。经过数天对 Snort 报警信息的收集,已知的攻击类型以及相关统计数据如下表 3-3 所示: 基于 Snort 的入侵防御系统实现 24 表 3-3:报警信息分析表 事件名称 针对系统 类型 对应 端口 ATTACK-RESPONSES 403 Forbidden all web server platforms WEB-CGI calendar access all running CGI applications WEB-CGI icat access all running CGI applications attempted- recon WEB-PHP remote include path using php WEB-IIS view source via translate header all systems running Microsoft IIS WEB-IIS encoding access all systems running Microsoft IIS WEB-IIS ping.asp access all systems running Microsoft IIS web- application- activity 80 ICMP ping nmap SCAN UPnP service discover attempt network-scan ICMP Destination Unreachable Communication Administratively Prohibited ICMP Destination Unreachable Communication with Destination Host is Administratively BAD-TRAFFIC udp port 0 traffic misc-activity ICMP L3retriever Ping any attempted-rec none MS-SQL ping attempt all systems running MS-SQL servers attempted- recon MS-SQL probe response overflow attempt all systems running attempted- 1433 基于 Snort 的入侵防御系统实现 25 MS-SQL servers user NETBIOS SMB IPC$ unicode share access using Samba for file sharing. NETBIOS SMB-DS IPC$ unicode share access using Samba for file sharing. protocol- command- decode NETBIOS SMB-DS repeated logon failure using SMB unsuccessful- users 445 SNMP AgentX/tcp request SNMP v1 protocol SNMP request udp SNMP request tcp 161 SNMP trap udp devices running SNMP daemons attempted- recon 162 3.3.3 报警信息处理方案 在对报警信息的初步分析中,我们发现,来自网络层的事件种类繁多,而且具有无视所 用的系统平台的特性。这些网络层事件非常容易引起 Snort 的报警,触发这些事件一般是因 为网络通信过程中的普通活动或者受到网络扫描。一般来说,这种类型的警报误报率比较高, 但是也有可能是受到网络攻击的前兆。对此类信息可以挑选发生率比较低的,因为被恶意扫 描而引起的事件,把响应方案设为进行全端口过滤,防止被对方继续恶意扫描。而对于误报 率比较高的事件,可以选择不处理。 由于所有的 web 服务器都需要开放 80 端口,所以针对 80 端口的攻击往往是最层出不穷 的,也是最具有威胁性的。通过分析,我们发现,针对 80 端口的攻击主要分为四类: (1)是针对所有 web 服务器的攻击,此类攻击一般通过 URL 注入来实现,需要利用 Unicode 或者服务器设置上的漏洞。因为此类攻击极高的危险性,所以现在一般对其防范很 好,已经很难成功了。 (2)是针对特定语言的攻击,比如利用过滤不严的 PHP 脚本处理 web 浏览器的输入, 从而使 PHP 引擎执行恶意行为。 (3)是针对应用程序的攻击,比如在 HTTP 请求中包含 CGI 的公共报头,将特定的信 息传递给正在运行的 CGI 程序。这种传递在某些情况下可能引起破坏。 基于 Snort 的入侵防御系统实现 26 (4)是针对 web 服务器种类的攻击,以上就有三例是面向 Microsoft IIS 的攻击。IIS 漏 洞百出的默认配置 14以及大量的用于闯入 web 服务器的 ISAPI 过滤器将会对服务器的安全提 出巨大的挑战。 总之,在海量的报警信息中,来自 80 端口的事件威胁度很高,当发现此类报警时,采取 过滤目的 IP 对本机 80 端口的访问比较妥当。 除了来自网络层和 80 端口的事件以外,更是有各式各色的网络事件会引起 Snort 警报, 包括针对 SNMP 漏洞的攻击,针对 MS-SQL 漏洞的攻击,针对 SMB 文件共享服务的攻击等。 此类报警信息针对性较强,一般发生误报的概率较低,可以采取过滤目的 IP 对本机与该事件 相关的特定端口的访问的措施。 3.4 本章小节 本章介绍了如何在数据库中获得 Snort 的报警信息,并且在基本分析和安全引擎 BASE 的帮助下,对报警信息在数据库中的结构进行分析。从而进一步分析警报内容,提出处理警 报信息的方案,建立起响应机制的雏形。 通过对 Snort 报警信息的分析,了解到 Snort 给出的信息虽然较为全面,但都是未处理过 的原始数据,无法直接用来配置防火墙。比如说,需要封锁客户机对主机 80 端口的连接,那 么需要把过滤器的源端口填充为“过滤所有 TCP 和 UDP”,而把目的端口填充为“80” 。但 是 Snort 中获取到的端口号“80”即可能出现在源的位置,也可能出现在目的的位置。这是 由 Snort 捕获到的事件类型决定的有些攻击是直接捕获(客户机出现在源位置) ,有些攻 击捕获的是主机给出的响应信息(客户机出现在目标位置) 。而 Snort 对这两类警报并没有给 出清晰的标识,所以我需要对每一个警报进行实验研究,从而制定响应策略。本章完整地描 述了对 Snort 的分析过程,其中所做的工作是由浅至深,层层深入的。至此分析工作基本完 成,从第四章开始主要阐述编码实现部分。 基于 Snort 的入侵防御系统实现 27 第四章 包过滤式防火墙的实现 在分析完 Snort 的报警信息后,需要实现一个可以进行响应的包过滤式防火墙。在 Windows 下有许多开发防火墙的办法,我选择了使用较为方便的 Windows Filter API 来实现。 因为这是一个相对独立的模块,而且内容较多,所以单独使用一章来阐述我设计的包过滤式 防火墙 MyFirewall。 4.1 简介 Iphlpapi.dll 是 Windows IP 辅助 API 应用程序接口模块。它提供了一组自定义包过滤器的 库函数。我们调用 iphlpapi.dll 通过对一个 PF_FILTER_DESCRIPTOR 结构体进行填充,然后 绑定到本机 IP 上来实现过滤功能。这是一个被动的防火墙类,只有主程序调用它时它才会设 置过滤器。 4.2 MyFirewall 的结构 MyFirewall 是我实现的一个 C+类,它的作用是对 Windows Filter API 进行封装(如图 4-1) 。在类内部处完成过滤器接口的创建,本机 IP 地址到接口的绑定,Filter 结构体与接口 的绑定与解绑定等过程中句柄的传递。并对静态参数进行处理,将使用起来繁琐的 API 方法 大大地简化,把十余项配置包过滤的参数简化为 AddFilter()方法传递的四个参数(源 IP 地址、 目的 IP 地址、端口号以及协议类型) ,使得主程序中可以方便地使用 API 提供的 filter 功能。 基于 Snort 的入侵防御系统实现 28 图 4-1:MyFirewall 类视图 4.3 MyFirewall 的工作流程 在 Snort 发出的警报信息中,有些事件中本机的 IP 地址会出现在目的 IP 的位置。然而设 置防火墙时,本机 IP 需要填充在源 IP 位置才能实现过滤功能,所以,传递配置参数给防火 墙之前,需要有一个响应模块对数据集进行预处理,保证本机 IP 出现在参数源 IP 地址的位 置。除此之外,还要根据警报的事件号来获取它们对应的端口,以便填充过滤器的端口参数。 防火墙的工作流程如图 4-2 所示: 基于 Snort 的入侵防御系统实现 29 获取警报记录集 ( R e c o r d s e t ) 判断是否为本机 响应信息 互换源 I P 地址 与目标 I P 地址 事件号转换为 相应端口 N Y 填充过滤器 结构体 过滤器绑定到本 机 I P 移除过滤器 图 4-2:防火墙工作流程 基于 Snort 的入侵防御系统实现 30 4.4 核心代码分析 BYTE localIp = 192,168,1,4; 创建网络包过滤接口 PfCreateInterface(0, PF_ACTION_FORWARD,PF_ACTION_FORWARD, FALSE, TRUE, if(NO_ERROR!=PfBindInterfaceToIPAddress(s_hIf, PF_IPV4,localIp) AfxMessageBox(“bind error“); inFilter.dwFilterFlags = FD_FLAGS_NOSYN; /一直添这个值 inFilter.dwRule = 0; /一直添这个值 inFilter.pfatType = PF_IPV4; /用 ipV4 地址 inFilter.SrcAddr =(PBYTE) inFilter.DstAddr = (PBYTE) inFilter.wSrcPort = FILTER_TCPUDP_PORT_ANY; /任意来源端口 if (port=-1) inFilter.wDstPort =FILTER_TCPUDP_PORT_ANY; else inFilter.wDstPort = port; inFilter.dwProtocol = FILTER_PROTO_TCP; / 过滤的协议 inFilter.wSrcPortHighRange = inFilter.wSrcPort; inFilter.wDstPortHighRange = inFilter.wDstPort; inFilter.SrcMask = (PBYTE)“xffxffxffxff“; /设置本地子网掩码 inFilter.DstMask = 0; if (port!=0) PfAddFiltersToInterface(s_hIf, 0 , NULL, 1 bFilting=true; 以上是实现包过滤功能的核心代码。在这里,有几个参数的值是静态的,预设完就不需 要改动。真正起作用的是传递进来的源 IP 地址,目的 IP 地址端口号和协议类型。其中源目 的 IP 地址需要转换为 ULONG 型,填充 inFilter.SrcAddr 和 inFilter.DstAddr,端口号和协议类 基于 Snort 的入侵防御系统实现 31 型也填充到相应的位置 inFilter.wDstPort 和 inFilter.dwProtocol。这里对端口号 port 兼做一个 标志信息的功能,当它以-1 值传入表示过滤所有端口,以 0 值传入表示该事件不需要设置过 滤器。在填充完 infilter 结构体后,使用 API 方法 PfAddFiltersToInterface( )即可启动包过滤器。 4.5 本章小结 本章介绍了 MyFirewall 防火墙类的实现方法和内部结构,这是组成 MyIPS 的重要组件。 通过向 MyFirewall 传递四个参数:源 IP 地址,目的 IP 地址,端口号和协议类型便可以完成 一个包过滤器的设置,达到入侵响应的效果。到此为止,对于单独模块的研究以及开发告一 段落。第五章将从全局的角度阐述系统的实现,并给出实时联动入侵检测与入侵响应的方案。 基于 Snort 的入侵防御系统实现 32 第五章 MyIPS 的设计与实现 5.1 MyIPS 系统设计 本项目是一个在 VS2005 平台上开发的 MFC 应用程序,使用语言为 C+,使用的数据库 为 MySQL。 5.1.1 UI 界面设计 IPS 的诞生初衷就是为了弥补 IDS 需要人工干预的缺点。所以本系统的 UI 界面力求简洁 明了,只和用户进行基本的交互行为:启动、停止系统以及查看报警记录。 图 5-1:MyIPS 主界面 布局介绍: 如图 5-1 所示,这是 MyIPS 的主界面,用户和程序的交互行为通过这个界面来行使。 (1)左侧上方的是 Snort 参数输入框,它的作用是读取 Snort 的启动参数,以便使用各 种 Snort 运行模式。一般我使用“-i 4 -dev -c c:snortetcsnort.conf -l c:snortlog”作为参 数。 基于 Snort 的入侵防御系统实现 33 (2)左侧的一排按钮,功能分别是: 启动监控:调用 Snort 进程; 停止监控:关闭 Snort 进程; 清屏:清空监视器运行情况的内容; 启动入侵防御模式:开始监听 Snort 报警信息; 取消过滤器:删除当前建立的过滤器,之后建立的仍然正常工作; 停用入侵防御模式:停止监听 Snort 报警信息; 显示报警记录:查看所有数据库中的报警记录; 退出:退出程序; (3)中间上方的是一个 Cedit 控件,在启动入侵防御模式后,在这里显示监听状态。 (4)正中间的报警记录表是一个 List Control 控件,用来显示数据库中的报警信息。 (5)中间下侧的也是一个 Cedit 控件,用来显示警报的分析信息。 1.1.2 系统结构设计 U I 界面 数据库 入侵检测 进程 ( S n o r t ) 启动 写警报 监听警报 模块 启动 读警报 入侵响应 模块 包过滤防 火墙 配置 刷新 记录 驱动 读取 警报 记录 M y I P S 系 统结构图 基于 Snort 的入侵防御系统实现 34 图 5-2:系统结构设计图 如图 5-2 所示,MyIPS 的系统框架由入侵检测模块、监听警报模块和入侵响应模块组成。 启动监控功能即调用 Snort 进程开始抓包检测,Snort 根据规则链发出警报写入数据库。这些 都在后台完成。启动入侵防御模式即运行监听警报模块,如果监听警报模块读取到新的报警 信息便会驱动入侵响应模块。入侵响应模块的主要工作是根据捕获到的警报信息配置包过滤 防火墙,同时刷新 UI 界面上的警报记录列表。 1.1.3 数据库设计 图 5-3:acid_event 表结构图 通过第三章的分析工作,得知 cid,sig_id,sig_name ,sig_class_id ,ip_src,ip_dst ,tcp_sport 以及 tcp_dport 是报警信息的 关键字段,由于多表联合查询会严重影响程序的性能,本项目使用 BASE 生成的 acid_event 表来进行读取。图 5-3 为 acid_event 表的结构,包含了报警信息中所有的关键字段。表中各 字段的类型如图 5-4 所示。 基于 Snort 的入侵防御系统实现 35 图 5-4:acid_event 表字段类型 5.2 MyIPS 详细设计说明 5.2.1 入侵检测模块 本模块的功能是使数据库得到报警信息。在本模块中,并不需要关心 Snort 如何检测数 据,仅需要保证 Snort 工作正常且往数据库中写入数据即可。所以本模块的重点是调用 Snort 程序,核心代码如下: 基于 Snort 的入侵防御系统实现 36 SECURITY_ATTRIBUTES sa; HANDLE hRead,hWrite; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE; if (!CreatePipe( return; STARTUPINFO si; public
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!