随着网络的飞速发展,仅仅保证网络通信已经不能满足企业需求,高效,安全的需求也随之而来。随着这些需求越来越高,从而产生了×××(虚拟专用网络)技术。
根据需求×××技术分为两类
1. 站点到站点的×××
站点到站点的×××用来实现两个私有网络的通信,逻辑上将两个私有网络构成一个局域网,以私有地址互相访问。这种模式通常应用于企业的总部和分部。
2. 远程访问×××
远程访问×××用于针对一些长期出差的人员,也需要访问企业内部资源,同时需要保证安全,这时候使用远程访问×××技术让员工通过虚拟专用网络访问内部网络资源。
可想而知,×××技术实现了在Internet上搭建虚拟专用网络,通过加密的方式,实现逻辑上隔离,从而实现安全的传输。
本章讨论的IPSec ×××,属于站点到站点的×××。建立这种×××连接,需要3个步骤。
1 流量触发
×××网关之间传输流量,会触发×××建立连接,当没有流量的时候是不会闲置的。
2 建立管理链接
这是一个协商的过程,两台×××网关直接协商使用何种加密算法,如何实现身份验证等等。
3 建立数据连接
下面,我们通过具体案例来说明×××实现的过程。
拓扑:
我们使用RA模拟上海总公司,RB模拟ISP,RC和RD分别模拟两个分公司,并且每个分公司连接一台PC测试。
需求:
不能通过路由实现网络连通,那么只在路由器上配置默认路由指向ISP路由器即可,而ISP路由器上只配置IP地址,所以默认3台PC是不能通信的,当总公司RA和RD,RC分别建立×××之后,RA的PC就可以跟其他两台PC通信了。
IP地址规划
PC1 IP 192.168.1.10 网关 192.168.1.1
PC2 IP 192.168.2.10 网关 192.168.2.1
PC3 IP 192.168.3.10 网关 192.168.3.1
RA F0/1 192.168.1.1 F0/0 200.1.1.1
RB F0/1 200.1.1.2 F0/0 201.1.1.1 F0/2 202.1.1.1
RC F0/1 201.1.1.2 F0/0 192.168.2.1
RD F0/0 202.1.1.2 F0/1 192.168.3.1
具体配置过程:
虚拟PC,IP配置
RA IP地址配置
RB IP地址配置
RC IP配置
RD IP配置
因为做了默认路由,路由器直接应该是互相可以通信的。(×××网关必须能通信才能实现)
RA的×××配置
上图是第一阶段管理连接的配置,下面我们一条一条看这些具体设置的是什么。
RA(config)#crypto isakmp policy 1 建立管理连接策略
RA(config-isakmp)#encryption aes 用于身份验证采用的加密算法
RA(config-isakmp)#hash md5 验证过程中采用HMAC功能
RA(config-isakmp)#authentication pre-share 设备身份验证方式的选定
RA(config-isakmp)#group 1 DH组
RA(config-isakmp)#lifetime 86400 生存周期
RA(config-isakmp)#exit
RA(config)#crypto isakmp key 0 cicso address 201.1.1.2 255.255.255.0
RA(config)#crypto isakmp key 0 cicso address 202.1.1.2 255.255.255.0 配置预共享密钥,因为要连接两个分公司,所以需要创立两个。
同样来一一解释一下命令的含义
RA(config)#$ 101 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 创建访问控制列表 配置允许哪些网络属于这个×××
RA(config)#$ 102 permit ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255
RA(config)#crypto ipsec transform-set tr esp-des ah-md5-hmac 配置相匹配的传输集
RA(cfg-crypto-trans)#mode tunnel 配置为隧道模式的×××
RA(cfg-crypto-trans)#exit
RA(config)#crypto map map 1 ipsec-isakmp 配置地图(用来对应不同的×××,不同的peer上对应不同的ACL)
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
RA(config-crypto-map)#match address 101 套用ACL 101
RA(config-crypto-map)#set peer 201.1.1.2 对应peer 201.1.1.2
RA(config-crypto-map)#set transform-set tr 所使用的传输集
RA(config-crypto-map)#exit
RA(config)#crypto map map 2 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
RA(config-crypto-map)#match address 102
RA(config-crypto-map)#set peer 202.1.1.2
RA(config-crypto-map)#set transform-set tr
RA(config-crypto-map)#exit
RA(config-if)#crypto map map 最后在接口应用。
接下来所做的配置如RA一样,在RC,RD上配置与RA配置相对应的配置。(加密方式以及预共享密钥需要相同)
配置完成之后进行测试,PC2和PC3可以与PC1进行通信了。
×××(二) NAT豁免与NAT-T在IPSec ×××(一)中,我们介绍了使用路由器搭建站点到站点的IPsec ×××,×××是建立起来了,但要实现企业内部完整的需求还是不够的,其中还有一些问题的存在。
1. 当PAT与×××在一台设备上
通常,我们使用PAT完成企业内部共享上网,使用×××实现虚拟专用网络,那么在它们同时使用的时候,会出现什么情况呢。在NAT时,我们会定义访问控制列表。
Access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 (×××)
Access-list 102 permit ip any any (NAT)
这里两个控制列表产生了交集,在应用的时候,×××工作就会不正常,需要配置NAT豁免来解决这一问题。(NAT豁免是解决冲突的理念,而不是技术)
Access-list 101 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
Access-list 101 permit ip any any (NAT)
通过这两条访问控制列表,使走×××的地址不走NAT路线,完成豁免。
2. 当PAT和×××不在一台设备上。
当不在一台设备上时,需要使用nat穿越技术来实现,这也是本章具体要讨论的问题。
拓扑:
如图,中间的路由器为NAT,左边为×××服务器,这里使用ASA防火墙来代替,也顺便学习如何在ASA上配置×××,RA为ASA的peer。同样使用PC1,PC2来做最后的验证。
IP分布:
PC1 IP 192.168.1.10 网关 192.168.1.1
PC2 IP 192.168.2.10 网关 192.168.2.1
ASA F1/0 192.168.1.1 F0/0 200.1.1.1
NAT F1/0 200.1.1.2 F0/0 201.1.1.1
RA F1/0 201.1.1.2 F0/0 192.168.2.1
配置过程
ASA IP地址配置
ASA配置一条默认路由,保证通信
ASA配置×××具体过程,步骤的含义和在路由器上大同小异,这里不多做介绍了
数据连接的配置
NAT服务器的配置
请注意下图最后两条命令,从overload可以看出这是做了PAT共享上网,而下面两条static nat是用于对×××服务器的发布,通过了静态NAT的模式,实现了NAT-T (NAT穿越)的功能。
路由器RA ×××的配置。
VPC的配置。
将上述配置完成之后,可以发现,从PC1既可以通过×××访问PC2,也可以通过NAT访问201.1.1.2 外部地址。
×××(三)基于ASA实现easy *** (软件client端)在前两节的内容中,我们一直在介绍站点到站点之间的×××,这种一般使用在总公司与分公司之间,而×××还包括远程访问×××,这种×××一般针对移动用户来实现的。移动用户只需要连接到internet,就可以通过连接×××服务器接入企业内部网络。这里的×××服务器也可以实现上章提到的×××豁免,这里面称为分离隧道。
拓扑如下:
具体配置如下:
我们使用ASA防火墙来实现此功能,这里是IP地址的配置。
配置认证口令,以及管理连接。
配置地址池和分离隧道
定义policy,在其中启用分离隧道。
建立隧道组
建立传输集和动态地图,并在端口上应用。
然后在外网用户上安装 cisco *** client 软件,进行连接。打开工具,选择new选项卡。
输入host,***服务器的地址,和定义的***隧道组名和预共享密钥。
保存之后选择连接。
连接过程中需要我们输入口令,这里配置的是cisco,输入完之后进行测试。
PC2可以和内网通信了。
×××(四)easy *** 硬件客户端有的时候我们在使用远程访问×××的时候,不一定针对移动用户,如小型的分公司也需要访问企业内部资源的时候,则需要进行搭建远程访问×××来保证安全,但是如果每台计算机上都安装软件对于员工难度较大,并且十分麻烦,那么我们会在这些计算机的前端路由器上安装硬件客户端来实现。所以硬件客户端与软件的区别就是在客户端的前端路由器上配置,对PC是完全透明的,可以直接选择进行×××的访问。
以下是拓扑:
服务器端的配置如上一章节软件客户端的配置一样,只不过这里使用的是路由器而不是ASA,就不多做介绍了。
以上的内容在上一章节都提到了,这里就不多做介绍,而下面则是硬件客户端的配置。
在硬件客户端也只需要我们简单配置,指定peer,预共享密钥等信息,完成之后×××连接还没有正式搭建起来,记得软件客户端中需要输入帐户密码之后才能建立么,在这里也是一样的,输入crypto ipsec client ez*** xauth之后,输入username 和 Password才能正式连接,并且每次连接都需要重新输入。
建立成功之后我们配上虚拟PC的IP地址进行测试。
上图已经显示测试成功,但是如果每次连接都需要在路由器上进行设置是很复杂麻烦的,那么我们可以在×××服务器上设置保存连接,如下命令,当这样设置之后,当***_group这个组进行连接的时候就会保存username 和password 再次连接则可以直接进行了。
以上内容为远程访问×××的硬件客户端模式。
×××(五)SSL远程访问×××Easy ×××已经可以实现移动用户和小型分公司的问题了,但是如果企业内部的销售人员去别的公司做解说,那么一般是不会麻烦的去在对方计算机上安全软件的,那么SSL远程访问×××就会解决这一问题,直接通过打开web的方式,直接进行×××连接。
实验拓扑如下:
首先进行IP地址的配置。
如果easy ***,需要首先创建username 和password 进行最后的身份验证。设置之后还需要确定SVC软件的位置,SVC就是SSL客户端软件。
同样需要建立隧道分离和地址池,避免和NAT冲突。
定义组策略。
建立隧道组。
与easy ***最不相同的是SSL的客户端了,打开IE浏览器,访问×××服务器的外网IP地址,并且输入username和password。
进入界面之后点击start anyconnect 安全客户端(这里的配置是胖客户端配置,胖客户端可以支持很多类型的连接,而其他客户端功能比较欠缺。)
当安装完成之后,右下角会有一个小钥匙,表示已经连接成功。
测试。
以上内容是SSL远程访问×××的配置。
为了大家更好的学习和实验,将各种配置文件附在下面进行参考。
Easy *** 基于 ASAusername cisco password cisco
crypto isakmp enable outside
crypto isakmp policy 10
encryption aes
hash sha
authentication pre-share
group 2
exit
ip local pool ***_pool 192.168.10.1-192.168.10.200
access-list split_tunnel permit ip 192.168.1.0 255.255.255.0 any
group-policy ***_group_policy internal
group-policy ***_group_policy attributes
split-tunnel-policy tunnelspecified
split-tunnel-network-list value split_tunnel
exit
tunnel-group ***_group type ipsec-ra
tunnel-group ***_group general-attributes
address-pool ***_pool
default-group-policy ***_group_policy
exit
tunnel-group ***_group ipsec-attributes
pre-shared-key groupkey
exit
crypto ipsec transform-set ***_transform esp-aes esp-sha-hmac
crypto dynamic-map ***_dymap 10 set transform-set ***_transform
crypto map mymap 1000 ipsec-isakmp dynamic ***_dymap
crypto map mymap int outside
easy ***基于路由器aaa new-model
aaa authentication login ***_authen local
aaa authorization network ***_author local
username cisco password cisco
crypto isakmp policy 10
encryption aes 128
hash sha
authentication pre-share
group 2
exit
ip local pool ***_pool 192.168.10.1 192.168.10.200
access-list 101 permit ip 192.168.1.0 0.0.0.255 any
crypto isakmp client configuration group ***_group
key groupkey
pool ***_pool
acl 101
exit
crypto ipsec transform-set ***_transform esp-aes esp-sha-hmac
exit
crypto dynamic-map ***_dymap 10
set transform-set ***_transform
exit
crypto map mymap client authentication list ***_authen
crypto map mymap isakmp authorization list ***_author
crypto map mymap client configuration address respond
crypto map mymap 1000 ipsec-isakmp dynamic ***_dymap
int f0/0
crypto map mymap
exit
ip route 0.0.0.0 0.0.0.0 200.1.1.2
easy *** 硬件客户端配置crypto ipsec client ez*** myeasy***
connect auto
group ***_group key groupkey
mode network-extension
peer 20.1.1.1
username cisco password cisco
exit
int f0/0
crypto ipsec client ez*** myeasy*** inside
int f1/0
crypto ipsec client ez*** myeasy*** outside
exit
exit
crypto ipsec client ez*** xauth
//在服务器端做如下配置,允许硬件客户端存储XAUTH认证信息,就不必每次提供XAUTH认证
crypto isakmp client configuration group ***_group
save-password
exit
SSL 远程访问×××在ASA上的配置username cisco password cisco
web***
enable outside
svc p_w_picpath disk0:/sslclient-win-1.1.3.173.pkg
svc enable
exit
ip local pool ***_pool 192.168.10.1-192.168.10.200
access-list split_tunnel permit ip 192.168.1.0 255.255.255.0 any
group-policy ***_group_policy internal
group-policy ***_group_policy attributes
***-tunnel-protocol web*** svc
split-tunnel-policy tunnelspecified
split-tunnel-network-list value split_tunnel
web***
svc ask enable
exit
exit
tunnel-group ***_group type web***
tunnel-group ***_group general-attributes
address-pool ***_pool
default-group-policy ***_group_policy
exit
tunnel-group ***_group web***-attributes
group-alias groups enable
exit
web***
tunnel-group-list enable
exit