防火墙原理

来源:互联网 发布:手机淘宝怎么代付不了 编辑:程序博客网 时间:2024/05/01 18:46

一、防火墙技术

    防火墙使用以下三种方法中的一种或多种来控制流入和流出网络的通信

1、数据包过滤——根据一组过滤器分析数据包(小的数据块)。通过过滤器的数据包将发送到请求数据包的系统,没有通过的数据包将被丢弃。

  这种类型的防火墙根据定义好的过滤规则审查每个数据包,以便确定其是否与某一条包过滤规则匹配。过滤规则基于数据包的报头信息进行制订。报头信息中包括IP源地址、IP目标地址、传输协议(TCP、UDP、ICMP等等)、TCP/UDP目标端口、ICMP消息类型等。包过滤类型的防火墙要遵循的一条基本原则是“最小特权原则”,即明确允许那些管理员希望通过的数据包,禁止其他的数据包。

2、状态检测过滤——它不检查每个数据包的内容,而是将数据包的特定关键部分与受信任信息数据库进行比较。从防火墙内部传递到外部的信息将受到监视,以获得特定的定义特征,然后将传入的信息与这些特征进行比较。如果通过比较得出合理的匹配,则允许信息通过。否则将丢弃信息。

这种类型的防火墙采用动态设置包过滤规则的方法,避免了静态包过滤所具有的问题。这种技术后来发展成为所谓包状态监测(Stateful Inspection)技术。采用这种技术的防火墙对通过其建立的每一个连接都进行跟踪,并且根据需要可动态地在过滤规则中增加或更绿跄俊?

状态检测防火墙基本保持了简单包过滤防火墙的优点,性能比较好,同时对应用是透明的,在此基础上,对于安全性有了大幅提升。这种防火墙摒弃了简单包过滤防火墙仅仅考察进出网络的数据包,不关心数据包状态的缺点,在防火墙的核心部分建立状态连接表,维护了连接,将进出网络的数据当成一个个的事件来处理。可以这样说,状态检测包过滤防火墙规范了网络层和传输层行为。

3、代理防火墙

    第一代:代理防火墙

  代理防火墙也叫应用层网关(Application Gateway)防火墙。这种防火墙通过一种代理(Proxy)技术参与到一个TCP连接的全过程。从内部发出的数据包经过这样的防火墙处理后,就好像是源于防火墙外部网卡一样,从而可以达到隐藏内部网结构的作用。这种类型的防火墙被网络安全专家和媒体公认为是最安全的防火墙。它的核心技术就是代理服务器技术。

  所谓代理服务器,是指代表客户处理在服务器连接请求的程序。当代理服务器得到一个客户的连接意图时,它们将核实客户请求,并经过特定的安全化的Proxy应用程序处理连接请求,将处理后的请求传递到真实的服务器上,然后接受服务器应答,并做进一步处理后,将答复交给发出请求的最终客户。代理服务器在外部网络向内部网络申请服务时发挥了中间转接的作用。


  代理类型防火墙的最突出的优点就是安全。由于每一个内外网络之间的连接都要通过Proxy的介入和转换,通过专门为特定的服务如Http编写的安全化的应用程序进行处理,然后由防火墙本身提交请求和应答,没有给内外网络的计算机以任何直接会话的机会,从而避免了入侵者使用数据驱动类型的攻击方式入侵内部网。包过滤类型的防火墙是很难彻底避免这一漏洞的。就像你要向一个陌生的重要人物递交一份声明一样,如果你先将这份声明交给你的律师,然后律师就会审查你的声明,确认没有什么负面的影响后才由他交给那个陌生人。在此期间,陌生人对你的存在一无所知,如果要对你进行侵犯,他面对的将是你的律师,而你的律师当然比你更加清楚该如何对付这种人。

  代理防火墙的最大缺点就是速度相对比较慢,当用户对内外网络网关的吞吐量要求比较高时,(比如要求达到75-100Mbps时)代理防火墙就会成为内外网络之间的瓶颈。所幸的是,目前用户接入Internet的速度一般都远低于这个数字。在现实环境中,要考虑使用包过滤类型防火墙来满足速度要求的情况,大部分是高速网(ATM或千兆位以太网等)之间的防火墙。

  第二代:自适应代理防火墙

  自适应代理技术(Adaptiveproxy)是最近在商业应用防火墙中实现的一种革命性的技术。它可以结合代理类型防火墙的安全性和包过滤防火墙的高速度等优点,在毫不损失安全性的基础之上将代理型防火墙的性能提高10倍以上。组成这种类型防火墙的基本要素有两个:自适应代理服务器(Adaptive Proxy Server)与动态包过滤器(Dynamic Packet filter)。

  在自适应代理与动态包过滤器之间存在一个控制通道。在对防火墙进行配置时,用户仅仅将所需要的服务类型、安全级别等信息通过相应Proxy的管理界面进行设置就可以了。然后,自适应代理就可以根据用户的配置信息,决定是使用代理服务从应用层代理请求还是从网络层转发包。如果是后者,它将动态地通知包过滤器增减过滤规则,满足用户对速度和安全性的双重要求。

 

二、防火墙的五大功能

  一般来说,防火墙具有以下几种功能:

  1.允许网络管理员定义一个中心点来防止非法用户进入内部网络。

  2.可以很方便地监视网络的安全性,并报警。

  3.可以作为部署NAT(Network Address Translation,网络地址变换)的地点,利用NAT技术,将有限的IP地址动态或静态地与内部的IP地址对应起来,用来缓解地址空间短缺的问题。

  4.是审计和记录Internet使用费用的一个最佳地点。网络管理员可以在此向管理部门提供Internet连接的费用情况,查出潜在的带宽瓶颈位置,并能够依据本机构的核算模式提供部门级的计费。

 

三、制定防火墙规则

       一般根据一个或多个条件来添加或删除过滤器,其中一些条件如下:

IP地址——互联网上的每台计算机被分配了一个唯一的地址,称为IP地址。IP地址是32位数字,通常表示为4个“八位二进制数”,并以“句点分隔的十进制数”直观表示。典型的IP地址如下所示:216.27.61.137。例如,如果公司外部的某个IP地址从服务器读取了过多文件,则防火墙可以阻止与该IP地址之间的所有通信。

域名——由于组成IP地址的数字串不容易记住,而且IP地址有时需要更改,因此互联网上的所有服务器还拥有易于理解的名称,称为域名。例如,对大多数人来说,记住www.howstuffworks.com比记住216.27.61.137更容易。公司可以阻止对特定域名进行的所有访问,或者仅允许访问特定域名。

协议——协议是想要使用某一服务的某一方与该服务之间进行通信的一种预定义方式。“某一方”可能是一个人,但在更多的情况下,它是一个计算机程序,例如Web浏览器。协议通常是文本,并简单说明客户机和服务器进行会话的方式。http是Web协议。公司可以只设置一台或两台计算机来处理特定协议,而在其他所有计算机上禁用该协议。下面是一些可以为其设置防火墙过滤器的常见协议:

IP(互联网协议,Internet Protocol)——互联网上的主要信息传递系统

TCP(传输控制协议,Transmission Control Protocol)——用于拆分和复原互联网上传递的信息

HTTP(超文本传输协议,Hyper Text Transfer Protocol)——用于网页

FTP(文件传输协议,File Transfer Protocol)——用于下载和上传文件

UDP(用户数据报协议,User Datagram Protocol)——用于无需响应的信息,如音频流和视频流

ICMP(Internet控制消息协议,Internet Control Message Protocol)——供路由器用来与其他路由器交换信息

SMTP(简单邮件传输协议,Simple Mail Transport Protocol)——用于发送基于文本的信息(电子邮件)

SNMP(简单网络管理协议,Simple Network Management Protocol)——用于从远程计算机收集系统信息

Telnet——用于在远程计算机上执行命

端口——任何服务器计算机都使用带编号的端口向互联网提供服务,每个端口对应于该服务器上提供的一项服务(详细信息,请参见Web服务器工作原理)。例如,如果服务器计算机正在运行Web(HTTP)服务器和FTP服务器,则通常可以通过端口80访问Web服务器,并可以通过端口21访问FTP服务器。除一台计算机外,公司可能阻止对公司内其他所有计算机上的端口21进行访问。

特定词汇和短语——这可以是任意内容。防火墙将嗅探(彻底搜寻)每个信息数据包,确定是否存在与过滤器中列出的文本完全匹配的内容。例如,您可以指示防火墙阻止任何含有“X-rated”一词的数据包。这里的关键在于必须是精确匹配。“X-rated”过滤器不会捕捉“X rated”(不含连字符)。但您可以根据需要包括任意多的词汇、短语以及它们的变体。

 

四、攻击包过滤防火墙 

  包过滤防火墙是最简单的一种了,它在网络层截获网络数据包,根据防火墙的规则表,来检测攻击行为。他根据数据包的源IP地址;目的IP地址;TCP/UDP源端口;TCP/UDP目的端口来过滤!!很容易受到如下攻击: 

  1 ip 欺骗攻击: 

  这种攻击,主要是修改数据包的源,目的地址和端口,模仿一些合法的数据包来骗过防火墙的检测。如:外部攻击者,将他的数据报源地址改为内部网络地址,防火墙看到是合法地址就放行了:)。可是,如果防火墙能结合接口,地址来匹

配,这种攻击就不能成功了:( 

  2 d.o.s拒绝服务攻击 

  简单的包过滤防火墙不能跟踪 tcp的状态,很容易受到拒绝服务攻击,一旦防火墙受到d.o.s攻击,他可能会忙于处理,而忘记了他自己的过滤功能。:)你就可以饶过了,不过这样攻击还很少的。! 

  3 分片攻击 

  这种攻击的原理是:在IP的分片包中,所有的分片包用一个分片偏移字段标志分片包的顺序,但是,只有第一个分片包含有TCP端口号的信息。当IP分片包通过分组过滤防火墙时,防火墙只根据第一个分片包的Tcp信息判断是否允许通过,而其他后续的分片不作防火墙检测,直接让它们通过。 

  这样,攻击者就可以通过先发送第一个合法的IP分片,骗过防火墙的检测,接着封装了恶意数据的后续分片包就可以直接穿透防火墙,直接到达内部网络主机,从而威胁网络和主机的安全。 

  4 木马攻击 

  对于包过滤防火墙最有效的攻击就是木马了,一但你在内部网络安装了木马,防火墙基本上是无能为力的。 

  原因是:包过滤防火墙一般只过滤低端口(1-1024),而高端口他不可能过滤的(因为,一些服务要用到高端口,因此防火墙不能关闭高端口的),所以很多的木马都在高端口打开等待,如冰河,subseven等。。。 

  但是木马攻击的前提是必须先上传,运行木马,对于简单的包过滤防火墙来说,是容易做的。这里不写这个了。大概就是利用内部网络主机开放的服务漏洞。 

  早期的防火墙都是这种简单的包过滤型的,到现在已很少了,不过也有。现在的包过滤采用的是状态检测技术,下面谈谈状态检测的包过滤防火墙。

 

五、攻击状态检测的包过滤 

  状态检测技术最早是checkpoint提出的,在国内的许多防火墙都声称实现了状态检测技术。 

  可是:)很多是没有实现的。到底什么是状态检测? 

  一句话,状态检测就是从tcp连接的建立到终止都跟踪检测的技术。 

  原先的包过滤,是拿一个一个单独的数据包来匹配规则的。可是我们知道,同一个tcp连接,他的数据包是前后关联的,先是syn包,-》数据包=》fin包。数据包的前后序列号是相关的。 

  如果割裂这些关系,单独的过滤数据包,很容易被精心够造的攻击数据包欺骗!!!如nmap的攻击扫描,就有利用syn包,fin包,reset包来探测防火墙后面的网络。! 

  相反,一个完全的状态检测防火墙,他在发起连接就判断,如果符合规则,就在内存登记了这个连接的状态信息(地址,port,选项。。),后续的属于同一个连接的数据包,就不需要在检测了。直接通过。而一些精心够造的攻击数据包由于没有在内存登记相应的状态信息,都被丢弃了。这样这些攻击数据包,就不能饶过防火墙了。 

  说状态检测必须提到动态规则技术。在状态检测里,采用动态规则技术,原先高端口的问题就可以解决了。实现原理是:平时,防火墙可以过滤内部网络的所有端口(1-65535),外部攻击者难于发现入侵的切入点,可是为了不影响正常的服务,防火墙一但检测到服务必须开放高端口时,如(ftp协议,irc等),防火墙在内存就可以动态地天加一条规则打开相关的高端口。等服务完成后,这条规则就又被防火墙删除。这样,既保障了安全,又不影响正常服务,速度也快。! 

  一般来说,完全实现了状态检测技术防火墙,智能性都比较高,一些扫描攻击还能自动的反应,因此,攻击者要很小

心才不会被发现。 

  但是,也有不少的攻击手段对付这种防火墙的。 

  1 协议隧道攻击 

    协议隧道的攻击思想类似与VPN的实现原理,攻击者将一些恶意的攻击数据包隐藏在一些协议分组的头部,从而穿透防火墙系统对内部网络进行攻击。 

  例如,许多简单地允许ICMP回射请求、ICMP回射应答和UDP分组通过的防火墙就容易受到ICMP和UDP协议隧道的攻击。

Loki和lokid(攻击的客户端和服务端)是实施这种攻击的有效的工具。在实际攻击中,攻击者首先必须设法在内部网络的一个系统上安装上lokid服务端,而后攻击者就可以通过loki客户端将希望远程执行的攻击命令(对应IP分组)嵌入在ICMP或

UDP包头部,再发送给内部网络服务端lokid,由它执行其中的命令,并以同样的方式返回结果。由于许多防火墙允许ICMP和UDP分组自由出入,因此攻击者的恶意数据就能附带在正常的分组,绕过防火墙的认证,顺利地到达攻击目标主机下面的命令是用于启动lokid服务器程序: 

  lokid-p CICvl 

  loki客户程序则如下启动: 

  lokiCd172.29.11.191(攻击目标主机)-p CICv1 Ct3 

  这样,lokid和loki就联合提供了一个穿透防火墙系统访问目标系统的一个后门。 

  2 利用FTP-pasv绕过防火墙认证的攻击 

  FTP-pasv攻击是针对防火墙实施入侵的重要手段之一。目前很多防火墙不能过滤这种攻击手段。如CheckPoint的Firewall-1,在监视FTP服务器发送给客户端的包的过程中,它在每个包中寻找"227"这个字符串。如果发现这种包,将从中提取目标地址和端口,并对目标地址加以验证,通过后,将允许建立到该地址的TCP连接。

攻击者通过这个特性,可以设连接受防火墙保护的服务器和服务。

    3 反弹木马攻击 

  反弹木马是对付这种防火墙的最有效的方法。攻击者在内部网络的反弹木马定时地连接外部攻击者控制的主机,由于连接是从内部发起的,防火墙(任何的防火墙)都认为是一个合法的连接,因此基本上防火墙的盲区就是这里了。防火墙不能区分木马的连接和合法的连接。 

  但是这种攻击的局限是:必须首先安装这个木马!!!所有的木马的第一步都是关键!

 

六、攻击代理 

  代理是运行在应用层的防火墙,他实质是启动两个连接,一个是客户到代理,另一个是代理到目的服务器。 

  实现上比较简单,和前面的一样也是根据规则过滤。由于运行在应用层速度比较慢/1 

  攻击代理的方法很多。 

  这里就以wingate为例,简单说说了。(太累了) 

  WinGate是目前应用非常广泛的一种Windows95/NT代理防火墙软件,内部用户可以通过一台安装有WinGate的主机访问外部网络,但是它也存在着几个安全脆弱点。 

  黑客经常利用这些安全漏洞获得WinGate的非授权Web、Socks和Telnet的访问,从而伪装成WinGate主机的身份对下一

个攻击目标发动攻击。因此,这种攻击非常难于被跟踪和记录。 

  导致WinGate安全漏洞的原因大多数是管理员没有根据网络的实际情况对WinGate代理防火墙软件进行合理的设置,只是简单地从缺省设置安装完毕后就让软件运行,这就给攻击者可乘之机。 

  1 非授权Web访问 

  某些WinGate版本(如运行在NT系统下的2.1d版本)在误配置情况下,允许外部主机完全匿名地访问因特网。因此,外部攻击者就可以利用WinGate主机来对Web服务器发动各种Web攻击( 如CGI的漏洞攻击等),同时由于Web攻击的所有报文都是

从80号Tcp端口穿过的,因此,很难追踪到攻击者的来源。 

  检测 

  检测WinGate主机是否有这种安全漏洞的方法如下: 

  1) 以一个不会被过滤掉的连接(譬如说拨号连接)连接到因特网上。 

  2) 把浏览器的代理服务器地址指向待测试的WinGate主机。 

  如果浏览器能访问到因特网,则WinGate主机存在着非授权Web访问漏洞。 

  2 非授权Socks访问 

  在WinGate的缺省配置中,Socks代理(1080号Tcp端口)同样是存在安全漏洞。与打开的Web代理(80号Tcp端口)一样,外部攻击者可以利用Socks代理访问因特网。 

  防范 

  要防止攻击WinGate的这个安全脆弱点,管理员可以限制特定服务的捆绑。在多宿主(multihomed)系统上,执行以下步骤以限定如何提供代理服务。

  1选择Socks或WWWProxyServer属性。 

  2选择Bindings标签。 

  3按下ConnectionsWillBeAcceptedOnTheFollowingInte***ceOnly按钮,并指定本WinGate服务器的内部接口。 

  非授权Telnet访问 

  它是WinGate最具威胁的安全漏洞。通过连接到一个误配置的inGate服务器的Telnet服务,攻击者可以使用别人的主机隐藏自己的踪迹,随意地发动攻击。 

  检测 

  检测WinGate主机是否有这种安全漏洞的方法如下: 

  1.使用telnet尝试连接到一台WinGate服务器。 

  [root@happy/tmp]#telnet172.29.11.191 

  Trying172.29.11.191…. 

  Connectedto172.29.11.191. 

  Escapecharacteris‘^]’. 

  Wingate>10.50.21.5 

  2.如果接受到如上的响应文本,那就输入待连接到的网站。 

  3.如果看到了该新系统的登录提示符,那么该服务器是脆弱的。 

  Connectedtohost10.50.21.5…Connected 

  SunOS5.6 

  Login: 

  对策 

  防止这种安全脆弱点的方法和防止非授权Socks访问的方法类似。在WinGate中简单地限制特定服务的捆绑就可以解决这个问题。一般来说,在多宿主(multihomed)系统管理员可以通过执行以下步骤来完成: 

  1.选择TelnetSever属性。 

  2.选择Bindings标签。 

  3.按下ConnectionsWillBeAcceptedOnTheFollowingInte***ceOnly按钮,并指定本WinGate服务器的内部接口。

  五、后话 

  有防火墙的攻击不单是上面的一点,我有什么写的不对的,大家指正。 

  一直以来,黑客都在研究攻击防火墙的技术和手段,攻击的手法和技术越来越智能化和多样化。但是就黑客攻击防火墙的过程上看,大概可以分为三类攻击。 

  第一类攻击防火墙的方法是探测在目标网络上安装的是何种防火墙系统并且找出此防火墙系统允许哪些服务。我们叫它为对防火墙的探测攻击。 

  第二类攻击防火墙的方法是采取地址欺骗、TCP序号攻击等手法绕过防火墙的认证机制,从而 对防火墙和内部网络破坏。 

  第三类攻击防火墙的方法是寻找、利用防火墙系统实现和设计上的安全漏洞,从而有针对性地发动攻击。这种攻击难度比较大,可是破坏性很大。

 

参考 http://www.hackbase.com/tech/2009-08-05/54628_1.html

      http://www.elecfans.com/dianzichangshi/2009072881331.html

      http://www.bitscn.com/network/cisco/200910/178383.html

 

原创粉丝点击