snort入侵检测系统文档格式.docx
《snort入侵检测系统文档格式.docx》由会员分享,可在线阅读,更多相关《snort入侵检测系统文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
甚至不会想到你自己也会成为目标的时候,威胁就已经出现了,一旦发生,常常措手不及,造成极大的损失。
(2)攻击手段
1、服务拒绝攻击
服务拒绝攻击企图通过使你的服务计算机崩溃或把它压跨来阻止你提供服务,服务拒绝攻击是最容易实施的攻击行为,主要包括:
<
1>
死亡之ping(pingofdeath)
由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现在ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区,当产生畸形的,声称自己的尺寸超过ICMP上限的包也就是加载的尺寸超过64K上限时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方当机。
2>
泪滴(teardrop)
泪滴攻击利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。
IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括servicepack4以前的NT)在收到含有重叠偏移的伪造分段时将崩溃。
3>
UDP洪水(UDPflood)
各种各样的假冒攻击利用简单的TCP/IP服务,如Chargen和Echo来传送毫无用处的占满带宽的数据。
通过伪造与某一主机的Chargen服务之间的一次的UDP连接,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间的足够多的无用数据流,如果足够多的数据流就会导致带宽的服务攻击。
4>
SYN洪水(SYNflood)。
一些TCP/IP栈的实现只能等待从有限数量的计算机发来的ACK消息,因为他们只有有限的内存缓冲区用于创建连接,如果这一缓冲区充满了虚假连接的初始信息,该服务器就会对接下来的连接停止响应,直到缓冲区里的连接企图超时。
在一些创建连接不受限制的实现里,SYN洪水具有类似的影响。
5>
Land攻击
在Land攻击中,一个特别打造的SYN包它的原地址和目标地址都被设置成某一个服务器地址,此举将导致接受服务器向它自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时掉,对Land攻击反应不同,许多UNIX实现将崩溃,NT变的极其缓慢(大约持续五分钟)。
6>
Smurf攻击
一个简单的smurf攻击通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包来淹没受害主机的方式进行,最终导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞,比pingofdeath洪水的流量高出一或两个数量级。
更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方雪崩。
7>
Fraggle攻击
Fraggle攻击对Smurf攻击作了简单的修改,使用的是UDP应答消息而非ICMP。
8>
电子邮件炸弹
电子邮件炸弹是最古老的匿名攻击之一,通过设置一台机器不断的大量的向同一地址发送电子邮件,攻击者能够耗尽接受者网络的带宽。
1、畸形消息攻击
2、利用型攻击
利用型攻击是一类试图直接对你的机器进行控制的攻击,最常见的有三种:
1)口令猜测
一旦黑客识别了一台主机而且发现了基于NetBIOS、Telnet或NFS这样的服务的可利用的用户帐号,成功的口令猜测能提供对机器的控制。
2)特洛伊木马
特洛伊木马是一种或是直接由一个黑客,或是通过一个不令人起疑的用户秘密安装到目标系统的程序。
一旦安装成功并取得管理员权限,安装此程序的人就可以直接远程控制目标系统。
最有效的一种叫做后门程序,恶意程序包括:
NetBus、BackOrifice和BO2k,用于控制系统的良性程序如:
netcat、VNC、pcAnywhere。
理想的后门程序透明运行。
3)缓冲区溢出
由于在很多的服务程序中大意的程序员使用象strcpy(),strcat()类似的不进行有效位检查的函数,最终可能导致恶意用户编写一小段利用程序来进一步打开安全豁口然后将该代码缀在缓冲区有效载荷末尾,这样当发生缓冲区溢出时,返回指针指向恶意代码,这样系统的控制权就会被夺取。
3、信息收集型攻击
信息收集型攻击并不对目标本身造成危害,如名所示这类攻击被用来为进一步入侵提供有用的信息。
主要包括:
扫描技术、体系结构刺探、利用信息服务。
1.扫描技术
a.地址扫描
运用ping这样的程序探测目标地址,对此作出响应的表示其存在。
b.端口扫描
通常使用一些软件,向大范围的主机连接一系列的TCP端口,扫描软件报告它成功的建立了连接的主机所开的端口。
c.反响映射
黑客向主机发送虚假消息,然后根据返回“hostunreachable”这一消息特征判断出哪些主机是存在的。
目前由于正常的扫描活动容易被防火墙侦测到,黑客转而使用不会触发防火墙规则的常见消息类型,这些类型包括:
RESET消息、SYN-ACK消息、DNS响应包。
d.慢速扫描
由于一般扫描侦测器的实现是通过监视某个时间桢里一台特定主机发起的连接的数目(例如每秒10次)来决定是否在被扫描,这样黑客可以通过使用扫描速度慢一些的扫描软件进行扫描。
2.体系结构探测
黑客使用具有已知响应类型的数据库的自动工具,对来自目标主机的、对坏数据包传送所作出的响应进行检查。
由于每种操作系统都有其独特的响应方法(例NT和Solaris的TCP/IP堆栈具体实现有所不同),通过将此独特的响应与数据库中的已知响应进行对比,黑客经常能够确定出目标主机所运行的操作系统。
去掉或修改各种Banner,包括操作系统和各种应用服务的,阻断用于识别的端口扰乱对方的攻击计划。
3.利用信息服务
A)DNS域转换
DNS协议不对转换或信息性的更新进行身份认证,这使得该协议被人以一些不同的方式加以利用。
如果你维护着一台公共的DNS服务器,黑客只需实施一次域转换操作就能得到你所有主机的名称以及内部IP地址。
B)Finger服务
黑客使用finger命令来刺探一台finger服务器以获取关于该系统的用户的信息。
C)LDAP服务
黑客使用LDAP协议窥探网络内部的系统和它们的用户的信息。
4、假消息攻击
用于攻击目标配置不正确的消息,主要包括:
DNS高速缓存污染、伪造电子邮件。
5、DNS高速缓存污染
由于DNS服务器与其他名称服务器交换信息的时候并不进行身份验证,这就使得黑客可以将不正确的信息掺进来并把用户引向黑客自己的主机。
6、伪造电子邮件
由于SMTP并不对邮件的发送者的身份进行鉴定,因此黑客可以对你的内部客户伪造电子邮件,声称是来自某个客户认识并相信的人,并附带上可安装的特洛伊木马程序,或者是一个引向恶意网站的连接。
(3)网络安全技术
网络安全应具有以下五个方面的特征:
1、保密性:
信息不泄露给非授权用户、实体或过程,或供其利用的特性。
2、完整性:
数据XX不能进行改变的特性。
即信息在存储或传输过程中保持不被修改、不被破坏和丢失的特性。
3、可用性:
可被授权实体访问并按需求使用的特性。
即当需要时能否存取所需的信息。
例如网络环境下拒绝服务、破坏网络和有关系统的正常运行等都属于对可用性的攻击。
4、可控性:
对信息的传播及内容具有控制能力。
5、可审查性:
出现的安全问题时提供依据与手段。
随着计算机技术的迅速发展,在计算机上处理的业务也由基于单机的数学运算、文件处理,基于简单连接的内部网络的内部业务处理、办公自动化等发展到基于复杂的内部网(Intranet)、企业外部网(Extranet)、全球互联网(Internet)的企业级计算机处理系统和世界范围内的信息共享和业务处理。
2、入侵检测的基本概念
入侵检测技术(IDS)可以被定义为对计算机和网络资源的恶意使用行为进行识别和相应处理的系统。
包括系统外部的入侵和内部用户的非授权行为,是为保证计算机系统的安全而设计与配置的一种能够及时发现并报告系统中未授权或异常现象的技术,是一种用于检测计算机网络中违反安全策略行为的技术。
3、入侵检测系统的原理
在本质上,入侵检测系统是一个典型的”窥探设备”。
它不跨接多个物理网段(通常只有一个监听端口),无须转发任何流量,而只需要在网络上被动的、无声息的收集它所关心的报文即可。
对收集来的报文,入侵检测系统提取相应的流量统计特征值,并利用内置的入侵知识库,与这些流量特征进行智能分析比较匹配。
根据预设的阀值,匹配耦合度较高的报文流量将被认为是进攻,入侵检测系统将根据相应的配置进行报警或进行有限度的反击。
(1)、入侵检测系统结构
简单的说可以说为上网行为监测和管理,具体说明请看下文:
入侵检测是防火墙的合理补充,帮助系统对付网络攻击,扩展了系统管理员的安全管理能力(包括安全审计、监视、进攻识别和响应),提高了信息安全基础结构的完整性。
它从计算机网络系统中的若干关键点收集信息,并分析这些信息,看看网络中是否有违反安全策略的行为和遭到袭击的迹象。
入侵检测被认为是防火墙之后的第二道安全闸门,在不影响网络性能的情况下能对网络进行监测,从而提供对内部攻击、外部攻击和误操作的实时保护。
这些都通过它执行以下任务来实现:
·
监视、分析用户及系统活动;
系统构造和弱点的审计;
识别反映已知进攻的活动模式并向相关人士报警;
异常行为模式的统计分析;
评估重要系统和数据文件的完整性;
操作系统的审计跟踪管理,并识别用户违反安全策略的行为。
对一个成功的入侵检测系统来讲,它不但可使系统管理员时刻了解网络系统(包括程序、文件和硬件设备等)的任何变更,还能给网络安全策略的制订提供指南。
更为重要的一点是,它应该管理、配置简单,从而使非专业人员非常容易地获得网络安全。
而且,入侵检测的规模还应根据网络威胁、系统构造和安全需求的改变而改变。
入侵检测系统在发现入侵后,会及时作出响应,包括切断网络连接、记录事件和报警等。
信息收集
入侵检测的第一步是信息收集,内容包括系统、网络、数据及用户活动的状态和行为。
而且,需要在计算机网络系统中的若干不同关键点(不同网段和不同主机)收集信息,这除了尽可能扩大检测范围的因素外,还有一个重要的因素就是从一个源来的信息有可能看不出疑点,但从几个源来的信息的不一致性却是可疑行为或入侵的最好标识。
当然,入侵检测很大程度上依赖于收集信息的可靠性和正确性,因此,很有必要只利用所知道的真正的和精确的软件来报告这些信息。
因为黑客经常替换软件以搞混和移走这些信息,例如替换被程序调用的子程序、库和其它工具。
黑客对系统的修改可能使系统功能失常并看起来跟正常的一样,而实际上不是。
例如,unix系统的PS指令可以被替换为一个不显示侵入过程的指令,或者是编辑器被替换成一个读取不同于指定文件的文件(黑客隐藏了初试文件并用另一版本代替)。
这需要保证用来检测网络系统的软件的完整性,特别是入侵检测系统软件本身应具有相当强的坚固性,防止被篡改而收集到错误的信息。
入侵检测利用的信息一般来自以下四个方面:
1.系统和网络日志文件
黑客经常在系统日志文件中留下他们的踪迹,因此,充分利用系统和网络日志文件信息是检测入侵的必要条件。
日志中包含发生在系统和网络上的不寻常和不期望活动的证据,这些证据可以指出有人正在入侵或已成功入侵了系统。
通过查看日志文件,能够发现成功的入侵或入侵企图,并很快地启动相应的应急响应程序。
日志文件中记录了各种行为类型,每种类型又包含不同的信息,例如记录“用户活动”类型的日志,就包含登录、用户ID改变、用户对文件的访问、授权和认证信息等内容。
很显然地,对用户活动来讲,不正常的或不期望的行为就是重复登录失败、登录到不期望的位置以及非授权的企图访问重要文件等等。
2.目录和文件中的不期望的改变
网络环境中的文件系统包含很多软件和数据文件,包含重要信息的文件和私有数据文件经常是黑客修改或破坏的目标。
目录和文件中的不期望的改变(包括修改、创建和删除),特别是那些正常情况下限制访问的,很可能就是一种入侵产生的指示和信号。
黑客经常替换、修改和破坏他们获得访问权的系统上的文件,同时为了隐藏系统中他们的表现及活动痕迹,都会尽力去替换系统程序或修改系统日志文件。
3.程序执行中的不期望行为
网络系统上的程序执行一般包括操作系统、网络服务、用户起动的程序和特定目的的应用,例如数据库服务器。
每个在系统上执行的程序由一到多个进程来实现。
每个进程执行在具有不同权限的环境中,这种环境控制着进程可访问的系统资源、程序和数据文件等。
一个进程的执行行为由它运行时执行的操作来表现,操作执行的方式不同,它利用的系统资源也就不同。
操作包括计算、文件传输、设备和其它进程,以及与网络间其它进程的通讯。
一个进程出现了不期望的行为可能表明黑客正在入侵你的系统。
黑客可能会将程序或服务的运行分解,从而导致它失败,或者是以非用户或管理员意图的方式操作。
1.3.2入侵检测原理
入侵检测可分为实时入侵检测和事后入侵检测两种。
实时入侵检测在网络连接过程中进行,系统根据用户的历史行为模型、存储在计算机中的专家知识以及神经网络模型对用户当前的操作进行断,一旦发现入侵迹象立即断开入侵者与主机的连接,并收集证据和实施数据恢复。
这个检测过程是不断循环进行的。
而事后入侵检测则是由具有网络安全专业知识的网络管理人员来进行的,是管理员定期或不定期进行的,不具有实时性,因此防御入侵的能力不如实时入侵检测系统。
二.课程设计目的
(1)通过实验深入理解入侵检测系统的原理和工作方式。
(2)熟悉入侵检测工具snort在Windows操作系统中的安装和配置方法
三.课程设计的原理
3.1SNORT概述
snort是一个基于libpcap的轻量级网络入侵检测系统。
它运行在一个“传感器(sensor)”主机上,监听网络数据。
这台机器可能是一台简陋的运行FreeBSD系统的Pentium100PC,并且至少有一个网卡。
不过建议使用最好的机器作为进行入侵检测的主机。
snort能够把网络数据和规则集进行模式匹配,从而检测可能的入侵企图;
或者使用SPADE插件,使用统计学方法对网络数据进行异常检测。
snort使用一种易于扩展的模块化体系结构,感兴趣的开发人员可以加入自己编写的模块来扩展snort的功能。
这些模块包括:
HTTP解码插件、TCP数据流重组插件、端口扫描检测插件、FLEXRESP插件以及各种日志输入插件等。
snort还是一个自由、简洁、快速、易于扩展的入侵检测系统,已经被移植到了各种UNIX平台和WinY2K上。
同时,它也是目前安全领域中,最活跃的开放源码工程之一。
snort还是昂贵的商业入侵检测系统最好的替代产品之一。
3.2SNORT的使用
Snort是一个轻量级产品,因此很难应用于大型网络。
但Snort的规则语言非常经典,以至于一些商业化的产品中也套用其规则描述语言。
根据国内外IDS的现状,主要的IDS有着以下相同和差异:
∙相同之处1)模式匹配检测是主流方式。
2)多采用多引擎+控制台结构。
3)适用于10/100Mbps的以太网络。
∙主要差异1)同厂商对攻击的认识和定义各不相同,用户购买时不能简单观看产品宣传页中的一些数字。
2)国外产品本地化程度要差一些,但产品成熟度要好一些。
3)在管理界面和模式上各有特色,有采用浏览器方式,有采用独立界面方式,还有利用和其他网络安全产品统一界面的管理方式。
4)有的产品在引擎上采用软件方式(如ISS、北方计算中心和CA的产品等),有的产品引擎提供硬件方式(如启明星辰和Cisco等)。
比较起来,硬件方式在安装、调试等方面的操作相对简单方便5)国外产品贵一些。
3.2.1Libpcap简介
大多数网络监控软件都以它为基础。
Libpcap可以在绝大多数类unix平台下工作.
Libpcap应用程序框架
Libpcap提供了系统独立的用户级别网络数据包捕获接口,并充分考虑到应用程序的可移植性。
Libpcap可以在绝大多数类unix平台下工作,参考资料A中是对基于libpcap的网络应用程序的一个详细列表。
在windows平台下,一个与libpcap很类似的函数包winpcap提供捕获功能,其官方网站是http:
//winpcap.polito.it/。
Libpcap软件包可从http:
//www.tcpdump.org/下载,然后依此执行下列三条命令即可安装,但如果希望libpcap能在linux上正常工作,则必须使内核支持"
packet"
协议,也即在编译内核时打开配置选项CONFIG_PACKET(选项缺省为打开)。
./configure
./make
./makeinstall
libpcap源代码由20多个C文件构成,但在Linux系统下并不是所有文件都用到。
可以通过查看命令make的输出了解实际所用的文件。
本文所针对的libpcap版本号为0.8.3,网络类型为常规以太网。
Libpcap应用程序从形式上看很简单.
Wincap是libcap的Windows版本。
3.2.2Snort的命令行
Snort命令介绍
虽然目前网上已经出现了Windows平台下的基于snort.exe程序的图形界面控制程序idscenter.exe,其界面的操作行虽然好了很多,但还是不能避免的需要使用命令,所以我们还是得来看看Snort的命令及其参数作用的介绍。
Snort的命令行的通用形式为:
snort-[options]
各个参数功能如下:
-A:
选择设置警报的模式为full、fast、unsock和none。
full模式是默认进报模式,它记录标准的alert模式到alert文件中;
fast模式只记录时间戳、消息、IP地址、端口到文件中;
unsock是发送到Unixsocket;
none模式是关闭报警。
-a:
是显示ARP包。
-b:
以Tcpdump格式记录LOG的信息包,所有信息包都被记录为二进制形式,用这个选项记录速度相对较快,因为它不需要把信息转化为文本的时间。
-c:
使用配置文件,这个规则文件是告诉系统什么样的信息要LOG,或者要报警,或者通过。
-C:
只用ASCII码来显示数据报文负载,不用十六进制。
-d:
显示应用层数据。
-D:
使snort以守护进程的形式运行,默认情况下警报将被发送到/var/log/snort.alert文件中去。
-e:
显示并记录第二层信息包头的数据。
-F:
从文件中读BPF过滤器(filters)。
-g:
snort初始化后使用用户组标志(groupID),这种转换使得Snort放弃了在初始化必须使用root用户权限从而更安全。
-h:
设置内网地址到,使用这个选项snort会用箭头的方式表示数据进出的方向。
-i:
在网络接口上监听
-I:
添加第一个网络接口名字到警报输出
-l:
把日志信息记录到目录中去。
-L:
设置二进制输出的文件名为。
-m:
设置所有snort的输出文件的访问掩码为。
-M:
发送WinPopup信息到包含文件中存在的工作站列表中去,这选项需要Samba的支持。
-n:
是指定在处理个数据包后退出。
-N:
关闭日志记录,但ALERT功能仍旧正常工作。
-o:
改变规则应用到数据包上的顺序,正常情况下采用Alert->
Pass->
Logorder,而采用此选项的顺序是Pass->
Alert->
Logorder,其中Pass是那些允许通过的规则,ALERT是不允许通过的规则,LOG指日志记录。
-O:
使用ASCII码输出模式时本地网IP地址被代替成非本地网IP地址。
-p:
关闭混杂(Promiscuous)嗅探方式,一般用来更安全的调试网络。
-P:
设置snort的抓包截断长度。
-r:
读取tcpdump格式的文件。
-s:
把日志警报记录到syslog文件,在LINUX中警告信息会记录在/var/log/secure,在其他平台上将出现在/var/log/message中。
-S:
设置变量n=v的值,用来在命令行中定义Snortrules文件中的变量,如你要在Snortrules文件中定义变量HOME_NET,你可以在命令行中给它预定义值。
-t:
初始化后改变snort的根目录到目录。
-T:
进入自检模式,snort将检查所有的命令行和规则文件是否正确。
-u:
初始化后改变snort的用户ID到
-v:
显示TCP/IP数据报头信息。
-V:
显示Snort版本并退出。
-y:
在记录的数据包信息的时间戳上加上年份。
-?
:
显示Snort简要的使用说明并退出。
除了少数