小生博客:http://xsboke.blog.51cto.com
小生 Q Q:1770058260
-------谢谢您的参考,如有疑问,欢迎交流
一、 EASY-VPN简介
Ipsecvpn实现站点到站点的VPN
Easyvpn实现远程VPN
1. Easy-vpn面临的问题
1)因为整个ipsec VPN加密传输的根本就是事先配置在设备上的预共享秘钥,一旦秘钥外泄,整个ipsec VPN所作的努力全都会付之东流
2)建立L2L IPSEC VPN时,双方都有固定的ip地址,这样我们才有可能在配置crypto map的时候指定对方的peer,才有可能配置crypto ACL来定义哪些流量将触发链接的建立。但是对于远程访问VPN而言,客户端一侧的ip是不可能固定的
3)通过建立动态crypto map,映射到静态crypto map上的方法实现将xauth和组策略绑定到端口上,因为端口是不允许绑定动态crypto map的。
2. XAUTH
1)Xauth(扩展认证),Ipsec协议最初的设计并未考虑用户验证的问题,所以IETF引入了一个RFC的草案—XAUTH2)Xauth提供用户名和密码的方式来验证用户身份,用于解决easy-vpn密钥外泄的问题。
3)既然存在用户验证自然就会涉及用户名和密码的存储方式,通常情况下有两种方式:
l存储在VPN网关设备的内部数据库中。
l存储在第三方设备上,如一台AAA服务器
AAA服务器主要使用RADIUS(remote authentication dial in user server,远程验证拨入用户服务)协议和TACACS+(terminal access controller access control system,终端访问控制器访问控制系统)协议Radius是通用协议,协议类型为UDP。Tacacs+是思科独有的协议,只有思科的设备才能使用,但是协议类型是TCP相对radius安全很多
3. 组策略
1)因为客户端的IP是不固定的,所以在配置crypto的时候无法指定peer,这时我们可以让VPN网关去推送这些策略给客户端。
2)策略主要包括:
l 地址池:分配客户端地址
l DNS和网关:和DHCP一样,分配给客户端网关IP和DNS
l 共享密钥:分配密钥给客户端
l 分离隧道:实现客户端在连接VPN的同时可以访问internet
l 分离DNS:实现客户端访问内网的网站使用内网的DNS,访问外网的网站,使用运营商的DNS
二、实例(路由器)
R1的VPN配置
R1(config)#intf 0/1
R1(config-if)#ipadd 192.168.1.1 255.255.255.0
R1(config-if)#nosh
R1(config-if)#exit
R1(config)#intf 0/0
R1(config-if)#ipadd 202.2.2.1 255.255.255.0
R1(config-if)#nosh
R1(config-if)#exit
R1(config)#iproute 0.0.0.0 0.0.0.0 202.2.2.2
首先配置xauth
R1(config)#aaa new-model
开启AAA
R1(config)#aaa authentication login benet-authen local
配置VPN客户端认证方式,local为本地认证,也就是在路由器上手动配置账户
R1(config)#aaa authorization network benet-author local
为远程访问VPN客户端进行授权
R1(config)#username benet secret 123
为客户端创建账户
R1(config)#cryptoisakmp policy 10
R1(config-isakmp)#encryption3des
R1(config-isakmp)#hashsha
R1(config-isakmp)#authenticationpre-share
R1(config-isakmp)#group2
配置isakmp策略
R1(config-isakmp)#exit
定义组策略
R1(config)#ip local pool benet-pool 172.16.0.1 172.16.0.10
创建地址池
R1(config)#ip access-list extended split-acl
R1(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 any
配置隧道分离需要的ACL
R1(config-ext-nacl)#exit
R1(config)#cryptoisakmp client configuration group benet-group
R1(config-isakmp-group)#keybenet-key 预共享密钥
R1(config-isakmp-group)#poolbenet-pool 应用之前配置的地址池
R1(config-isakmp-group)#dns202.16.41.51 指定DNS
R1(config-isakmp-group)#aclsplit-acl 调用隧道分离
R1(config-isakmp-group)#split-dnsbenet.com 分离DNS
配置用户组及其密钥,并且关联地址池等
R1(config-isakmp-group)#exit
R1(config)#crypto ipsec transform-set benet-set esp-3desesp-sha-hmac
R1(cfg-crypto-trans)#exit
配置传输集
创建动态crypto和静态crypto并关联
R1(config)#crypto dynamic-map benet-dymap 1
R1(config-crypto-map)#set transform-set benet-set
创建动态crypto并且关联传输集
R1(config)#cryptomap benet-stamap 1000 ipsec-isakmp dynamic benet-dymap
配置静态crypto关联动态crypto
R1(config)#cryptomap benet-stamap client authentication list benet-authen
配置静态crypto关联指定授权方式
R1(config)#cryptomap benet-stamap isakmp authorization list benet-author
配置静态crypto授权客户端使用IPsecVPN隧道
R1(config)#cryptomap benet-stamap client configuration address respond
让客户端首先发起连接
R1(config)#intf 0/0
R1(config-if)#cryptomap benet-stamap
将静态map应用到接口
R1(config-if)#end
*Mar 1 00:08:34.355: %CRYPTO-6-ISAKMP_ON_OFF:ISAKMP is ONr
R1#wr
Buildingconfiguration...
[OK]
然后在客户端安装vpnclient去测试
三、 Asa配置实例
R1的配置
ASA防火墙的VPN配置
ciscoasa#conf t
ciscoasa(config)#int e 0/0
ciscoasa(config-if)#nameif inside
ciscoasa(config-if)#security-level 100
ciscoasa(config-if)#ip add 192.168.1.1 255.255.255.0
ciscoasa(config-if)#no sh
ciscoasa(config-if)#exit
ciscoasa(config)#int e 0/1
ciscoasa(config-if)#nameif outside
ciscoasa(config-if)#security-level 0
ciscoasa(config-if)#ip add 202.1.1.1 255.255.255.0
ciscoasa(config-if)#no sh
ciscoasa(config-if)#exit
ciscoasa(config)#route outside 0.0.0.0 0.0.0.0 202.1.1.2
首先配置isakmp第一阶段的传输集
ciscoasa(config)# username benet password 123
创建认证用户
ciscoasa(config)# crypto isakmp enable outside
启用asa的crypto功能
ciscoasa(config)#crypto isakmp policy 10
ciscoasa(config-isakmp-policy)#encryption 3des
ciscoasa(config-isakmp-policy)#hash sha
ciscoasa(config-isakmp-policy)#authentication pre-share
ciscoasa(config-isakmp-policy)#group 2
配置isakmp第一阶段的传输集
ciscoasa(config-isakmp-policy)#exit
定义组策略,阶段1.5
ciscoasa(config)# ip local pool benet-pool172.16.0.1-172.16.0.10
定义分配给客户端的地址池
ciscoasa(config)# access-list split-acl permit ip 192.168.1.0255.255.255.0 any
隧道分离实现访问VPN的同时,可以连接internet
ciscoasa(config)# group-policy test-group internal
Internal表示策略定义在本地,external表示策略定义在第三方服务器上(一般是AAA服务器上)。
ciscoasa(config)# group-policy test-group attributes
进入定义组策略的子命令行
ciscoasa(config-group-policy)# split-tunnel-policytunnelspecified
Tunnelall:所有流量必须走隧道,即不做分离隧道,这是默认设置。
Tunnelspcified:所有匹配acl的流量走隧道。
Excludespecified:所有不匹配ACL的流量走隧道。
ciscoasa(config-group-policy)# split-tunnel-network-listvalue split-acl
关联隧道分离
ciscoasa(config-group-policy)#exit
ciscoasa(config)#tunnel-group benet-group type ipsec-ra
ciscoasa(config)#tunnel-group benet-group general-attributes
ciscoasa(config-tunnel-general)#address-pool benet-pool
ciscoasa(config-tunnel-general)#default-group-policy test-group
ciscoasa(config-tunnel-general)#exit
定义隧道组,将组策略关联,这里和路由器稍有区别
ciscoasa(config)# tunnel-group benet-group ipsec-attributes
ciscoasa(config-tunnel-ipsec)# pre-shared-key benet-key
ciscoasa(config-tunnel-ipsec)# exit
定义隧道组的共享密钥
isakmp第二阶段
ciscoasa(config)# crypto ipsec transform-set benet-setesp-3des esp-sha-hmac
设置传输集指定加密算法和身份验证算法
ciscoasa(config)# crypto dynamic-map benet-dymap 1 settransform-set benet-set
创建动态map并且关联ipsec
ciscoasa(config)# crypto map benet-stamap 1000 ipsec-isakmpdynamic benet-dymap
创建静态map并且映射动态map
ciscoasa(config)# crypto map benet-stamap interface outside
将静态map映射到接口
ciscoasa(config)#end
ciscoasa#wr
Buildingconfiguration...
最后验证方式和路由器一样