防火墙的结构和原理
2022-10-21•
围观热度 3529•资讯中心
无论服务器部署在哪里,现在一般都会在前面部署一个防火墙,如果包无法通过防火墙,就无法到达服务器。因此,让我们先来探索一下包是如何通过防火墙的。
防火墙的基本思路刚才已经介绍过了,即只允许发往特定服务器中的特定应用程序的包通过,然后屏蔽其他的包。不过,特定服务器上的特定应用程序这个规则看起来不复杂,但网络中流动着很多各种各样的包,如何才能从这些包中分辨出哪些可以通过,哪些不能通过呢?为此,人们设计了多种方式,其中任何一种方式都可以实现防火墙的目的,但出于性能、价格、易用性等因素,现在最为普及的是包过滤方式。因此,我们的探险之旅就集中介绍一下包过滤方式的防火墙是怎样工作的。
网络包的头部包含了用于控制通信操作的控制信息,只要检查这些信息,就可以获得很多有用的内容。这些头部信息中,经常用于设置包过滤规则的字段如表5.1所示。不过,光看这张表还是难以理解过滤规则是如何设置的,所以我们来看一个具体的例子。地址转换和包过滤中用于设置规则的字段
假设我们的网络将开放给外网的服务器和公司内网分开部署,Web服务器所在的网络可以从外网直接访问。现在我们希望允许从互联网访问Web服务器,但禁止Web服务器访问互联网。以前很少禁止Web服务器访问互联网,但现在出现了一些寄生在服务器中感染其他服务器的恶意软件,如果阻止Web服务器访问互联网,就可以防止其他服务器被感染。要实现这样的要求,应该如何设置包过滤的规则呢?我们就用这个例子来看一看包过滤的具体思路。
在设置包过滤规则时,首先要观察包是如何流动的。通过接收方IP地址和发送方IP地址,我们可以判断出包的起点和终点。在图5.2①的例子中,包从互联网流向Web服务器,从互联网发送过来的包其起点是不确定的,但终点是确定的,即Web服务器。因此,我们可以按此来设定规则,允许符合规则的包通过。也就是说,允许起点(发送方IP地址)为任意,终点(接收方IP地址)为Web服务器IP地址的包通过。如果可以确定发送方IP地址,也可以将其加入规则,但这个例子中起点是不确定的,因此可以不将发送方IP地址设为判断条件。
这样一来,从互联网发往Web服务器的包就可以通过防火墙了,但光这样还无法完成访问。因为收到包之后,Web服务器需要通过确认应答机制[插图]通知发送方数据已经正常收到,这需要Web服务器向互联网发送包。在Web服务器发往互联网的包中,我们可以将起点(发送方IP地址)为Web服务器地址的包设置为允许通过。像这样,我们可以先根据接收方和发送方地址判断包的流向,并设置是允许还是阻止。
不过,按照前面的设置,相当于允许了互联网和Web服务器之间所有的包通过,这个状态很危险。假如服务器上还有一个文件服务器程序在工作,那么这些文件就可能会被非法访问从而造成信息泄露。有风险的还不仅是文件服务器,现在每天都会发布若干安全漏洞,可以说随处都隐藏着风险。因此,我们最好是阻止除了必需服务(也就是本例中的Web服务)以外的所有应用程序的包。
当我们要限定某个应用程序时,可以在判断条件中加上TCP头部或者UDP头部中的端口号。Web服务器的端口号为80[插图],因此我们在刚才的接收方IP地址和发送方IP地址的基础上再加上80端口作为条件就可以了。也就是说,当包的接收方IP地址为Web服务器地址,且接收方端口号为80时,允许这些包通过;或者当包的发送方IP地址为Web服务器地址,且发送方端口号为80时,允许这些包通过。如果要允许访问除Web之外的其他应用程序,则只要将该应用程序的端口号设置到防火墙中并允许通过就可以了。
通过防火墙像这样,我们可以在防火墙中设置各种规则,当包到达防火墙时,会根据这些规则判断是允许通过还是阻止通过。如果判断结果为阻止,那么这个包会被丢弃并被记录下来。这是因为这些被丢弃的包中通常含有非法入侵的痕迹,通过分析这些包能够搞清楚入侵者使用的手法,从而帮助我们更好地防范非法入侵。