软件客户端的全加密Cisco IPsec VPN网关

日期: 2008-10-22 作者:Michael J. Martin翻译:曾少宁 来源:TechTarget中国 英文

我在之前的文章《建立IOS基于路由器的VPN网关》中提到过有两种不同的部署Cisco软件客户端的方法。第二种创建VPN客户端网关的方法是全加密的,或者我们称为“新式”拓扑。一般都认为这种拓扑比广泛应用的“半隧道VPN”更安全,这是我们在前一篇文章中讨论过的。下面是就这种全加密网络拓扑: 在所有的全加密配置网络中,所有从远程节点过来的流量在到达VPN网关的内部接口之前都是加密的。

然后网关将这些安全的(已经解码的)流量发送到本地下一跳节点(172.30.40.33)。在这个例子中,我们将使用我们在“旧式”实现中所使用的相同网络:172.30.40.0/24、172.30.80.0/24和172.3……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

我在之前的文章《建立IOS基于路由器的VPN网关》中提到过有两种不同的部署Cisco软件客户端的方法。第二种创建VPN客户端网关的方法是全加密的,或者我们称为“新式”拓扑。一般都认为这种拓扑比广泛应用的“半隧道VPN”更安全,这是我们在前一篇文章中讨论过的。下面是就这种全加密网络拓扑:

全加密网络拓扑

在所有的全加密配置网络中,所有从远程节点过来的流量在到达VPN网关的内部接口之前都是加密的。然后网关将这些安全的(已经解码的)流量发送到本地下一跳节点(172.30.40.33)。在这个例子中,我们将使用我们在“旧式”实现中所使用的相同网络:172.30.40.0/24、172.30.80.0/24和172.30.60.0/24。所有其它的流量都被发送到内部防火墙接口。然后防火墙根据它的策略规则库处理VPN客户端的外部请求。将所有的流量传送到正确的位置的确是需要费一番周折。但为了支持来自非显式定义网络的VPN客户端连接,VPN网关的默认路由必须指向网关路由器的DMZ接口(63.240.22.0.1)。所有的安全网络必须被显式地定义并且使用RS的172.30.40.0/24的网络接口(172.30.40.33)作为下一跳地址。为了使Internet流量能到达防火墙的内部接口(172.30.40.1),我们实现了一条路由来检查流量,然后根据一个流量检查ACL将它转发到恰当的网关。这跟路由器决定加密哪些流量的方法一样,它根据ACL来检查流量,然后进行相应的处理。

既然我们已经解决了安全网络流量和Internet网络流量处理问题,以及在IOS路由器上实现全加密拓扑,我们就可以进行新式VPN配置了。新式和旧式VPN配置的区别很大程度上是在外加的ISAKMP模板上。在旧式配置中,VPN客户端认证、授权和IP地址处理都是作为静态密码表配置的一部分。

在一个单客户端解决方案中(其中用户社区的所有流量传输都通过单个网络访问、ISAKMP和AAA策略实现),这并不会带来任何的限制。而在多客户端环境中,由于需要实现不同的AAA和网络访问策略,这时旧式方法有些不满足要求。ISAKMP模板能够创建不同的ISAKMP模板与不同的ISAKMP客户端配置组和扩展的不同的动态密码图及/或图序列实体一起使用。

为了说明它们的区别,我们将使用新式方法重新创建半隧道和全加密VPN解决方案。就像旧式方法,VPN网关配置由两部分组成:ISAKMP和密码图配置。

ISAKMP配置

A.创建ISAKMP策略:下面这个配置实现了ISAKMP阶段1策略,它同时支持默认DES/SHA/DH-1和支持预共享密匙的更安全的标准3DES/MD5/DH-2:

outlan-rt05(config)#crypto isakmp policy 10
outlan-rt05(config-isakmp)#encr 3des
outlan-rt05(config-isakmp)#hash md5 
outlan-rt05(config-isakmp)#authentication pre-share
outlan-rt05(config-isakmp)#group 2  
outlan-rt05(config-isakmp)#exit
outlan-rt05(config)#crypto isakmp policy 20
outlan-rt05(config-isakmp)#hash sha
outlan-rt05(config-isakmp)#encryption des
outlan-rt05(config-isakmp)#authentication pre-share
outlan-rt05(config-isakmp)#group 1

B.配置AAA用户和组认证、授权和帐号:半隧道策略将使用本地源用户认证和组授权。全加密策略使用TACACS进行用户认证和本地源组授权。

outlan-rt05(config)#aaa authentication login local-user-auth local
outlan-rt05(config)#aaa authorization network local-group-authz local 
outlan-rt05(config)#aaa authentication login aaa-auth group tacacs+
outlan-rt05(config)#tacacs-server host 172.30.40.6
outlan-rt05(config)#tacacs-server key secretkey

C.为这两个策略创建IP地址池:

outlan-rt05(config)#ip local pool OS-VPN 172.30.90.2 172.30.90.14
outlan-rt05(config)#ip local pool FC-VPN 5.0.0.2 5.0.0.254

D.创建loopback接口与地址池:

outlan-rt05(config)#interface loopback 90
outlan-rt05(config-if)#ip address 172.30.90.1 255.255.255.2
outlan-rt05(config-if)#exit       
outlan-rt05(config)#interface loopback 5
outlan-rt05(config-if)#ip address 5.0.0.1 255.255.255.0
outlan-rt05(config-if)#exit
outlan-rt05(config)#

E.创建半隧道ACL:

outlan-rt05(config)#ip access-list extended SPLIT-TUNNEL
outlan-rt05(config-ext-nacl)#permit ip 172.30.40.0 0.0.0.255 172.30.90.0 0.0.0.15
outlan-rt05(config-ext-nacl)#permit ip 172.30.80.0 0.0.0.255 172.30.90.0 0.0.0.15                
outlan-rt05(config-ext-nacl)#permit ip 172.30.60.0 0.0.0.255 172.30.90.0 0.0.0.15
outlan-rt05(config-ext-nacl)#exit
outlan-rt05(config)#

F.创建客户端配置组:半隧道策略的ISAKMP组和全加密策略必须分开创建:

outlan-rt05(config)#crypto isakmp client configuration group split-tunnel
outlan-rt05(config-isakmp-group)#key secretkey
outlan-rt05(config-isakmp-group)#dns 172.30.40.2
outlan-rt05(config-isakmp-group)#domain outlan.net
outlan-rt05(config-isakmp-group)#pool OS-VPN 
outlan-rt05(config-isakmp-group)#acl SPLIT-TUNNEL
outlan-rt05(config-isakmp-group)#max-logins 2
outlan-rt05(config-isakmp-group)#max-users 13
outlan-rt05(config-isakmp-group)#save-password
outlan-rt05(config-isakmp-group)#banner ^
Enter TEXT message.  End with the character '^'.
You are connected to OUTLAN. All outlan traffic is secured.
^
outlan-rt05(config-isakmp-group)#exit
outlan-rt05(config)# crypto isakmp client configuration group full-crypto
outlan-rt05(config-isakmp-group)#key secretkey
outlan-rt05(config-isakmp-group)#dns 172.30.40.2 
outlan-rt05(config-isakmp-group)#domain outlan.net
outlan-rt05(config-isakmp-group)#pool FC-VPN
outlan-rt05(config-isakmp-group)#save-password
outlan-rt05(config-isakmp-group)#include-local-lan
outlan-rt05(config-isakmp-group)#pfs      
outlan-rt05(config-isakmp-group)#max-users 253
outlan-rt05(config-isakmp-group)#max-logins 1
outlan-rt05(config-isakmp-group)#banner ^
Enter TEXT message.  End with the character '^'.
This is a full crypto VPN connection.
^
outlan-rt05(config-isakmp-group)#exit

G.配置CTCP端口定义(并禁用路由器上的HTTP和HTTPS服务):

outlan-rt05(config)#crypto ctcp port 443 10000
outlan-rt05(config)#no ip http secure-server
outlan-rt05(config)#no ip http server

H.配置NAT透明活跃时间:NAT透明默认是激活的,但你需要设置一个活跃时间。然后,如果你只想使用CTCP,你可以禁用NAT回环:

outlan-rt05(config)#crypto isakmp nat keepalive 20
outlan-rt05(config)#no crypto ipsec nat-transparency udp-encaps

配置ISAKMP模板:ISAKMP模板是用来做新式配置的。注意ISAKMP组名和ISAKMP策略名应该是一样的。这不是一个硬性要求,但如果你有很多不同的组和模板,这样做可以让你更容易管理它们:

outlan-rt05(config)#crypto isakmp profile split-tunnel
% A profile is deemed incomplete until it has match identity statements
outlan-rt05(conf-isa-prof)#description ISAKMP for Split Tunneling Cisco Soft Clients
outlan-rt05(conf-isa-prof)#match identity group split-tunnel
outlan-rt05(conf-isa-prof)#client authentication list local-user-auth
outlan-rt05(conf-isa-prof)#isakmp authorization list local-group-authz
outlan-rt05(conf-isa-prof)#client configuration address respond
outlan-rt05(conf-isa-prof)#keepalive 20 retry 10
outlan-rt05(conf-isa-prof)#exit
outlan-rt05(config)#
outlan-rt05(config)# crypto isakmp profile full-crypto
% A profile is deemed incomplete until it has match identity statements
outlan-rt05(conf-isa-prof)#description ISAKMP for Full Crypto Cisco Soft Clients
outlan-rt05(conf-isa-prof)#match identity group full-crypto
outlan-rt05(conf-isa-prof)#client authentication list aaa-auth 
outlan-rt05(conf-isa-prof)#isakmp authorization list local-group-authz
outlan-rt05(conf-isa-prof)#client configuration address respond
outlan-rt05(conf-isa-prof)#keepalive 20 retry 10
outlan-rt05(conf-isa-prof)#exit
outlan-rt05(config)#

密码图配置

定义了ISAKMP组和模板后,我们继续配置(更简单的)新式密码图。

A.创建转换集:因为我们仅支持Cisco VPN软件客户端,所以我们实际上只需要一个阶段2策略:

outlan-rt05(config)#crypto ipsec transform-set 3DES-MD5-Z esp-3des esp-md5-hmac comp-lzs

B.创建动态密码图:因为我们支持两个不同的VPN策略,我们有一些实现动态密码图的选项要配置。我们可以实现两个不同的图,或者实现一个图及两个序列。下面是一个实现一个图及两个序列的例子:

outlan-rt05(config)#crypto dynamic-map Software-Client 10
outlan-rt05(config-crypto-map)#set security-association lifetime seconds 12000
outlan-rt05(config-crypto-map)#set transform-set 3DES-MD5-Z 
outlan-rt05(config-crypto-map)#set isakmp-profile split-tunnel
outlan-rt05(config-crypto-map)#reverse-route
outlan-rt05(config-crypto-map)#exit
outlan-rt05(config-crypto-map)#crypto dynamic-map Software-Client 20
outlan-rt05(config-crypto-map)#set transform-set 3DES-MD5-Z
outlan-rt05(config-crypto-map)#set pfs group2
outlan-rt05(config-crypto-map)#set isakmp-profile full-crypto
outlan-rt05(config-crypto-map)#reverse-route
outlan-rt05(config-crypto-map)#exit

C.创建静态密码图:

outlan-rt05(config)#crypto map outlan-ipsec-gw05 10 ipsec-isakmp dynamic Software-Client

D.安装静态密码图:一旦密码图安装好,它就可以支持客户端连接了。然而,为了支持全密码非安全流量处理,我们需要实现策略路由:

outlan-rt05(config)#int fastEthernet 0/0
outlan-rt05(config-if)#crypto map outlan-ipsec-gw05
*Dec  8 04:32:00.479: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
outlan-rt05(config-if)#exit

E:安装路由策略:正如我们上面所提到的,为了处理离线流量,我们需要路由器在处理特定类型流量时忽略它的默认路由。这个技巧是通过创建一个流量匹配ACL和一个将匹配的流量指向另一个网关的简单路由图实现的:

outlan-rt05(config)#ip access-list extended redirect
outlan-rt05(config-ext-nacl)#permit tcp 5.0.0.0 0.0.0.255 any eq 80
outlan-rt05(config-ext-nacl)#permit tcp 5.0.0.0 0.0.0.255 any eq 443
outlan-rt05(config-ext-nacl)#permit tcp 5.0.0.0 0.0.0.255 any eq ftp
outlan-rt05(config)# route-map int-acc permit 10
outlan-rt05(config-route-map)#match ip address redirect
outlan-rt05(config-route-map)#set ip next-hop 172.30.40.1
outlan-rt05(config)#interface FastEthernet0/1              
outlan-rt05(config-if)#ip policy route-map int-acc 
outlan-rt05(config-if)#exit
outlan-rt05(config)#

这样多策略VPN网关就配置好了。对于客户端模板配置,管理员可能为每一个ISAKMP分别创建一个客户端模板。下面是半隧道和全加密拓扑的启动器文件:

[main]
Description= New_School_ST
Host=63.240.22.2
AuthType=1
GroupName=split-tunnel
GroupPwd=secretkey
TunnelingMode=1
TcpTunnelingPort=10000

[main]
Description=New_School_FC
Host=63.240.22.2
AuthType=1
GroupName=full-crypto
GroupPwd=secretkey
TunnelingMode=1
TcpTunnelingPort=443

这就完成了软件客户端VPN配置。

作者

Michael J. Martin
Michael J. Martin

Michael J. Martin作为网络和Unix信息管理员已经在信息技术领域工作了17多年。他早期在研究和ISP方面进行的设计、实现和支持MIS基础架构的经历,为他当前在大型因特网和安全架构的工作上提供了独特的视角。作为一个网络架构师,他已经为多家公司设计过高速、高可用的LAN/WAN网络,如ANS/AOL、Philips和Edgix Corporation等,它也给许多业务和区域ISP提供网络顾问服务。Michael也撰写了很多关于网络和安全问题的文章。

翻译

曾少宁
曾少宁

TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。

相关推荐