吴 慰

湖北工业大学商贸学院实验中心,湖北武汉 430062

0 引言

随着Linux 操作系统与网络技术的迅猛发展,基于Linux 操作系统构建的小型网络安全形势也日趋严峻和复杂化,各种计算机安全事件的数量正在不断增长。面对小型网络的安全防御问题,如何构建安全的网络入侵检测防御系统,成为目前计算机网络面临的首要问题。由于网络入侵者采用的攻击技术与攻击手段不断地变化,功能更为强大,更具针对性和欺骗性,构建高效的入侵检测防御系统是保护计算机网络安全的直接解决途径。目前,在Linux 环境下的主流入侵防御技术是构建特征入侵的防御系统。特征入侵,就是网络或系统中存在违反安全策略的行为和攻击行为。入侵检测防御系统,就是采用主动的入侵检测技术检测系统中的这些违反安全策略行为和攻击行为的系统。作为一种重要的安全防护工具,入侵检测防御系统的作用已经超过了防火墙的概念。本文通过分析常见的网络攻击方式,对Linux 操作系统下对网络入侵检测防御系统的设计原理和设计实现进行了探讨。

1 入侵检测防御系统

入侵检测防御系统是为了检测黑客通过病毒等手段有意攻击计算机网络和计算机系统而构建的检测防御系统。入侵检测防御系统应具有捕获符合指定条件的网络数据包、数据预处理、入侵分析以及告警、简单防御攻击行为、诱骗攻击者、获取对方攻击意图、获取攻击者的简单资料等信息的能力。

2 常见的网络攻击方式

如果想要避免Linux 网络遭受黑客的攻击,就必须对黑客的攻击方法、攻击原理以及攻击过程有深入详细的了解。这样才能设计出有效的主动检测防御系统。在Linux 网络系统中,常被攻击的方式主要有Synflood 攻击、Ping Flood 攻击、Smurf 攻击、Teardrop 攻击、Land 攻击、ICMP 扫描/TCP 扫描/UDP 扫描等等。

2.1 Synflood 攻击

Synflood 攻击属于DoS 攻击的一种,是最基本的入侵攻击手段之一,也是最难对付的入侵攻击手段。具体表现方式是在计算机进行网络通信时,服务器接到用户端的SYN 包后,回应用户端一个SYN/ACK 包,然后等待用户端的ACK 回应包进行确认时,用户端不发送ACK 包而导致服务器一直等待,致使服务器一直等待对应用户端回应而无法响应其他机器的连接请求时,就可认定为Synflood 攻击。

2.2 Ping Flood 攻击

Ping Flood 攻击的原理是由于操作系统等对传输文件包的长度有限制,如ICMP 包的64 KB 规定,当发送者产生长度超过64Kb的文件包时,就会导致内存错误、TCP/IP 堆栈崩溃的情况。目前,大多数系统对Ping Flood 攻击都有一定的抵抗能力。

2.3 Smurf 攻击

Smurf 攻击的原理是将某数据包的回复地址设置成被攻击网络的地址,当网络中某台机器使用被攻击的网络地址发送一个被设置的数据包时,就会收到多个相应的数据包,Smurf 攻击就是通过数据包阻塞被害网络的方式进行攻击,导致该网络的所有机器都对此数据包的请求都做出答复,最终导致网络的阻塞,甚至崩溃。

2.4 Teardrop 攻击

Teardrop 攻击方式是采用病态的 UDP 数据包进行攻击。当操作系统收到病态的UDP 数据包后,产生内存错误而导致系统崩溃。在识别Teardrop 攻击时,一般是通过检测UDP 数据包的完整性和IP 包I 号是否为242 来确认的。

2.5 Land 攻击

Land 攻击中,一个特别打造的SYN 包的源地址和目标地址都被设置成某个服务器的地址。当服务器接收自己发送的SYN/ACK消息时,就会创建一个空的连接,每个连接都将保留到超时,从而出现系统的崩溃现象。在检测时,对同一端口的大量TCP/SYN包,如果源地址和目标地址相同,就可认定为是Land 攻击。

3 入侵检测防御系统的设计原理

随着计算机网络技术的发展,依靠主机自我审计信息的检测方式已经难以适应快速发展的网络安全需求,而基于规则匹配的入侵检测技术日益发展成熟。由于规则库的完善,相应的误报率也得到了有效控制。因此,可采用扩展性好、可移植佳、开源的Snort 作为系统检测模块,以二级链表方式组织规则库,将协议类型、源地址/端口分类合并形成规则头链表,再对可选规则分类,将同一协议类型、源/目的地址/端口的规则放在同一头链下,形成二链表。基于网络的入侵检测防御系统整体设计结构如下图所示。

图1 基于linux 操作系统小型网络的入侵检测防御系统整体设计结构图

3.1 网络数据包捕获模块

网络数据包捕获模块的主要功能就是从以太网中捕获数据包,这个工作可以在操作系统的底层调用来实现,也可以使用相应的高层调用来实现。为提高效率,可以采用Lniux 流行的BPF 捕获机制实现。此机制性能优越,不需底层调用。

3.2 网络数据分析模块

网络数据分析模块是本系统中一个十分重要的模块,它的设计结果关系到能否有效主动防御入侵,保证计算机网络安全的最终效果。只有能够完全的分析数据包类型,才能在此基础上进一步分析是否有入侵行为的发生。为保证分析结果的准确性,本系统设置了各种入侵行为特征库,通过预设模块调用。通过与捕获数据的对比分析,可以大大提高数据的分析速度与准确性,减少错报、漏报的几率。

3.3 紧急处理、保护/响应、诱骗模块

在对网络数据包与特征库对比分析后,对捕获到的可疑行为进行紧急响应,积极调用与之相关的保护模块、诱骗系统。由于网络攻击的复杂性,不可能做到针对每一种攻击方式都设置相应处理措施,只能将攻击方式大致分类处理,并针对每一种分类,设计出相应的保护措施与诱骗措施,以期达到主动防御的效果。因此,本模块的设计也是整个检测防御系统的核心,稍有漏洞,就功亏一篑。在进行本模块的设计时,一定要做好相关文献资料的查阅工作,做到最大保护系统的安全,一旦保护模块失败,还可以通过诱骗系统暂时保护系统的安全。

3.4 报警系统与系统日志、操作界面模块

由于网络技术的不断发展,攻击者的手段也在快速更新,仅仅依靠设计好的检测防御模块还不能彻底保证计算机网络的安全,还需要设置相应的报警机制,及时的提醒网络管理员,对可疑的攻击行为或防御失败的攻击行为尽快处理,以避免出现不必要损失。对于系统日志模块,是记录系统检测防护网络安全性能的实时记录,也是系统管理员寻找防御失败攻击行为解决措施的直接参考依据。做好系统日志模块的记录模块设计,可以为特征库的更新做好数据基础,为建立新的检测防御体系提供技术支持。

3.5 存储模块

由于网络数据包很多,而且是稍纵即逝,如何建立动态的数据存储、将有用信息经检测分析系统的过滤后,及时存储起来,是本模块的主要设计要求。可参考的数据库为MYSQL,由于本系统采取模块化的设计思想,易于单独考虑数据模块的设计方法,以方便动态挂载/卸载,以及系统管理员的查看。

4 结论

Linux 操作系统是一个免费的操作系统,具有高稳定性、高可靠性、高安全性、源文件开放的特点;在近年中,颇受受到了广大计算机爱好者的青睐,各种基于Linux 操作系统的专业应用程序也得到了开发应用。Linux 作为一个多用户的操作系统,具有多任务处理、支持共享库、支持Windows 操作系统、虚拟内存、支持GUN 软件、内置网络配置、非专有资源代码等优点。随着Linux应用的不断深入,Linux 的用户也越来越多,构建Linux 环境下的入侵检测防御系统具有重要的现实意义。

[1][美]Strassberg Keith E.防火墙技术大全[M].李昂,等译.北京:机械工业出版社,2003.

[2]潘瑜.Linux网络系统安全的分析和探讨[J].计算机时代,2003(8):7-9.

[3]J W Seok, J W Hong.Audio Watermarking for Copyright Protection of Digital Audio Data. Electron Letter, 2001, 37(1): 60-61.