网络的安全性成为当今最热门的话题之一,很多企业为了保障自身服务器或数据安全都采用了防火墙。随着科技的发展,防火墙也逐渐被大众所接受。但是,由于防火墙是属于高科技产物,许多的人对此还并不是了解的十分透彻。而这篇文章就是给大家讲述了防火墙工作的方式,以及防火墙的基本分类,并且讨论了每一种防火墙的优缺点。
一、防火墙的基本分类
1.包过滤防火墙
第一代防火墙和最基本形式防火墙检查每一个通过的网络包,或者丢弃,或者放行,取决于所建立的一套规则。这称为包过滤防火墙。
本质上,包过滤防火墙是多址的,表明它有两个或两个以上网络适配器或接口。例如,作为防火墙的设备可能有两块网卡(NIC),一块连到内部网络,一块连到公共的Internet。防火墙的任务,就是作为“通信警察”,指引包和截住那些有危害的包。
包过滤防火墙检查每一个传入包,查看包中可用的基本信息(源地址和目的地址、端口号、协议等)。然后,将这些信息与设立的规则相比较。如果已经设立了阻断telnet连接,而包的目的端口是23的话,那么该包就会被丢弃。如果允许传入Web连接,而目的端口为80,则包就会被放行。
多个复杂规则的组合也是可行的。如果允许Web连接,但只针对特定的服务器,目的端口和目的地址二者必须与规则相匹配,才可以让该包通过。
最后,可以确定当一个包到达时,如果对该包没有规则被定义,接下来将会发生什么事情了。通常,为了安全起见,与传入规则不匹配的包就被丢弃了。如果有理由让该包通过,就要建立规则来处理它。
建立包过滤防火墙规则的例子如下:
对来自专用网络的包,只允许来自内部地址的包通过,因为其他包包含不正确的包头部信息。这条规则可以防止网络内部的任何人通过欺骗性的源地址发起攻击。而且,如果黑客对专用网络内部的机器具有了不知从何得来的访问权,这种过滤方式可以阻止黑客从网络内部发起攻击。
在公共网络,只允许目的地址为80端口的包通过。这条规则只允许传入的连接为Web连接。这条规则也允许与Web连接使用相同端口的连接,所以它并不是十分安全。
丢弃从公共网络传入的包,而这些包都有你的网络内的源地址,从而减少IP欺骗性的攻击。
丢弃包含源路由信息的包,以减少源路由攻击。要记住,在源路由攻击中,传入的包包含路由信息,它覆盖了包通过网络应采取得正常路由,可能会绕过已有的安全程序。通过忽略源路由信息,防火墙可以减少这种方式的攻击。
2.状态/动态检测防火墙
状态/动态检测防火墙,试图跟踪通过防火墙的网络连接和包,这样防火墙就可以使用一组附加的标准,以确定是否允许和拒绝通信。它是在使用了基本包过滤防火墙的通信上应用一些技术来做到这点的。
当包过滤防火墙见到一个网络包,包是孤立存在的。它没有防火墙所关心的历史或未来。允许和拒绝包的决定完全取决于包自身所包含的信息,如源地址、目的地址、端口号等。包中没有包含任何描述它在信息流中的位置的信息,则该包被认为是无状态的;它仅是存在而已。
一个有状态包检查防火墙跟踪的不仅是包中包含的信息。为了跟踪包的状态,防火墙还记录有用的信息以帮助识别包,例如已有的网络连接、数据的传出请求等。
例如,如果传入的包包含视频数据流,而防火墙可能已经记录了有关信息,是关于位于特定IP地址的应用程序最近向发出包的源地址请求视频信号的信息。如果传入的包是要传给发出请求的相同系统,防火墙进行匹配,包就可以被允许通过。
一个状态/动态检测防火墙可截断所有传入的通信,而允许所有传出的通信。因为防火墙跟踪内部出去的请求,所有按要求传入的数据被允许通过,直到连接被关闭为止。只有未被请求的传入通信被截断。
如果在防火墙内正运行一台服务器,配置就会变得稍微复杂一些,但状态包检查是很有力和适应性的技术。例如,可以将防火墙配置成只允许从特定端口进入的通信,只可传到特定服务器。如果正在运行Web服务器,防火墙只将80端口传入的通信发到指定的Web服务器。
状态/动态检测防火墙可提供的其他一些额外的服务有:
将某些类型的连接重定向到审核服务中去。例如,到专用Web服务器的连接,在Web服务器连接被允许之前,可能被发到SecutID服务器(用一次性口令来使用)。
拒绝携带某些数据的网络通信,如带有附加可执行程序的传入电子消息,或包含ActiveX程序的Web页面。
跟踪连接状态的方式取决于包通过防火墙的类型:
TCP包。当建立起一个TCP连接时,通过的第一个包被标有包的SYN标志。通常情况下,防火墙丢弃所有外部的连接企图,除非已经建立起某条特定规则来处理它们。对内部的连接试图连到外部主机,防火墙注明连接包,允许响应及随后再两个系统之间的包,直到连接结束为止。在这种方式下,传入的包只有在它是响应一个已建立的连接时,才会被允许通过。
UDP包。UDP包比TCP包简单,因为它们不包含任何连接或序列信息。它们只包含源地址、目的地址、校验和携带的数据。这种信息的缺乏使得防火墙确定包的合法性很困难,因为没有打开的连接可利用,以测试传入的包是否应被允许通过。可是,如果防火墙跟踪包的状态,就可以确定。对传入的包,若它所使用的地址和UDP包携带的协议与传出的连接请求匹配,该包就被允许通过。和TCP包一样,没有传入的UDP包会被允许通过,除非它是响应传出的请求或已经建立了指定的规则来处理它。对其他种类的包,情况和UDP包类似。防火墙仔细地跟踪传出的请求,记录下所使用的地址、协议和包的类型,然后对照保存过的信息核对传入的包,以确保这些包是被请求的。
3.应用程序代理防火墙
应用程序代理防火墙实际上并不允许在它连接的网络之间直接通信。相反,它是接受来自内部网络特定用户应用程序的通信,然后建立于公共网络服务器单独的连接。网络内部的用户不直接与外部的服务器通信,所以服务器不能直接访问内部网的任何一部分。
另外,如果不为特定的应用程序安装代理程序代码,这种服务是不会被支持的,不能建立任何连接。这种建立方式拒绝任何没有明确配置的连接,从而提供了额外的安全性和控制性。
例如,一个用户的Web浏览器可能在80端口,但也经常可能是在1080端口,连接到了内部网络的HTTP代理防火墙。防火墙然后会接受这个连接请求,并把它转到所请求的Web服务器。
这种连接和转移对该用户来说是透明的,因为它完全是由代理防火墙自动处理的。
代理防火墙通常支持的一些常见的应用程序有:
HTTP、HTTPS/SSL、SMTP、POP3、IMAP、NNTP、TELNET、FTP、IRC
应用程序代理防火墙可以配置成允许来自内部网络的任何连接,它也可以配置成要求用户认证后才建立连接。要求认证的方式由只为已知的用户建立连接的这种限制,为安全性提供了额外的保证。如果网络受到危害,这个特征使得从内部发动攻击的可能性大大减少。
4.NAT
讨论到防火墙的主题,就一定要提到有一种路由器,尽管从技术上讲它根本不是防火墙。网络地址转换(NAT)协议将内部网络的多个IP地址转换到一个公共地址发到Internet上。
NAT经常用于小型办公室、家庭等网络,多个用户分享单一的IP地址,并为Internet连接提供一些安全机制。
当内部用户与一个公共主机通信时,NAT追踪是哪一个用户作的请求,修改传出的包,这样包就像是来自单一的公共IP地址,然后再打开连接。一旦建立了连接,在内部计算机和Web站点之间来回流动的通信就都是透明的了。
当从公共网络传来一个未经请求的传入连接时,NAT有一套规则来决定如何处理它。如果没有事先定义好的规则,NAT只是简单的丢弃所有未经请求的传入连接,就像包过滤防火墙所做的那样。
可是,就像对包过滤防火墙一样,你可以将NAT配置为接受某些特定端口传来的传入连接,并将它们送到一个特定的主机地址。
5.个人防火墙
现在网络上流传着很多的个人防火墙软件,它是应用程序级的。个人防火墙是一种能够保护个人计算机系统安全的软件,它可以直接在用户的计算机上运行,使用与状态/动态检测防火墙相同的方式,保护一台计算机免受攻击。通常,这些防火墙是安装在计算机网络接口的较低级别上,使得它们可以监视传入传出网卡的所有网络通信。
一旦安装上个人防火墙,就可以把它设置成“学习模式”,这样的话,对遇到的每一种新的网络通信,个人防火墙都会提示用户一次,询问如何处理那种通信。然后个人防火墙便记住响应方式,并应用于以后遇到的相同那种网络通信。
例如,如果用户已经安装了一台个人Web服务器,个人防火墙可能将第一个传入的Web连接作上标志,并询问用户是否允许它通过。用户可能允许所有的Web连接、来自某些特定IP地址范围的连接等,个人防火墙然后把这条规则应用于所有传入的Web连接。
基本上,你可以将个人防火墙想象成在用户计算机上建立了一个虚拟网络接口。不再是计算机的操作系统直接通过网卡进行通信,而是以操作系统通过和个人防火墙对话,仔细检查网络通信,然后再通过网卡通信。
二、各类防火墙的优缺点
1.包过滤防火墙
使用包过滤防火墙的优点包括:
防火墙对每条传入和传出网络的包实行低水平控制。
每个IP包的字段都被检查,例如源地址、目的地址、协议、端口等。防火墙将基于这些信息应用过滤规则。
防火墙可以识别和丢弃带欺骗性源IP地址的包。
包过滤防火墙是两个网络之间访问的唯一来源。因为所有的通信必须通过防火墙,绕过是困难的。
包过滤通常被包含在路由器数据包中,所以不必额外的系统来处理这个特征。
使用包过滤防火墙的缺点包括:
配置困难。因为包过滤防火墙很复杂,人们经常会忽略建立一些必要的规则,或者错误配置了已有的规则,在防火墙上留下漏洞。然而,在市场上,许多新版本的防火墙对这个缺点正在作改进,如开发者实现了基于图形化用户界面(GUI)的配置和更直接的规则定义。
为特定服务开放的端口存在着危险,可能会被用于其他传输。例如,Web服务器默认端口为80,而计算机上又安装了RealPlayer,那么它会搜寻可以允许连接到RealAudio服务器的端口,而不管这个端口是否被其他协议所使用,RealPlayer正好是使用80端口而搜寻的。就这样无意中,RealPlayer就利用了Web服务器的端口。
可能还有其他方法绕过防火墙进入网络,例如拨入连接。但这个并不是防火墙自身的缺点,而是不应该在网络安全上单纯依赖防火墙的原因。
2.状态/动态检测防火墙
状态/动态检测防火墙的优点有:
检查IP包的每个字段的能力,并遵从基于包中信息的过滤规则。
识别带有欺骗性源IP地址包的能力。
包过滤防火墙是两个网络之间访问的唯一来源。因为所有的通信必须通过防火墙,绕过是困难的。
基于应用程序信息验证一个包的状态的能力, 例如基于一个已经建立的FTP连接,允许返回的FTP包通过。
基于应用程序信息验证一个包状态的能力,例如允许一个先前认证过的连接继续与被授予的服务通信。
记录有关通过的每个包的详细信息的能力。基本上,防火墙用来确定包状态的所有信息都可以被记录,包括应用程序对包的请求,连接的持续时间,内部和外部系统所做的连接请求等。
状态/动态检测防火墙的缺点:
状态/动态检测防火墙唯一的缺点就是所有这些记录、测试和分析工作可能会造成网络连接的某种迟滞,特别是在同时有许多连接激活的时候,或者是有大量的过滤网络通信的规则存在时。可是,硬件速度越快,这个问题就越不易察觉,而且防火墙的制造商一直致力于提高他们产品的速度。
3.应用程序代理防火墙
使用应用程序代理防火墙的优点有:
指定对连接的控制,例如允许或拒绝基于服务器IP地址的访问,或者是允许或拒绝基于用户所请求连接的IP地址的访问。
通过限制某些协议的传出请求,来减少网络中不必要的服务。
大多数代理防火墙能够记录所有的连接,包括地址和持续时间。这些信息对追踪攻击和发生的未授权访问的事件事很有用的。
使用应用程序代理防火墙的缺点有:
必须在一定范围内定制用户的系统,这取决于所用的应用程序。
一些应用程序可能根本不支持代理连接。
4.NAT
使用NAT的优点有:
所有内部的IP地址对外面的人来说是隐蔽的。因为这个原因,网络之外没有人可以通过指定IP地址的方式直接对网络内的任何一台特定的计算机发起攻击。
如果因为某种原因公共IP地址资源比较短缺的话,NAT可以使整个内部网络共享一个IP地址。
可以启用基本的包过滤防火墙安全机制,因为所有传入的包如果没有专门指定配置到NAT,那么就会被丢弃。内部网络的计算机就不可能直接访问外部网络。
使用NAT的缺点:
NAT的缺点和包过滤防火墙的缺点是一样的。虽然可以保障内部网络的安全,但它也是一些类似的局限。而且内网可以利用现流传比较广泛的木马程序可以通过NAT做外部连接,就像它可以穿过包过滤防火墙一样的容易。
注意:现在有很多厂商开发的防火墙,特别是状态/动态检测防火墙,除了它们应该具有的功能之外也提供了NAT的功能。
5.个人防火墙
个人防火墙的优点有:
增加了保护级别,不需要额外的硬件资源。
个人防火墙除了可以抵挡外来攻击的同时,还可以抵挡内部的攻击。
个人防火墙是对公共网络中的单个系统提供了保护。例如一个家庭用户使用的是Modem或ISDN/ADSL上网,可能一个硬件防火墙对于他来说实在是太昂贵了,或者说是太麻烦了。而个人防火墙已经能够为用户隐蔽暴露在网络上的信息,比如IP地址之类的信息等。
个人防火墙的缺点:
个人防火墙主要的缺点就是对公共网络只有一个物理接口。要记住,真正的防火墙应当监视并控制两个或更多的网络接口之间的通信。这样一来的话,个人防火墙本身可能会容易受到威胁,或者说是具有这样一个弱点,网络通信可以绕过防火墙的规则。