本文将详细介绍在开源系统中如何合理、高效地构建主机-网络-分布式入侵检测这样一个纵深防御体系来保证安全,并通过实际的例子来分析如何进行入侵检测及防御。
Intrusion Detection System(入侵检测系统)顾名思义,便是对入侵行为的发觉,其通过对">计算机网络或计算机系统中的若干关键点收集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象。通常说来,其具有如下几个功能:
监控、分析用户和系统的活动。 核查系统配置和漏洞。 评估关键系统和数据文件的完整性。 识别攻击的活动模式并向网管人员报警。 对异常活动的统计分析。 操作系统审计跟踪管理,识别违反政策的用户活动。
按照技术以及功能来划分,入侵检测系统可以分为如下几类:
基于主机:系统分析的数据是计算机操作系统的事件日志、应用程序的事件日志、系统调用、端口调用和安全审计记录。主机型入侵检测系统保护的一般是所在的主机系统。是由代理(agent)来实现的,代理是运行在目标主机上的小的可执行程序,它们与命令控制台(console)通信。 基于网络:系统分析的数据是网络上的数据包。网络型入侵检测系统担负着保护整个网段的任务,基于网络的入侵检测系统由遍及网络的传感器(sensor)组成,传感器是一台将以太网卡置于混杂模式的计算机,用于嗅探网络上的数据包。 混合型:基于网络和基于主机的入侵检测系统
都有不足之处,会造成防御体系的不全面,综合了基于网络和基于主机的混合型入侵检测系统既可以发现网络中的攻击信息,也可以从系统日志中发现异常情况。
纵深入侵检测及防御体系
在实际的入侵检测及防御体系的构件中,有的以网络为主,进行网络威胁的发现和封堵;有的以主机防御为主,主要保证主机不遭受入侵。如果光针对其中一方面进行构建的话,则会存在偏差,建议综合多方面的信息,进行纵深的综合性防御,这样才能起到很好的效果。
在开源系统中,例如 Linux 操作系统中,从应用到内核层面上提供了 3 种入侵检测系统来对网络和主机进行防御,它们分别是网络入侵检测系统 Snort、主机入侵检测系统 LIDS 以及分布式入侵检测系统 SnortCenter。其中,
Snort 专注于在网络层面进行入侵检测; LIDS 则侧重于在主机层面进行入侵检测和防御; SnortCenter 则是为了在分布式环境中提升入侵检测的实时性和准确性的一种分布式检测机制。
本文将依据这 3 种入侵系统,就如何配置、部署和使用对他们进行详细介绍。
网络入侵检测层面:Snort
一般市面上的介绍都把 Snort 说的好像是纯个人开发的开源玩具一样,其实它很实用,而且有一家名叫 Sourefire 的上市公司在负责研发和升级工作。这个工具本身是免费的。而且可以在任何操作系统上运行,包括 Windows 和 Linux,但是个人认为它的配置过程还是比较复杂。
基本原理
Snort 有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统:
嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上; 数据包记录器模式把数据包记录到硬盘上; 网路入侵检测模式是最复杂的,而且是可配置的。我们可以让 snort 分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
嗅探器模式
嗅探器模式就是 snort 从网络上读出数据包然后显示在用户的控制台上。有关该模式的命令选项比较多,主要的有如下几种:
如果用户只要把 TCP/IP 包头信息打印在屏幕上,输入下面的命令即可:
#./snort -v
如果用户要看到应用层的数据,可以使用命令:
#./snort -vd
如果需要显示数据链路层的信息,使用下面的命令:
#./snort – vde
数据包记录器
如果要把所有的包记录到硬盘上,用户只需要指定一个日志目录,snort 就会自动记录数据包,使用下述命令即可:
#./snort -dev -l ../snort_log
当然,snort_log 目录必须存在,否则 snort 就会报告错误信息并退出。当 snort 在这种模式下运行,它会记录所有看到的包将其放到一个目录中。如果用户只指定了 -l 命令开关,而没有设置目录名,snort 有时会使用远程主机的 IP 地址作为目录,有时会使用本地主机 IP 地址作为目录名。为了只对本地网络进行日志,用户需要给出本地网络的 IP 地址,如下所示:
#./snort -dev -l ./ snort_log -h 192.168.1.0/24
这个命令告诉 snort 把进入 C 类网络 192.168.1 的所有包的数据链路、TCP/IP 以及应用层的数据记录到目录 snort_log 中。