5.2.1 主流的包过滤方式
“防火墙的基本思路刚才已经介绍过了,即只允许发往特定服务器中的特定应用程序的包通过,然后屏蔽其他的包。”
“防火墙可分为包过滤、应用层网关、电路层网关等几种方式。”
5.2.2 如何设置包过滤的规则
“假设我们的网络如下图所示,将开放给外网的服务器和公司内网分开部署,Web 服务器所在的网络可以从外网直接访问。现在我们希望允许从互联网访问 Web 服务器(图 5.2 ①),但禁止 Web 服务器访问互联网(图 5.2 ②)。以前很少禁止 Web 服务器访问互联网,但现在出现了一些寄生在服务器中感染其他服务器的恶意软件,如果阻止 Web 服务器访问互联网,就可以防止其他服务器被感染。要实现这样的要求,应该如何设置包过滤的规则呢?我们就用这个例子来看一看包过滤的具体思路。”
包过滤的典型示例
“在设置包过滤规则时,首先要观察包是如何流动的。通过接收方 IP 地址和发送方 IP 地址,我们可以判断出包的起点和终点。在图 5.2 ①的例子中,包从互联网流向 Web 服务器,从互联网发送过来的包其起点是不确定的,但终点是确定的,即 Web 服务器。因此,我们可以按此来设定规则,允许符合规则的包通过。也就是说,允许起点(发送方 IP 地址)为任意,终点(接收方 IP 地址)为 Web 服务器 IP 地址的包通过(图 5.2 中表的第 1 行)。如果可以确定发送方 IP 地址,也可以将其加入规则,但这个例子中起点是不确定的,因此可以不将发送方 IP 地址设为判断条件。”
“这样一来,从互联网发往 Web 服务器的包就可以通过防火墙了,但光这样还无法完成访问。因为收到包之后,Web 服务器需要通过确认应答机制 8 通知发送方数据已经正常收到,这需要 Web 服务器向互联网发送包。在 Web 服务器发往互联网的包中,我们可以将起点(发送方 IP 地址)为 Web 服务器地址的包设置为允许通过(图 5.2 中表的第 3 行)。像这样,我们可以先根据接收方和发送方地址判断包的流向,并设置是允许还是阻止。”
5.2.3 通过端口号限定应用程序
“当我们要限定某个应用程序时,可以在判断条件中加上 TCP 头部或者 UDP 头部中的端口号。Web 服务器的端口号为 80 ”
5.2.4 通过控制位判断连接方向
“通过接收方 IP 地址、发送方 IP 地址、接收方端口号、发送方端口号、TCP 控制位这些条件,我们可以判断出通信的起点和终点、应用程序种类,以及访问的方向。”
“不过,实际上也存在无法将希望允许和阻止的访问完全区分开的情况,其中一个代表性的例子就是对 DNS 服务器的访问。DNS 查询使用的是 UDP 协议,而 UDP 与 TCP 不同,它没有连接操作,因此无法像 TCP 一样根据控制位来判断访问方向。”
“这一性质不仅适用于 DNS,对于所有使用 UDP 协议的应用程序都是共通的。”
5.2.6 通过控制位判断连接方向
“包过滤方式的防火墙不仅可以允许或者阻止网络包的通过,还具备地址转换功能 ,因此还需要进行相关的设置。也就是说,互联网和公司内网之间的包需要进行地址转换才能传输,因此必须要进行相关的设置 。”
“互联网路由器的路由表中没有私有地址的路由信息,因此凡是接收方为私有地址的包,在经过互联网中的路由器时都会被丢弃,这就是为什么必须使用地址转换的原因。相对地,防火墙内置的路由功能可以由用户自行设置,因此可以在路由表中配置私有地址相关的路由,使得公司内网到公开区域的访问可以以私有地址的形式来进行,这意味着公司内网和公开区域之间传输的包不需要地址转换。”
5.2.7 通过防火墙
“实际上,在防火墙允许包通过之后,就没有什么特别的机制了,因此包过滤并不是防火墙专用的一种特殊机制,而是应该看作在路由器的包转发功能基础上附加的一种功能。只不过当判断规则比较复杂时,通过路由器的命令难以维护这些规则,而且对阻止的包进行记录对于路由器来说负担也比较大,因此才出现了专用的硬件和软件。如果规则不复杂,也不需要记录日志,那么用内置包过滤功能的普通路由器来充当防火墙也是可以的。”
“包过滤方式的防火墙可根据接收方 IP 地址、发送方 IP 地址、接收方端口号、发送方端口号、控制位等信息来判断是否允许某个包通过。”
网友评论