Web的入侵防御系统的设计与实现
摘  要
Web服务器往往得不到传统防御方式的有效保护,使其成为整个网络环境中安全最薄弱的地方。缓冲区溢出、SQL注入、基于脚本的DDos、盗链和跨站等攻击行为对Web服务器的安全和稳定造成极大的威胁,而目前缺少有效的防御和保护的方式。本课题中首先调研了当前Web服务器所面对的威胁,然后针对这些安全威胁设计了一套入侵防御系统,并通过ISAPI实现了对Windows平台下的IIS服务器的保护。在这套入侵防御系统中,可以通过制定策略来检测所有访问Web服务器的行为,可以有效地阻止恶意攻击从而保护Web服务器的安全。这套入侵防御系统的策略引擎可以加载和调用Lua语言编写的策略脚本,使策略脚本的编写更加简单。
关键词 入侵防御;网络安全;ISAPI;Lua
Design and Implementation of Web Intrusion Prevention System
Abstract
Web server can not often get the effective protection of traditional defense mechanism, makes it become the weakest area in the whole network. The attacks, such as Buffer overflow, SQL injection, DDos based on script, Resource steal and Cross-site, cause the great threat to the security and stability of Web server, and lack effective defense and protection way at present. This paper introduces the different attack ways to a Web server at first, then designs an intrusion prevention system for the Web server and implements the protection of IIS server under Windows platform through ISAPI. The intrusion prevention system can measure the behaviors of all visiting Web servers through the strategies and protect the Web Server against the malicious attacks. The security strategies engine of the system can load and transfer the strategy scripts written in Lua language, It make strategy scripts writing more simpler.
Key words: Intrusions prevention; network security; ISAPI; Lua

1引言
连接入互联网中的每一台服务器每时每刻都会受到来自病毒蠕虫的侵扰和黑客的入侵。目前,很多针对Web服务器的攻击都是通过Http协议发起的,所以传统的防火墙对诸如SQL注入这种攻击方式不能提供很好的保护。在很多网络环境中,正是由于Web服务器同时对内部网络和外部网络提供服务,使其成为整个网络中最常被攻击的目标。恶意的攻击者往往通过Web服务器上的突破口,来进一步对内部网络进行渗透。所以,Web服务器的安全显得尤为重要。
本课题的首先对Web服务器所受到的威胁及相应的防御方式做了一些调研,然后针对Web服务器所受的这些威胁设计了一套专门针对Web服务器安全的轻量级的入侵防御系统, 并通过ISAPI实现了Windows平台环境下保护IIS服务器的系统。这套系统通过策略来控制访问Web服务器的行为,它的策略引擎可以加载Lua脚本编写的策略,所以策略的编写十分容易。通过对这套系统的运行检测可以发现它能有效的保护Web服务器的安全。
2Web服务器所受的威胁及防御
Web服务器在互联网环境中会遭受格式各样的安全威胁,下面列出的是一些当前主流的针对Web服务器的攻击方式,它们有的会导致服务器被非法控制,有的会使服务器无法提供
正常的服务,而有的甚至会对访问者的机器造成破坏。
3缓冲区溢出
缓冲区溢出[1]主要是因为Web服务器程序对客户端提交的数据缺少安全必要的长度检测,服务器程序的堆栈被恶意数据填充,导致服务器程序执行非法的指令或产生拒绝服务。如曾经造成十分大危害的蠕虫“红代码(Red Code)”和“尼姆达(Nimda)”都是利用IIS的缓冲区溢出的漏洞而传播的。目前,缓冲区溢出是很难杜绝的,因为Web服务器程序开发的测试阶段无法对所有客户端可能提交的数据进行测试,所以不能确保Web服务器程序完全没有缓冲区溢出威胁的存在。
因为Web服务器程序提供专有的HTTP服务,所以我们可以通过HTTP协议确定客户端提交数据中每个字段的长度的合理范围,通过对所有用户提交的数据都进行严格的长度检测是对缓冲区溢出攻击的有效防御方式。
4SQL注入攻击
SQL注入攻击
[2]是近几年非常流行的攻击方式。对一个内部网络的渗透往往是从Web服务脚本入手(如ASP,PHP等),而SQL注入漏洞通常是Web服务脚本中最容易到的。目前互联网上仍然存在很多有此风险的服务器。
SQL注入同样也是对客户端提交的数据没有进行必要的检测过滤造成的。构造特殊的数据提交到存在此缺陷的Web服务器上后,可以导致恶意的SQL语句注入到Web脚本的SQL调用中,从而泄露敏感信息或者执行威胁的SQL指令。无论是何种Web脚本语本语言或何种数据库,如果编码人员缺乏相关的安全意识,都可能会导致此缺陷的存在。
目前对SQL注入攻击提出的防御方案有:
(1)在服务端正式处理之前对提交数据的合法性进行检查;
(2)封装客户端提交信息;
webserver接口开发(3)替换或删除敏感字符/字符串;
(4)屏蔽出错信息。
方案(1)被公认是最根本的解决方案,在确认客户端的输入合法之前,服务端拒绝进行关键性的处理操作,不过这需要开发者能够以一种安全的方式来构建网络应用程序,虽然已有大量针对在网络应用程序开发中如何安全地访问数据库的文档出版,但仍然有很多开发者缺乏足够的安全意识,造成开发出的产品中依旧存在注入漏洞;方案(2)的做法需要RDBMS的支持,目前只有Oracle采用该技术;方案(3)则是一种不完全的解决措施,例如,当客户端的输入为“…ccmdmcmdd…”时,在对敏感字符串“cmd”替换删除以后,剩下的字符正好是“…cmd…”;方案(4)是目前最常被采用的方法,很多安全文档都认为SQL注入攻击需要通过错误信息收集信息,有些甚至声称某些特殊的任务若缺乏详细的错误信息则不能完成,这使很多安全专家形成一种观念,即注入攻击在缺乏详细错误的情况下不能实施。
5基于脚本的DDos攻击
当一个入侵者无法到目标Web服务器的有效渗透方式时,很可能选择DDos这种攻击方式。传统的DDos攻击方式在一台硬件防火墙面往往失去了它的威力,而基于脚本的DDos攻击在近几年里逐渐成为对Web服务器发起拒绝服务的有效方式。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。