萝卜青菜

——追求技术,期待成功。有版权问题请见谅,找碴儿的人滚蛋。

用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
luoboqingcai的公告
这些都是萝卜青菜在日常工作中所收集的东西,自己留用。真心感谢阿好,http://blog.csdn.net/HBZXF <table border="1" bordercolor="#000000" bgcolor="#6699ff" cellpadding="5" cellspacing="0"> <tr> <td> <script language=javascript> document.write ("<marquee scrollamount='1' scrolldelay='30' direction= 'UP' width='155' id='helpor_net' height='150' onmouseover='helpor_net.stop()' onmouseout='helpor_net.start()' Author:redriver; For more,visit:www.helpor.net>") document.write ("<h2><p align='center'><font color='#ffffff' face='黑体'>偶 然</font></h2>") document.write ("<p align='right'><a href='#' target='_blank'><font color='#ffffff'>徐志摩</font></a> ") document.write ("<p><font color='#ffffff'> ") document.write ("<br>我是天空里的一片云,") document.write ("<br>偶尔投影在你的波心—— ") document.write ("<br>你不必讶异, ") document.write ("<br>更无须欢喜—— ") document.write ("<br>在转瞬间消灭了踪影。") document.write ("<br>") document.write ("<br>你我相逢在黑暗的海上,") document.write ("<br>你有你的,我有我的,方向;") document.write ("<br>你记得也好, ") document.write ("<br>最好你忘掉, ") document.write ("<br>在这交会时互放的光亮! ") document.write ("</font>") document.write ("</marquee> ") </script> </td> </tr> </table> <DIV align=center> <OBJECT style="WIDTH: 84px; HEIGHT: 84px" codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0 height=84 width=84 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><PARAM NAME="_cx" VALUE="2223"><PARAM NAME="_cy" VALUE="2223"><PARAM NAME="FlashVars" VALUE=""><PARAM NAME="Movie" VALUE="http://blogcup.com/cup/time.swf"><PARAM NAME="Src" VALUE="http://blogcup.com/cup/time.swf"><PARAM NAME="WMode" VALUE="Transparent"><PARAM NAME="Play" VALUE="0"><PARAM NAME="Loop" VALUE="-1"><PARAM NAME="Quality" VALUE="High"><PARAM NAME="SAlign" VALUE=""><PARAM NAME="Menu" VALUE="-1"><PARAM NAME="Base" VALUE=""><PARAM NAME="AllowScriptAccess" VALUE="always"><PARAM NAME="Scale" VALUE="ShowAll"><PARAM NAME="DeviceFont" VALUE="0"><PARAM NAME="EmbedMovie" VALUE="0"><PARAM NAME="BGColor" VALUE=""><PARAM NAME="SWRemote" VALUE=""><PARAM NAME="MovieData" VALUE=""><PARAM NAME="SeamlessTabbing" VALUE="1"> <embed src="http://blogcup.com/cup/time.swf" wmode="transparent" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="32" height="32"></embed> </OBJECT></DIV> <br> <IFRAME border=0 align=center marginWidth=0 marginHeight=0 src='http://appnews.qq.com/cgi-bin/news_qq_search?city=' frameBorder=0 width=157 scrolling=no height=240 allowTransparency></IFRAME> <br> <Script LANGUAGE="JavaScript"> var months = new Array("一", "二", "三","四", "五", "六", "七", "八", "九","十", "十一", "十二"); var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31,30, 31, 30, 31); var days = new Array("日","一", "二", "三","四", "五", "六"); var classTemp; var today=new getToday(); var year=today.year; var month=today.month; var newCal; function getDays(month, year) { if (1 == month) return ((0 == year % 4) && (0 != (year % 100))) ||(0 == year % 400) ? 29 : 28; else return daysInMonth[month]; } function getToday() { this.now = new Date(); this.year = this.now.getFullYear(); this.month = this.now.getMonth(); this.day = this.now.getDate(); } function Calendar() { newCal = new Date(year,month,1); today = new getToday(); var day = -1; var startDay = newCal.getDay(); var endDay=getDays(newCal.getMonth(), newCal.getFullYear()); var daily = 0; if ((today.year == newCal.getFullYear()) &&(today.month == newCal.getMonth())) { day = today.day; } var caltable = document.all.caltable.tBodies.calendar; var intDaysInMonth =getDays(newCal.getMonth(), newCal.getFullYear()); for (var intWeek = 0; intWeek < caltable.rows.length;intWeek++) for (var intDay = 0;intDay < caltable.rows[intWeek].cells.length;intDay++) { var cell = caltable.rows[intWeek].cells[intDay]; var montemp=(newCal.getMonth()+1)<10?("0"+(newCal.getMonth()+1)):(newCal.getMonth()+1); if ((intDay == startDay) && (0 == daily)){ daily = 1;} var daytemp=daily<10?("0"+daily):(daily); var d="<"+newCal.getFullYear()+"-"+montemp+"-"+daytemp+">"; if(day==daily) cell.className="DayNow"; else if(intDay==6) cell.className = "DaySat"; else if (intDay==0) cell.className ="DaySun"; else cell.className="Day"; if ((daily > 0) && (daily <= intDaysInMonth)) { cell.innerText = daily; daily++; } else { cell.className="CalendarTD"; cell.innerText = ""; } } document.all.year.value=year; document.all.month.value=month+1; } function subMonth() { if ((month-1)<0) { month=11; year=year-1; } else { month=month-1; } Calendar(); } function addMonth() { if((month+1)>11) { month=0; year=year+1; } else { month=month+1; } Calendar(); } function setDate() { if (document.all.month.value<1||document.all.month.value>12) { alert("月的有效范围在1-12之间!"); return; } year=Math.ceil(document.all.year.value); month=Math.ceil(document.all.month.value-1); Calendar(); } </Script> <Script> function buttonOver() { var obj = window.event.srcElement; obj.runtimeStyle.cssText = "background-color:#FFFFFF"; // obj.className="Hover"; } function buttonOut() { var obj = window.event.srcElement; window.setTimeout(function(){obj.runtimeStyle.cssText = "";},300); } </Script> <Style> Input {font-family: verdana;font-size: 9pt;text-decoration: none;background-color: #FFFFFF;height: 20px;border: 1px solid #666666;color:#000000;} .Calendar {font-family: verdana;text-decoration: none;width: 170;background-color: #C0D0E8;font-size: 9pt;border:0px dotted #1C6FA5;} .CalendarTD {font-family: verdana;font-size: 7pt;color: #000000;background-color:#f6f6f6;height: 20px;width:11%;text-align: center;} .Title {font-family: verdana;font-size: 11pt;font-weight: normal;height: 24px;text-align: center;color: #333333;text-decoration: none;background-color: #A4B9D7;border-top-width: 1px;border-right-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-bottom-style:1px;border-top-color: #999999;border-right-color: #999999;border-bottom-color: #999999;border-left-color: #999999;} .Day {font-family: verdana;font-size: 7pt;color:#243F65;background-color: #E5E9F2;height: 20px;width:11%;text-align: center;} .DaySat {font-family: verdana;font-size: 7pt;color:#FF0000;text-decoration: none;background-color:#E5E9F2;text-align: center;height: 18px;width: 12%;} .DaySun {font-family: verdana;font-size: 7pt;color: #FF0000;text-decoration: none;background-color:#E5E9F2;text-align: center;height: 18px;width: 12%;} .DayNow {font-family: verdana;font-size: 7pt;font-weight: bold;color: #000000;background-color: #FFFFFF;height: 20px;text-align: center;} .DayTitle {font-family: verdana;font-size: 9pt;color: #000000;background-color: #C0D0E8;height: 20px;width:11%;text-align: center;} .DaySatTitle {font-family: verdana;font-size: 9pt;color:#FF0000;text-decoration: none;background-color:#C0D0E8;text-align: center;height: 20px;width: 12%;} .DaySunTitle {font-family: verdana;font-size: 9pt;color: #FF0000;text-decoration: none;background-color: #C0D0E8;text-align: center;height: 20px;width: 12%;} .DayButton {font-family: Webdings;font-size: 9pt;font-weight: bold;color: #243F65;cursor:hand;text-decoration: none;} </Style> <table border="0" cellpadding="0" cellspacing="1" class="Calendar" id="caltable"> <thead> <tr align="center" valign="middle"> <td colspan="7" class="Title"> <a href="javaScript:subMonth();" title="上一月" Class="DayButton">3</a> <input name="year" type="text" size="4" maxlength="4" onkeydown="if (event.keyCode==13){setDate()}" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" onpaste="this.value=this.value.replace(/[^0-9]/g,'')"> 年 <input name="month" type="text" size="1" maxlength="2" onkeydown="if (event.keyCode==13){setDate()}" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" onpaste="this.value=this.value.replace(/[^0-9]/g,'')"> 月 <a href="JavaScript:addMonth();" title="下一月" Class="DayButton">4</a> </td> </tr> <tr align="center" valign="middle"> <Script LANGUAGE="JavaScript"> document.write("<TD class=DaySunTitle id=diary >" + days[0] + "</TD>"); for (var intLoop = 1; intLoop < days.length-1;intLoop++) document.write("<TD class=DayTitle id=diary>" + days[intLoop] + "</TD>"); document.write("<TD class=DaySatTitle id=diary>" + days[intLoop] + "</TD>"); </Script> </TR> </thead> <TBODY border=1 cellspacing="0" cellpadding="0" ID="calendar" ALIGN=CENTER ONCLICK="getDiary()"> <Script LANGUAGE="JavaScript"> for (var intWeeks = 0; intWeeks < 6; intWeeks++) { document.write("<TR style='cursor:hand'>"); for (var intDays = 0; intDays < days.length;intDays++) document.write("<TD class=CalendarTD onMouseover='buttonOver();' onMouseOut='buttonOut();'></TD>"); document.write("</TR>"); } </Script> </TBODY> </TABLE> <Script LANGUAGE="JavaScript"> Calendar(); </Script> </script> <SCRIPT language?javascript?> var currentpos,timer; function initialize() { timer=setInterval("scrollwindow()",10); } function sc(){ clearInterval(timer); } function scrollwindow() { currentpos=document.body.scrollTop; window.scroll(0,++currentpos); if (currentpos != document.body.scrollTop) sc(); } document.onmousedown=sc document.ondblclick=initialize </SCRIPT> <script language="JavaScript"> <!-- var Message="★☆★欢迎来到萝卜青菜的blog,因为都是收集的东西,如果有版权问题,见谅!!双击自动滚屏!!★☆★"; var place=1; function scrollIn() { window.status=Message.substring(0, place); if (place >= Message.length) { place=1; window.setTimeout("Helpor_net()",300); } else { place++; window.setTimeout("scrollIn()",50); } } function Helpor_net() { window.status=Message.substring(place, Message.length); if (place >= Message.length) { place=1; window.setTimeout("scrollIn()", 100); } else { place++; window.setTimeout("Helpor_net()", 50); } } Helpor_net(); --> </script> <OBJECT class=OBJECT id=MediaPlayer height=50 width=170 align=middle classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95><PARAM NAME="AudioStream" VALUE="-1"><PARAM NAME="AutoSize" VALUE="0"><PARAM NAME="AutoStart" VALUE="-1"><PARAM NAME="AnimationAtStart" VALUE="-1"><PARAM NAME="AllowScan" VALUE="-1"><PARAM NAME="AllowChangeDisplaySize" VALUE="-1"><PARAM NAME="AutoRewind" VALUE="-1"><PARAM NAME="Balance" VALUE="0"><PARAM NAME="BaseURL" VALUE=""><PARAM NAME="BufferingTime" VALUE="5"><PARAM NAME="CaptioningID" VALUE=""><PARAM NAME="ClickToPlay" VALUE="-1"><PARAM NAME="CursorType" VALUE="0"><PARAM NAME="CurrentPosition" VALUE="-1"><PARAM NAME="CurrentMarker" VALUE="0"><PARAM NAME="DefaultFrame" VALUE=""><PARAM NAME="DisplayBackColor" VALUE="0"><PARAM NAME="DisplayForeColor" VALUE="16777215"><PARAM NAME="DisplayMode" VALUE="0"><PARAM NAME="DisplaySize" VALUE="4"><PARAM NAME="Enabled" VALUE="-1"><PARAM NAME="EnableContextMenu" VALUE="-1"><PARAM NAME="EnablePositionControls" VALUE="-1"><PARAM NAME="EnableFullScreenControls" VALUE="0"><PARAM NAME="EnableTracker" VALUE="-1"><PARAM NAME="Filename" VALUE="http://www.zw88.com/music/download/dl1/wxl07.mp3"><PARAM NAME="InvokeURLs" VALUE="-1"><PARAM NAME="Language" VALUE="-1"><PARAM NAME="Mute" VALUE="0"><PARAM NAME="PlayCount" VALUE="999"><PARAM NAME="PreviewMode" VALUE="0"><PARAM NAME="Rate" VALUE="1"><PARAM NAME="SAMILang" VALUE=""><PARAM NAME="SAMIStyle" VALUE=""><PARAM NAME="SAMIFileName" VALUE=""><PARAM NAME="SelectionStart" VALUE="-1"><PARAM NAME="SelectionEnd" VALUE="-1"><PARAM NAME="SendOpenStateChangeEvents" VALUE="-1"><PARAM NAME="SendWarningEvents" VALUE="-1"><PARAM NAME="SendErrorEvents" VALUE="-1"><PARAM NAME="SendKeyboardEvents" VALUE="0"><PARAM NAME="SendMouseClickEvents" VALUE="0"><PARAM NAME="SendMouseMoveEvents" VALUE="0"><PARAM NAME="SendPlayStateChangeEvents" VALUE="-1"><PARAM NAME="ShowCaptioning" VALUE="0"><PARAM NAME="ShowControls" VALUE="-1"><PARAM NAME="ShowAudioControls" VALUE="-1"><PARAM NAME="ShowDisplay" VALUE="0"><PARAM NAME="ShowGotoBar" VALUE="0"><PARAM NAME="ShowPositionControls" VALUE="-1"><PARAM NAME="ShowStatusBar" VALUE="-1"><PARAM NAME="ShowTracker" VALUE="-1"><PARAM NAME="TransparentAtStart" VALUE="0"><PARAM NAME="VideoBorderWidth" VALUE="0"><PARAM NAME="VideoBorderColor" VALUE="0"><PARAM NAME="VideoBorder3D" VALUE="0"><PARAM NAME="Volume" VALUE="-600"><PARAM NAME="WindowlessVideo" VALUE="0"> <embed type=application/x-oleobject codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701 flename=mp src='http://www.zw88.com/music/download/dl1/wxl07.mp3' width=150 height=50></embed></OBJECT> <center><EMBED style="LEFT: 10px; POSITION: absolute; TOP: -70px" align=right src=http://blowsuai.home.sunbo.net/xfile.php?xname=4IHM901&fname=9.swf width=800 height=500 type=application/x-shockwave-flash wmode="transparent" quality="high" ;></center>
文章分类
blogs
MSDN每日追踪
天涯流浪者
阿好
阿赖的个性空间
存档

原创  网络安全新保护神 防火墙新技术深度检测 收藏

状态检测防火墙是目前使用最广泛的防火墙,用来防护黑客攻击。但是,随着专门针对应用层的Web攻击现象的增多,在攻击防护中,状态检测防火墙的有效性越来越低。

  设计状态检测防火墙时,并没有专门针对Web应用程序攻击,为了适应不断增长的Web应用程序的威胁,新一代的深度检测防火墙出现了。

  本文先介绍了防火墙技术的演变过程,然后介绍了深度检测技术的四个基本特征。

  1、防火墙技术的演变过程

  防火墙技术的演变过程,到目前为止,主要有包过滤防火墙、状态检测防护墙和深度检测防火墙三种类型。

  1.1 包过滤防火墙(Packet Filter Firewall)

  包过滤防火墙----第一代防火墙,没有状态的概念。通过包过滤,管理员能够允许或禁止ACLs(Access Control Lists,访问控制列表)中的选项,包过滤防火墙主要具有以下属性:

  ★ 数据包到达的物理网络接口;

  ★ 源IP地址和端口;

  ★ 目标IP地址和端口;

  但是,包过滤防火墙的安全性有一定的缺陷,因为系统对应用层信息无感知,也就是说,防火墙不理解通信的内容,所以可能被黑客所攻破。

  由于种种原因,人们认为包过滤防火墙不过安全,于是逐渐被状态检测防火墙所取代。

  1.2 状态检测防火墙(Stateful Inspection Firewall)

  状态检测防火墙出现,并成为市场上的绝对领导者,主要有以下原因,包括性能,部署能力和扩展能力。他们在90年代中期得到了迅速发展。1993年,Check Point公司成功推出了世界上第一台商用的状态检测防火墙产品。

  状态检测防火墙工作于网络层,与包过滤防火墙相比,状态检测防火墙判断允许还是禁止数据流的依据也是源IP地址,目的IP地址,源端口,目的端口和通讯协议等。与包过滤防火墙不同的是,状态检测防火墙是基于会话信息做出决策的,而不是包的信息;

  状态检测防火墙验证进来的数据包时,判断当前数据包是否符合先前允许的会话,并在状态表中保存这些信息。状态检测防火墙还能阻止基于异常TCP的网络层的攻击行为。网络设备,比如路由器,会将数据包分解成更小的数据帧,因此,状态检测设备,通常需要进行IP数据帧的重组,按其原来顺序组装成完整的数据包。

  1.3 深度检测防火墙(Deep Inspection Firewall)

  深度检测防火墙,将状态检测和应用防火墙技术结合在一起,以处理应用程序的流量,防范目标系统免受各种复杂的攻击。结合了状态检测的所有功能,深度检测防火墙能够对数据流量迅速完成网络层级别的分析,并做出访问控制决;对于允许的数据流,根据应用层级别的信息,对负载做出进一步的决策。

  深度检测防火墙深入分析了TCP或UDP数据包的内容,以便对负载有个总的认识。

  2、深度检测技术的四个基本特征
 
  新的深度检测技术仍在不断出现,以实现不同的深度检测功能,但是我们需要了解深度检测技术所具有的基本特征。

  高级的深度检测防火墙整合了包过滤防火墙和状态检测防火墙的所有功能,如图1所示。

  高级的深度检测技术一般具有以下四个方面的特征:

  ◆ 应用层加密/解密;

  ◆ 正常化;

  ◆ 协议一致性;

  ◆ 双向负载检测;

  这四种特征,为Web应用程序提供了重要防护,如果其中一种特征没有实现的话,深度检测防火墙在抵制应用层攻击时,效果会大打折扣。

  2.1 应用层加密/解密

  SSL广泛被应用于各种场合,以确保相关数据的安全性。这就对防火墙提出了新要求:必须能够处理数据加密/解密。如果不对SSL加密的数据进行解密,防火墙就不能对负载的信息进行分析,更不可能判断数据包中是否含有应用层攻击信息。如果没有解密功能,深度检测的所有优点都无法体现出来。

  由于SSL加密的安全性很高,企业常使用SSL技术,以确保关键应用程序的通讯数据的安全性。如果深度检测不能对企业中关键应用程序提供深度检测安全性的话,整个深度检测的优势将失去意义。

  2.2 正常化

  防范应用层攻击,很大程度上依赖于字符串匹配。不正常的匹配会造成安全漏洞。比如,为了探知某种请求的安全策略是否被启用,防火墙通常根据请求的URL与安全策略来进行匹配。一旦与某种策略条件完全匹配,防火墙就采用对应的安全策略。指向同一个资源的URL或许有多种不同形态,如果该URL的编码方式不同的话,二进制方式的比较就不起作用了。攻击者会利用各种技术,对输入的URL进行伪装,企图避开字符串匹配,以达到越过安全设备的目的。

  这些攻击行为,在欺骗IDS和IPS方面,特别有效,因为攻击代码只要与安全设备的特征库有一点点不同的话,就能够达到目的。

  解决字符串匹配问题需要利用正常化技术,深度检测能够识别和阻止大量的攻击。对于防范隐藏在帧数据、Unicode、URL编码,双重URL编码和多形态的Shell等类型的攻击行为,必须要用到正常化技术。

  2.3 协议一致性

  应用层协议,如HTTP、SMTP、POP3、DNS、IMAP和FTP,在应用程序中经常用到。每个协议,都由RFC(Request For Comments)相关规范创建。

  深度检测防火墙,必须确认应用层数据流是否与这些协议定义相一致,以防止隐藏其中的攻击。

  深度检测在应用层进行状态检测。协议一致性,通过对协议报文的不同字段进行解密而实现,当协议中的字段被识别出来后,防火墙采用RFC定义的应用规则,来检查其合法性。

   2.4 双向负载检测
 
  深度检测具有强大功能,能够允许数据包通过,拒绝数据包,检查或修改第4到7层数据包,包括包头或负载。HTTP深度检测能够查看到消息体中的URL,包头和参数等信息。深度检测防火墙能够自动进行动态配置,以便正确检测服务变量,如最大长度,隐藏字段和Radio按钮等等。如果请求的变量不匹配,不存在或者不正确的话,深度检测防火墙会将请求丢弃掉,将该事件写入日志,并给管理员发出警告信息。

  深度检测技术允许修改或转换URL,包头和参数,这一点与应用层上的NAT类似。

  3、总结

  在复杂的Web环境中,为了提供全面的应用程序防护,深度检测是必需的。为了能够有效的阻止Web攻击,防火墙必须能够应用基于源IP地址、目的IP地址、端口以及应用程序内容的安全策略。

  深度检测技术还在不断发展,但是深度检测技术一般具有应用层加密/解密、正常化、协议一致性、双向负载检测等四个方面的特征。

  企业部署Web应用程序时,应该要确保防火墙能够满足这些应用程序要求得的安全需求,并且防火墙能够满足深度检测技术中的四项基本特征。

发表于 @ 2005年02月22日 12:29:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:用Win 2003 server打造安全的个人Web服务器 | 新一篇:打破电脑病毒神话 浅析各种病毒应对方法

  • 发表评论
  • 评论内容:
  •  
Copyright © luoboqingcai
Powered by CSDN Blog