简介
本文档介绍如何为具有本地用户数据库的AnyConnect安全套接字层(SSL) VPN配置集成服务路由器(ISR) 4k Cisco IOS® XE头端的示例配置。
先决条件
要求
Cisco 建议您了解以下主题:
- 思科IOS XE (ISR 4K)
- AnyConnect 安全移动客户端
- 一般SSL操作
- 公用密钥基础结构 (PKI)
使用的组件
本文档中的信息基于以下软件和硬件版本:
- Cisco ISR4451-X/K9路由器,版本17.9.2a
- AnyConnect安全移动客户端4.10.04065
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
SSL虚拟专用网络(VPN)功能在Cisco IOS XE软件中提供支持,以便远程用户从互联网上的任何位置访问企业网络。远程访问通过启用安全套接字层(启用SSL)的SSL VPN网关提供。SSL VPN网关允许远程用户建立安全的VPN隧道。借助Cisco IOS XE SSL VPN,最终用户可以从家里或任何支持互联网的位置(例如无线热点)安全地访问网络。Cisco IOS XE SSL VPN还使公司能够将公司网络访问扩展到离岸合作伙伴和顾问,以实现公司数据保护。
以下给定平台支持此功能:
Platform |
支持的Cisco IOS XE版本 |
思科云服务路由器1000V系列 |
思科IOS XE版本16.9 |
Cisco Catalyst 8000V |
思科IOS XE班加罗尔17.4.1 |
Cisco 4461 集成业务路由器 Cisco 4451 集成业务路由器 Cisco 4431 集成业务路由器 |
思科IOS XE Cupertino 17.7.1a |
配置
网络图
配置
1. 启用身份验证、授权和记帐(AAA),配置身份验证、授权列表并将用户名添加到本地数据库。
aaa new-model
!
aaa authentication login default local
aaa authorization exec default local
aaa authorization network default local
!
username test password cisco123
2. 创建信任点以安装身份证书(如果本地身份验证中不存在身份证书)。有关证书创建的更多详细信息,请参阅PKI的证书注册。
crypto pki trustpoint SSL
enrollment mode ra
enrollment url http://x.x.x.x:80/certsrv/mscep/mscep.dll
subject-name cn=sslvpn.cisco.com
revocation-check crl
rsakeypair SSL-Keys
3. 配置SSL提议。
crypto ssl proposal SSL_Proposal
protection rsa-3des-ede-sha1 rsa-aes128-sha1
4. 配置SSL策略并调用SSL建议和PKI信任点。
crypto ssl policy SSL_Policy
ssl proposal SSL_Proposal
pki trustpoint SSL sign
ip address local y.y.y.y port 443
no shut
y.y.y.y是GigabitEthernet0/0/0的IP地址。
5.(可选)配置用于拆分隧道的标准访问列表。此访问列表包含可以通过VPN隧道访问的目标网络。默认情况下,如果未配置拆分隧道,则所有流量都会通过VPN隧道(全隧道)。
ip access-list standard split_tunnel_acl
10 permit 192.168.10.0 0.0.0.255
6. 创建IPv4地址池。
ip local pool SSLVPN_POOL 192.168.20.1 192.168.20.10
在AnyConnect连接成功期间,创建的IP地址池会将IPv4地址分配给AnyConnect客户端。
7. 上传AnyConnect头端映像(webdeploy)到bootflash的webvpn目录下,并将客户端配置文件上传到路由器的bootflash。
mkdir bootflash:webvpn
对于Anyconnect软件包:
copy tftp: bootflash:webvpn:
对于客户端配置文件:
copy tftp: bootflash:
按指定定义AnyConnect映像和客户端配置文件:
crypto vpn anyconnect bootflash:/webvpn/anyconnect-win-4.10.04065-webdeploy-k9.pkg sequence 1
!
crypto vpn anyconnect profile sslvpn_client_profile bootflash:/sslvpn_client_profile.xml
8. 配置授权策略。
crypto ssl authorization policy SSL_Author_Policy
rekey time 1110
client profile sslvpn_client_profile
mtu 1000
keepalive 500
dpd-interval client 1000
netmask 255.255.255.0
pool SSLVPN_POOL
dns 8.8.8.8
banner This is SSL VPN tunnel.
route set access-list split_tunnel_acl
IP池、DNS、拆分隧道列表等在授权策略下指定。
9. 配置从中克隆虚拟访问接口的虚拟模板。
interface Virtual-Template1 type vpn
ip unnumbered GigabitEthernet0/0/0
ip mtu 1400
ip tcp adjust-mss 1300
unnumbered命令从配置的接口(GigabitEthernet0/0/0)获取IP地址,并且在该接口上启用IPv4路由。
10. 配置SSL配置文件并匹配在其下创建的SSL策略以及身份验证和授权参数及虚拟模板。
crypto ssl profile SSL_Profile
match policy SSL_Policy
aaa authentication user-pass list default
aaa authorization group user-pass list default SSL_Author_Policy
authentication remote user-pass
virtual-template 1
在AnyConnect配置文件编辑器的帮助下创建AnyConnect配置文件。XML配置文件的代码段供您参考。
!
!
<ClientInitialization>
<UseStartBeforeLogon UserControllable="true">false</UseStartBeforeLogon>
<AutomaticCertSelection UserControllable="true">true</AutomaticCertSelection>
<ShowPreConnectMessage>false</ShowPreConnectMessage>
<CertificateStore>All</CertificateStore>
<CertificateStoreMac>All</CertificateStoreMac>
<CertificateStoreOverride>false</CertificateStoreOverride>
<ProxySettings>Native</ProxySettings>
<AllowLocalProxyConnections>false</AllowLocalProxyConnections>
<AuthenticationTimeout>30</AuthenticationTimeout>
<AutoConnectOnStart UserControllable="true">false</AutoConnectOnStart>
<MinimizeOnConnect UserControllable="true">true</MinimizeOnConnect>
<LocalLanAccess UserControllable="true">false</LocalLanAccess>
<DisableCaptivePortalDetection UserControllable="false">false</DisableCaptivePortalDetection>
<ClearSmartcardPin UserControllable="true">true</ClearSmartcardPin>
<IPProtocolSupport>IPv4,IPv6</IPProtocolSupport>
<AutoReconnect UserControllable="false">true
<AutoReconnectBehavior UserControllable="false">ReconnectAfterResume</AutoReconnectBehavior>
</AutoReconnect>
<SuspendOnConnectedStandby>false</SuspendOnConnectedStandby>
<AutoUpdate UserControllable="false">true</AutoUpdate>
<RSASecurIDIntegration UserControllable="false">Automatic</RSASecurIDIntegration>
<WindowsLogonEnforcement>SingleLocalLogon</WindowsLogonEnforcement>
<LinuxLogonEnforcement>SingleLocalLogon</LinuxLogonEnforcement>
<WindowsVPNEstablishment>AllowRemoteUsers</WindowsVPNEstablishment>
<LinuxVPNEstablishment>LocalUsersOnly</LinuxVPNEstablishment>
<AutomaticVPNPolicy>false</AutomaticVPNPolicy>
<PPPExclusion UserControllable="false">Automatic
<PPPExclusionServerIP UserControllable="false"></PPPExclusionServerIP>
</PPPExclusion>
<EnableScripting UserControllable="false">false</EnableScripting>
<EnableAutomaticServerSelection UserControllable="true">false
<AutoServerSelectionImprovement>20</AutoServerSelectionImprovement>
<AutoServerSelectionSuspendTime>4</AutoServerSelectionSuspendTime>
</EnableAutomaticServerSelection>
<RetainVpnOnLogoff>false
</RetainVpnOnLogoff>
<CaptivePortalRemediationBrowserFailover>false</CaptivePortalRemediationBrowserFailover>
<AllowManualHostInput>true</AllowManualHostInput>
</ClientInitialization>
<ServerList>
<HostEntry>
<HostName>SSLVPN</HostName>
<HostAddress>sslvpn.cisco.com</HostAddress>
</HostEntry>
</ServerList>
!
验证
使用本部分可确认配置能否正常运行。
1. Check the ssl connection parameters for your anyconnect connection
sslvpn# show crypto ssl session user test
Interface : Virtual-Access1
Session Type : Full Tunnel
Client User-Agent : AnyConnect Windows 4.10.04065
Username : test Num Connection : 1
Public IP : 10.106.52.195
Profile : SSL_Profile
Policy : SSL_Policy
Last-Used : 00:03:58 Created : *05:11:06.166 UTC Wed Feb 22 2023
Tunnel IP : 192.168.20.10 Netmask : 255.255.255.0
Rx IP Packets : 174 Tx IP Packets : 142
2. Verify the SSL session status
sslvpn# show crypto ssl session
SSL profile name: SSL_Profile
Client_Login_Name Client_IP_Address No_of_Connections Created Last_Used
test 10.106.52.195 1 00:03:32 00:03:32
3. Verify the tunnel statistics for the active connection
sslvpn# show crypto ssl stats tunnel
SSLVPN Profile name : SSL_Profile
Tunnel Statistics:
Active connections : 1
Peak connections : 1 Peak time : 5d12h
Connect succeed : 10 Connect failed : 0
Reconnect succeed : 38 Reconnect failed : 0
IP Addr Alloc Failed : 0 VA creation failed : 0
DPD timeout : 0
Client
in CSTP frames : 129 in CSTP control : 129
in CSTP data : 0 in CSTP bytes : 1516
out CSTP frames : 122 out CSTP control : 122
out CSTP data : 0 out CSTP bytes : 1057
cef in CSTP data frames : 0 cef in CSTP data bytes : 0
cef out CSTP data frames : 0 cef out CSTP data bytes : 0
Server
In IP pkts : 0 In IP bytes : 0
In IP6 pkts : 0 In IP6 bytes : 0
Out IP pkts : 0 Out IP bytes : 0
Out IP6 pkts : 0 Out IP6 bytes : 0
4. Check the actual configuration applied for the Virtual-Acces interface associated with client
sslvpn# show derived-config interface virtual-access 1
Building configuration...
Derived configuration : 171 bytes
!
interface Virtual-Access1
description ***Internally created by SSLVPN context profile1***
ip unnumbered GigabitEthernet0/0/0
ip mtu 1400
ip tcp adjust-mss 1300
故障排除
本部分提供可用于对配置进行故障排除的信息。
1. 要从头端收集的SSL调试:
debug crypto ssl condition client username <username>
debug crypto ssl aaa
debug crypto ssl aggr-auth message
debug crypto ssl aggr-auth packets
debug crypto ssl tunnel errors
debug crypto ssl tunnel events
debug crypto ssl tunnel packets
debug crypto ssl package
2. 一些用于排除SSL连接问题的其他命令:
# show crypto ssl authorization policy
# show crypto ssl diagnose error
# show crypto ssl policy
# show crypto ssl profile
# show crypto ssl proposal
# show crypto ssl session profile <profile_name>
# show crypto ssl session user <username> detail
# show crypto ssl session user <username> platform detail
3. 来自AnyConnect客户端的DART。