VPN和防火墙
最常见的防火墙采用的是包过滤技术,用它来限制可用的服务,限制发出或接收可接受数据包的地址。IP包过滤技术提供了一种方法,让我们可以精确地定义什么样的IP数据流可以被允许通过防火墙。
当我们试图将企业内部网Intranet与公共网络如Internet相连时,IP包过滤技术作为一种行之有效的安全措施就显得非常重要。
一、VPN服务器和防火墙配置
VPN服务器和防火墙的结合使用可以分为以下两种情况:
?VPN服务器位于最前端,直接与Internet相连,防火墙放置于VPN服务器和企业内部网Intranet之间。
?防火墙作为第一道防线,位于最前端,直接与Internet相连,VPN服务器位于防火墙和企业内部网Intranet之间。
二、VPN服务器位于防火墙之前
图十七给出了VPN服务器位于防火墙之前的示意图,在这种情形下,需要在VPN服务器的Internet接口处添加包过滤器,从而限定只有VPN隧道数据流可以通过服务器的该接口。
图十七 VPN服务器位于防火墙之前
如图所示,从隧道传输来的数据流,首先经过VPN服务器的解密,然后转发至防火墙,防火墙再使用它的包过滤器,将数据流进一步转发到企业内部网Intranet。由于在这种方式下,限定VPN服务器能接收的唯一数据流发自授权VPN客户机,因此此处的防火墙过滤器,其作用主要是防止VPN用户访问特定的企业内部网资源,如某些企业内部敏感数据等。
将VPN服务器放置于防火墙之前,还有一个好处是,由于VPN服务器只接收来自VPN客户机的数据流,这种方法可以避免非VPN的Internet用户使用FTP登录企业内部服务器或者通过浏览器访问企业内部网的Web资源。
如上所提到的,为了做到只允许VPN数据流通过VPN服务器的Internet接口,我们需要在VPN服务器的Internet接口处添加包过滤器,下面以Windows 2000为例,分别就使用PPTP协议和L2TP协议两种情况,来看一下VPN服务器所需要配置的输入输出过滤器。
1)PPTP包过滤
在Windows 2000的输入过滤器配置中,将过滤器的action选项设置为Drop all packets except those that meet the criteria below(丢弃所有不符合以下标准的数据包):
?目标地址 = VPN服务器的Internet接口IP地址,子网掩码 = 255.255.255.255,TCP目标端口号 = 1723(0x06BB)。
该过滤条件确保隧道中的数据流,其源端发自PPTP客户机,目的端地址为PPTP服务器。
?目标地址 = VPN服务器的Internet接口IP地址,子网掩码 = 255.255.255.255,IP协议ID = 47(0x2F)。
该过滤条件确保从PPTP客户机发向PPTP服务器的是PPTP隧道化数据包。
?目标地址 = VPN服务器的Internet接口IP地址,子网掩码 = 255.255.255.255,TCP[established]源端端口号 = 1723(0x06BB)。
该过滤条件仅在路由器-对-路由器VPN连接中,当VPN服务器作为VPN客户机(即主叫路由器)时适用。
类似的,我们可以在Windows 2000中,配置输出过滤器,将过滤器的action选项设置为Drop all packets except those that meet the criteria below(丢弃所有不符合以下标准的数据包):
?源端地址 = VPN服务器的Internet接口IP地址,子网掩码 = 255.255.255.255,TCP源端端口号 = 1723(0x06BB)。
该过滤条件确保隧道中的数据流是从PPTP服务器发向VPN客户机的。
?源端地址 = VPN服务器的Internet接口IP地址,子网掩码 = 255.255.255.255,IP协议ID = 47(0x2F)。
该过滤条件确保从PPTP服务器发向PPTP客户机的是PPTP隧道化数据包。
?源端地址 = VPN服务器的Internet接口IP地址,子网掩码 = 255.255.255.255,TCP[established]目标端口号 = 1723(0x06BB)。
该过滤条件仅在路由器-对-路由器VPN连接中,当VPN服务器作为VPN客户机(即主叫路由器)时适用。
2)基于IPSec的L2TP包过滤
配置输入过滤器,同样地将将过滤器的action选项设置为Drop all packets except those that meet the criteria below:
?目标地址 = VPN服务器的Internet接口IP地址,子网掩码 = 255.255.255.255,UDP目标端口号 = 500 (0x01F4)。
该过滤条件确保发向VPN服务器的是使用Internet密钥交换(IKE)协议的数据流即IPSec数据包。
?目标地址 = VPN服务器的Internet接口IP地址,子网掩码 = 255.255.255.255,UDP目标端口号 = 1701 (0x6A5)。
该过滤条件确保L2TP隧道数据流源端发自VPN客户机,目标端为VPN服务器。
配置输出过滤器,同样地将过滤器的action选项设置为Drop all packets except those that meet the criteria below:
?源端地址 = VPN服务器的Internet接口IP地址,子网掩码 = 255.255.255.255,UDP源端端口号 = 500 (0x01F4)。
该过滤条件确保从VPN服务器发出的是使用Internet密钥交换(IKE)协议的数据流即IPSec数据包。
?源端地址 = VPN服务器的Internet接口IP地址,子网掩码 = 255.255.255.255,UDP源端端口号 = 1701 (0x6A5)。
该过滤条件确保L2TP隧道数据流从VPN服务器发向VPN客户机。
在对IPSec ESP数据流的过滤中,没有针对IP协议ID = 50的过滤要求。但在IPSec协议去除ESP报头后,需要使用路由及远程访问服务过滤器对数据包做进一步过滤操作。
三、VPN服务器位于防火墙之后
更常见的一种组网架构,如图十八所示,是防火墙作为第一道防线,直接与Internet相连,而VPN服务器作为另一种企业内部网资源位于DMZ(非军事区)。作为IP网络的一个组成部分,典型的DMZ通常包含可供Internet用户访问的资源,如Web服务器和FTP服务器等。在图十八的结构中,VPN服务器的一个接口在DMZ上,另一个接口在企业内部网Intranet。
图十八、VPN服务器位于防火墙之后
在这种方式中,防火墙的Internet接口必须配置输入和输出过滤器,从而可以将VPN隧道数据流转发至VPN服务器。此外,还必须在防火墙的Internet接口配置一些其他各式不同的过滤器,以便将不同类型的数据流转发至相应的Web服务器,FTP服务器或者是位于DMZ中的其他类型的服务器上。
需要格外指出的是,在如上图所示的架构中,存在着一个不安全的隐患。因为从安全角度出发,要求对VPN连接有个认证过程,从而可以拒绝通不过认证的非授权用户访问VPN服务器。然而,由于防火墙不具有VPN连接所需的加密密钥,因此它只能对隧道数据的明文报头进行过滤,这也意味着只要是隧道数据,无论它是否发自授权用户,均通过防火墙被转发至VPN服务器,这一点,对于VPN安全来说,是不利的。
下面还是以Windows 2000为例,来看一下如何使用防火墙包过滤配置软件,在防火墙的Internet接口中,配置转发VPN隧道数据流所需的输入输出过滤器。
1)PPTP包过滤:
配置输入过滤器,将过滤器的action选项设置为Drop all packets except those that meet the criteria below:
?目标地址 = VPN服务器的DMZ接口IP地址,TCP目标端口号 = 1723 (0x06BB)。
该过滤条件确保隧道中的数据流,其源端发自PPTP客户机,目标地址为PPTP服务器。
?目标地址 = VPN服务器的DMZ接口IP地址,IP协议ID = 47 (0x2F)。
该过滤条件确保从PPTP客户机发向PPTP服务器的是PPTP隧道化数据包。
?目标地址 = VPN服务器的DMZ接口IP地址,TCP [established]源端端口号 = 1723 (0x06BB)。
该过滤条件仅在路由器-对-路由器VPN连接中,当VPN服务器用作VPN客户机(即主叫路由器)时适用。
配置输出过滤器,将过滤器的action选项设置为Drop all packets except those that meet the criteria below:
?源端地址 = VPN服务器的DMZ接口IP地址,TCP源端端口号 = 1723 (0x06BB)。
该过滤条件确保隧道中的数据流是从PPTP服务器发向VPN客户机。
?源端地址 = VPN服务器的DMZ接口IP地址,IP协议ID = 47 (0x2F)。
该过滤条件确保从PPTP服务器发向PPTP客户机的是PPTP隧道化数据包。
?源端地址 = VPN服务器的DMZ接口IP地址,TCP [established]目标端口号 = 1723 (0x06BB)。
该过滤条件仅在路由器-对-路由器VPN连接中,当VPN服务器用作VPN客户机(即主叫路由器)时适用。
2)基于IPSec的L2TP包过滤
配置输入过滤器,将过滤器的action选项设置为Drop all packets except those that meet the criteria below:
?目标地址 = VPN服务器的DMZ接口IP地址,UDP目标端口号 = 500 (0x01F4)。
该过滤条件确保发向VPN服务器的是使用Internet密钥交换(IKE)协议的数据流即IPSec数据包。
?目标地址 = VPN服务器的DMZ接口IP地址,IP协议ID = 50 (0x32)。
该过滤条件确保从VPN客户机发向VPN服务器的是IPSec ESP数据流。
配置输出过滤器,同样地将过滤器的action选项设置为Drop all packets except those that meet the criteria below:
?源端地址 = VPN服务器的DMZ接口IP地址,UDP源端端口号 = 500 (0x01F4)。
该过滤条件确保从VPN服务器发出的是使用Internet密钥交换(IKE)协议的数据流即IPSec数据包。
?源端地址 = VPN服务器的DMZ接的IP地址,IP协议ID = 50 (0x32)。
该过滤条件确保从VPN服务器发向VPN客户机的是IPSec ESP数据流。
在对L2TP数据流的过滤中,没有针对UDP端口号 = 1701的过滤