copy tftp: flash:/webvpn/
Address or name of remote host []? 192.168.100.100
Source filename []? anyconnect-win-3.1.08009-k9.pkg
Destination filename [/webvpn/anyconnect-win-3.1.08009-k9.pkg]?
Accessing tftp://192.168.100.100/anyconnect-win-3.1.08009-k9.pkg...
Loading anyconnect-win-3.1.08009-k9.pkg from 192.168.100.100 (via GigabitEthernet0): !!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[OK - 37997096 bytes]
37997096 bytes copied in 117.644 secs (322984 bytes/sec)
将AnyConnect映像复制到路由器的闪存后,必须通过命令行进行安装。如果在安装命令结束时指定了序列号,则可以安装多个AnyConnect软件包。这样,路由器就可以充当多个客户端操作系统的前端。在安装AnyConnect软件包时,如果最初没有将其复制到flash:/webvpn/ directory,它也会将其移动到。
crypto vpn anyconnect flash:/webvpn/anyconnect-win-3.1.08009-k9.pkg sequence 1 SSLVPN Package SSL-VPN-Client (seq:1): installed successfully
在15.2(1)T之前发布的代码版本中,安装PKG的命令略有不同。
webvpn install svc flash:/webvpn/anyconnect-win-3.1.08009-k9.pkg sequence 1
第三步:生成RSA密钥对和自签名证书
当您配置SSL或实施公钥基础设施(PKI)和数字证书的任何功能时,证书签名需要Rivest-Shamir-Adleman (RSA)密钥对。此命令生成RSA密钥对,然后生成自签名PKI证书时使用该密钥对。使用2048位的模数是不必要的,但建议使用最大模数来增强安全性并与AnyConnect客户端计算机兼容。还建议使用通过密钥管理分配的描述性密钥标签。使用show crypto key mypubkey rsa 命令可确认密钥生成。
注意:由于RSA密钥可导出存在许多安全风险,因此建议的做法是确保密钥配置为不可导出(这是默认设置)。本文档讨论了将RSA密钥导出时所涉及的风险:在PKI内部署RSA密钥。
crypto key generate rsa label SSLVPN_KEYPAIR modulus 2048
The name for the keys will be: SSLVPN_KEYPAIR
% The key modulus size is 2048 bits
% Generating 2048 bit RSA keys, keys will be non-exportable...
[OK] (elapsed time was 3 seconds)
show crypto key mypubkey rsa SSLVPN_KEYPAIR
% Key pair was generated at: 14:01:34 EDT May 21 2015
Key name: SSLVPN_KEYPAIR
Key type: RSA KEYS
Storage Device: not specified
Usage: General Purpose Key
Key is not exportable.
Key Data:
30820122 300D0609 2A864886 F70D0101 01050003 82010F00 3082010A 02820101
00C4C7D6 F9533CD3 A5489D5A 4DC3BAE7 6831E832 7326E322 CBECC41C 8395A5F7
4613AF70 827F581E 57F72074 FD803EEA 693EBACC 0EE5CA65 5D1875C2 2F19A432
84188F61 4E282EC3 D30AE4C9 1F2766EF 48269FE2 0C1AECAA 81511386 1BA6709C
7C5A2A40 2FBB3035 04E3770B 01155368 C4A5B488 D38F425C 23E430ED 80A8E2BD
E713860E F654695B C1780ED6 398096BC 55D410DB ECC0E2D9 2621E1AB A418986D
39F241FE 798EF862 9D5EAEEB 5B06D73B E769F613 0FCE2585 E5E6DFF3 2E48D007
3443AD87 0E66C2B1 4E0CB6E9 81569DF2 DB0FE9F1 1A9E737F 617DC68B 42B78A8B
952CD997 78B96CE6 CB623328 C2C5FFD6 18C5DA2C 2EAFA936 5C866DE8 5184D2D3
6D020301 0001
成功生成RSA密钥对后,必须使用此路由器信息和RSA密钥对配置PKI信任点。Subject-Name中的公用名(CN)可以使用用户用于连接AnyConnect网关的IP地址或完全限定域名(FQDN)进行配置。在本示例中,客户端在尝试连接时使用 fdenofa-SSLVPN.cisco.com 的FQDN。虽然这不是必需的,但当您正确输入CN时,它有助于减少登录时提示的证书错误数量。
注意:可以使用第三方CA颁发的证书,而不是使用路由器生成的自签名证书。这可以通过几种不同的方法完成,如本文档配置PKI的证书注册中所述。
crypto pki trustpoint SSLVPN_CERT enrollment selfsigned subject-name CN=fdenofa-SSLVPN.cisco.com rsakeypair SSLVPN_KEYPAIR
在正确定义信任点后,路由器必须使用crypto pki enroll 命令生成证书。通过此过程,可以指定一些其他参数,如序列号和IP地址;但是,这不是必需的。使用show crypto pki certificates 命令可确认证书生成。
crypto pki enroll SSLVPN_CERT % Include the router serial number in the subject name? [yes/no]: no % Include an IP address in the subject name? [no]: no Generate Self Signed Router Certificate? [yes/no]: yes Router Self Signed Certificate successfully created show crypto pki certificates SSLVPN_CERT Router Self-Signed Certificate Status: Available Certificate Serial Number (hex): 01 Certificate Usage: General Purpose Issuer: hostname=fdenofa-892.fdenofa.lab cn=fdenofa-SSLVPN.cisco.com Subject: Name: fdenofa-892.fdenofa.lab hostname=fdenofa-892.fdenofa.lab cn=fdenofa-SSLVPN.cisco.com Validity Date: start date: 18:54:04 EDT Mar 30 2015 end date: 20:00:00 EDT Dec 31 2019 Associated Trustpoints: SSLVPN_CERT
第四步:配置本地VPN用户帐户
虽然可以使用外部身份验证、授权和记帐(AAA)服务器;在本例中,使用本地身份验证。这些命令将创建用户名VPNUSER,并创建名为SSLVPN_AAA的AAA身份验证列表。
aaa new-model aaa authentication login SSLVPN_AAA local username VPNUSER password TACO
第五步:定义供客户端使用的地址池和拆分隧道访问列表
必须创建本地IP地址池,AnyConnect客户端适配器才能获取IP地址。确保配置足够大的池以支持最大数量的并发AnyConnect客户端连接。
默认情况下,AnyConnect在全隧道模式下运行,这意味着客户端计算机生成的任何流量都会通过隧道发送。由于这通常是不理想的,因此可以配置定义流量的访问控制列表(ACL),该流量可以或不能通过隧道发送。与其他ACL实现一样,末尾的隐式deny不需要显式deny;因此,只需为可以隧道传输的流量配置permit语句。
ip local pool SSLVPN_POOL 192.168.10.1 192.168.10.10 access-list 1 permit 192.168.0.0 0.0.255.255
第六步:配置虚拟模板接口(VTI)
动态VTI为每个VPN会话提供按需独立虚拟访问接口,允许远程访问VPN实现高度安全且可扩展的连接。DVTI技术取代了动态加密映射和帮助建立隧道的动态中心辐射型方法。由于DVTI的功能与任何其他实际接口类似,因此它们允许更复杂的远程访问部署,因为它们支持隧道一旦激活时的QoS、防火墙、每用户属性和其他安全服务。
interface Loopback0 ip address 172.16.1.1 255.255.255.255
!
interface Virtual-Template 1 ip unnumbered Loopback0
步骤 7.配置WebVPN网关
WebVPN网关是定义AnyConnect头端使用的IP地址和端口,以及提供给客户端的SSL加密算法和PKI证书的来源。默认情况下,网关支持所有可能的加密算法,具体取决于路由器上的Cisco IOS版本。
webvpn gateway SSLVPN_GATEWAY ip address 10.165.201.1 port 443 http-redirect port 80 ssl trustpoint SSLVPN_CERT inservice
步骤 8配置WebVPN上下文和组策略
WebVPN情景和组策略定义用于AnyConnect客户端连接的一些其他参数。对于基本AnyConnect配置,情景仅用作一种机制,用于调用用于AnyConnect的默认组策略。但是,上下文可用于进一步自定义WebVPN启动页和WebVPN操作。在定义的策略组中,SSLVPN_AAA列表配置为用户所属的AAA身份验证列表。functions svc-enabled 命令是允许用户通过浏览器连接AnyConnect SSL VPN客户端(而不仅是WebVPN)的配置片段。最后,其他SVC命令定义仅与SVC连接相关的参数:svc address-pool 告知网关将SSLVPN_POOL中的地址分发给客户端,根据上面定义的ACL 1定svc split include 义拆分隧道策略,以及svc dns-server定义用于域名解析的DNS服务器。使用此配置,所有DNS查询都将发送到指定的DNS服务器。查询响应中接收的地址指示是否通过隧道发送流量。
webvpn context SSLVPN_CONTEXT
virtual-template 1
aaa authentication list SSLVPN_AAA
gateway SSLVPN_GATEWAY inservice
policy group SSLVPN_POLICY functions svc-enabled svc address-pool "SSLVPN_POOL" netmask 255.255.255.0 svc split include acl 1 svc dns-server primary 8.8.8.8
default-group-policy SSLVPN_POLICY
步骤 9配置客户端配置文件(可选)
与ASA不同,Cisco IOS没有内置GUI界面,无法帮助管理员创建客户端配置文件。AnyConnect客户端配置文件需要使用独立配置文件编辑器单独创建/编辑。
提示:查找anyconnect-profileeditor-win-3.1.03103-k9.exe。
要让路由器部署配置文件,请执行以下步骤:
- 使用ftp/tftp将其上传到IOS闪存。
- 使用此命令识别刚刚上传的配置文件:
crypto vpn annyconnect profile SSLVPN_PROFILE flash:test-profile.xml
提示:在早于15.2(1)T的Cisco IOS版本中,需要使用此命令:webvpn import svc profile <profile_name> flash:<profile.xml>。
在情景下,使用此命令将配置文件链接到该情景:
webvpn context
SSLVPN_CONTEXT
policy group
SSLVPN_POLICY
svc profile
SSLVPN_PROFILE
注意:请使用命令查找工具获取有关此部分使用的命令的详细信息。
验证
使用本部分可确认配置能否正常运行。
配置完成后,当通过浏览器访问网关地址和端口时,它将返回到WebVPN启动页:
登录后,将显示WebVPN主页。从此处单击Tunnel Connection (AnyConnect)。 使用Internet Explorer时,ActiveX用于向下推送和安装AnyConnect客户端。如果未检测到,则改为使用Java。所有其他浏览器立即使用Java。
安装完成后,AnyConnect会自动尝试连接到WebVPN网关。由于自签名证书用于网关标识自身,因此在尝试连接期间会出现多个证书警告。这些应为预期值,必须接受它们才能继续连接。为了避免这些证书警告,提供的自签名证书必须安装在客户端计算机的受信任证书库中,或者如果使用第三方证书,则证书颁发机构证书必须位于受信任的证书库中。
当连接完成协商时,点击AnyConnect左下角的gear 图标,将显示有关连接的一些高级信息。在此页上,可以查看从组策略配置中的拆分隧道ACL获得的一些连接统计信息和路由详细信息。
以下是配置步骤的最终运行配置结果:
crypto pki trustpoint SSLVPN_TP_SELFSIGNED enrollment selfsigned serial-number subject-name cn=892_SELF_SIGNED_CERT revocation-check none rsakeypair SELF_SIGNED_RSA ! crypto vpn anyconnect flash:/webvpn/anyconnect-win-3.1.08009-k9.pkg sequence 1
crypto vpn anyconnect profile SSLVPN_PROFILE flash:test-profile.xml ! access-list 1 permit 192.168.0.0 0.0.255.255 ! ip local pool SSLVPN_POOL 192.168.10.1 192.168.10.10 ! webvpn gateway SSLVPN_GATEWAY ip address 10.165.201.1 port 443 ssl trustpoint SSLVPN_TP_SELFSIGNED inservice ! webvpn context SSLVPN_CONTEXT virtual-template 1
aaa authentication list SSLVPN_AAA
gateway SSLVPN_GATEWAY
! ssl authenticate verify all inservice ! policy group SSLVPN_POLICY functions svc-enabled svc address-pool "SSLVPN_POOL" netmask 255.255.255.0 svc split include acl 1 svc dns-server primary 8.8.8.8
svc profile SSLVPN_PROFILE default-group-policy SSLVPN_POLICY
故障排除
本部分提供了可用于对配置进行故障排除的信息。
当您排除AnyConnect连接故障时,可以检查一些常见组件:
- 由于客户端必须提供证书,因此WebVPN网关中指定的证书必须有效。发出
show crypto pki certificate命令将显示与路由器上所有证书相关的信息。
- 每当更改WebVPN配置时,最佳做法是在网关和上下文中都发出
no inservice 和 inservice 。这可确保更改正确生效。
- 如前所述,连接到此网关的每个客户端操作系统都需要一个AnyConnect PKG。例如,Windows客户端需要Windows PKG,Linux 32位客户端需要Linux 32位PKG,等等。
- 如果将AnyConnect客户端和基于浏览器的WebVPN都视为使用SSL,则访问WebVPN启动页通常表示AnyConnect能够连接(假设相关AnyConnect配置正确)。
Cisco IOS提供可用于排除连接故障的各种调试WebVPN选项。以下是debug WebVPN aaa、debug WeVPN tunnel和show WebVPN session upon a successful connection attempt生成的输出:
fdenofa-892#show debugging WebVPN Subsystem: WebVPN AAA debugging is on WebVPN tunnel debugging is on WebVPN Tunnel Events debugging is on WebVPN Tunnel Errors debugging is on *May 26 20:11:06.381: WV-AAA: Nas Port ID set to 192.168.157.2. *May 26 20:11:06.381: WV-AAA: AAA authentication request sent for user: "VPNUSER"AAA returned status: 2 for session 37 *May 26 20:11:06.381: WV-AAA: AAA Authentication Passed! *May 26 20:11:06.381: WV-AAA: User "VPNUSER" has logged in from "192.168.157.2" to gateway "SSLVPN_GATEWAY" context "SSLVPN_CONTEXT" *May 26 20:11:12.265: *May 26 20:11:12.265: *May 26 20:11:12.265: [WV-TUNL-EVT]:[8A3AE410] CSTP Version recd , using 1 *May 26 20:11:12.265: [WV-TUNL-EVT]:[8A3AE410] Allocating IP 192.168.10.9 from address-pool SSLVPN_POOL *May 26 20:11:12.265: [WV-TUNL-EVT]:[8A3AE410] Using new allocated IP 192.168.10.9 255.255.255.0 *May 26 20:11:12.265: Inserting static route: 192.168.10.9 255.255.255.255 Virtual-Access2 to routing table *May 26 20:11:12.265: [WV-TUNL-EVT]:[8A3AE410] Full Tunnel CONNECT request processed, HTTP reply created *May 26 20:11:12.265: HTTP/1.1 200 OK *May 26 20:11:12.265: Server: Cisco IOS SSLVPN *May 26 20:11:12.265: X-CSTP-Version: 1 *May 26 20:11:12.265: X-CSTP-Address: 192.168.10.9 *May 26 20:11:12.269: X-CSTP-Netmask: 255.255.255.0 *May 26 20:11:12.269: X-CSTP-Keep: false *May 26 20:11:12.269: X-CSTP-DNS: 8.8.8.8 *May 26 20:11:12.269: X-CSTP-Lease-Duration: 43200 *May 26 20:11:12.269: X-CSTP-MTU: 1280 *May 26 20:11:12.269: X-CSTP-Split-Include: 192.168.0.0/255.255.0.0 *May 26 20:11:12.269: X-CSTP-DPD: 300 *May 26 20:11:12.269: X-CSTP-Disconnected-Timeout: 2100 *May 26 20:11:12.269: X-CSTP-Idle-Timeout: 2100 *May 26 20:11:12.269: X-CSTP-Session-Timeout: 0 *May 26 20:11:12.269: X-CSTP-Keepalive: 30 *May 26 20:11:12.269: X-DTLS-Session-ID: 85939A3FE33ABAE5F02F8594D56DEDE389F6FB3C9EEC4D211EB71C0820DF8DC8 *May 26 20:11:12.269: X-DTLS-Port: 443 *May 26 20:11:12.269: X-DTLS-Header-Pad-Length: 3 *May 26 20:11:12.269: X-DTLS-CipherSuite: AES256-SHA *May 26 20:11:12.269: X-DTLS-DPD: 300 *May 26 20:11:12.269: X-DTLS-KeepAlive: 30 *May 26 20:11:12.269: *May 26 20:11:12.269: *May 26 20:11:12.269: *May 26 20:11:12.269: [WV-TUNL-EVT]:[8A3AE410] For User VPNUSER, DPD timer started for 300 seconds *May 26 20:11:12.273: [WV-TUNL-EVT]:[8A3AE410] CSTP Control, Recvd a Req Cntl Frame (User VPNUSER, IP 192.168.10.9) Severity ERROR, Type CLOSE_ERROR Text: reinitiate tunnel to negotiate a different MTU *May 26 20:11:12.273: [WV-TUNL-EVT]:[8A3AE410] CSTP Control, Recvd Close Error Frame *May 26 20:11:14.105: *May 26 20:11:14.105: *May 26 20:11:14.105: [WV-TUNL-EVT]:[8A3AE690] CSTP Version recd , using 1 *May 26 20:11:14.109: [WV-TUNL-EVT]:[8A3AE690] Tunnel Client reconnecting removing existing tunl ctx *May 26 20:11:14.109: [WV-TUNL-EVT]:[8A3AE410] Closing Tunnel Context 0x8A3AE410 for Session 0x8A3C2EF8 and User VPNUSER *May 26 20:11:14.109: [WV-TUNL-EVT]:[8A3AE690] Reusing IP 192.168.10.9 255.255.255.0 *May 26 20:11:14.109: Inserting static route: 192.168.10.9 255.255.255.255 Virtual-Access2 to routing table *May 26 20:11:14.109: [WV-TUNL-EVT]:[8A3AE690] Full Tunnel CONNECT request processed, HTTP reply created *May 26 20:11:14.109: HTTP/1.1 200 OK *May 26 20:11:14.109: Server: Cisco IOS SSLVPN *May 26 20:11:14.109: X-CSTP-Version: 1 *May 26 20:11:14.109: X-CSTP-Address: 192.168.10.9 *May 26 20:11:14.109: X-CSTP-Netmask: 255.255.255.0 *May 26 20:11:14.109: X-CSTP-Keep: false *May 26 20:11:14.109: X-CSTP-DNS: 8.8.8.8 *May 26 20:11:14.113: X-CSTP-Lease-Duration: 43200 *May 26 20:11:14.113: X-CSTP-MTU: 1199 *May 26 20:11:14.113: X-CSTP-Split-Include: 192.168.0.0/255.255.0.0 *May 26 20:11:14.113: X-CSTP-DPD: 300 *May 26 20:11:14.113: X-CSTP-Disconnected-Timeout: 2100 *May 26 20:11:14.113: X-CSTP-Idle-Timeout: 2100 *May 26 20:11:14.113: X-CSTP-Session-Timeout: 0 *May 26 20:11:14.113: X-CSTP-Keepalive: 30 *May 26 20:11:14.113: X-DTLS-Session-ID: 22E54D9F1F6344BCB5BB30BC8BB3737907795E6F3C3665CDD294CBBA1DA4D0CF *May 26 20:11:14.113: X-DTLS-Port: 443 *May 26 20:11:14.113: X-DTLS-Header-Pad-Length: 3 *May 26 20:11:14.113: X-DTLS-CipherSuite: AES256-SHA *May 26 20:11:14.113: X-DTLS-DPD: 300 *May 26 20:11:14.113: X-DTLS-KeepAlive: 30 *May 26 20:11:14.113: *May 26 20:11:14.113: *May 26 20:11:14.113: *May 26 20:11:14.113: [WV-TUNL-EVT]:[8A3AE690] For User VPNUSER, DPD timer started for 300 seconds fdenofa-892#show webvpn session user VPNUSER context SSLVPN_CONTEXT Session Type : Full Tunnel Client User-Agent : AnyConnect Windows 3.1.08009 Username : VPNUSER Num Connection : 5 Public IP : 192.168.157.2 VRF Name : None Context : SSLVPN_CONTEXT Policy Group : SSLVPN_POLICY Last-Used : 00:00:00 Created : *16:11:06.381 EDT Tue May 26 2015 Session Timeout : Disabled Idle Timeout : 2100 DNS primary serve : 8.8.8.8 DPD GW Timeout : 300 DPD CL Timeout : 300 Address Pool : SSLVPN_POOL MTU Size : 1199 Rekey Time : 3600 Rekey Method : Lease Duration : 43200 Tunnel IP : 192.168.10.9 Netmask : 255.255.255.0 Rx IP Packets : 0 Tx IP Packets : 42 CSTP Started : 00:00:13 Last-Received : 00:00:00 CSTP DPD-Req sent : 0 Virtual Access : 2 Msie-ProxyServer : None Msie-PxyPolicy : Disabled Msie-Exception : Split Include : ACL 1 Client Ports : 17462 17463 17464 17465 17471
相关信息