本文介绍Cisco自适应安全设备(ASA)和Cisco IOS®中的组锁定功能,并介绍不同身份验证、授权和记帐(AAA)属性的行为。对于Cisco IOS,解释了group-lock和user-vpn-groups之间的区别,同时使用两个互补功能的示例也说明了这一点。还有一个包含身份验证域的Cisco IOS WebVPN示例。
思科建议您基本了解以下主题:
本文档中的信息基于以下软件版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
您可以在用户或组策略下定义此属性。以下是本地用户属性的示例。
username cisco password 3USUcOPFUiMCO4Jk encrypted
username cisco attributes
group-lock value RA
username cisco2 password BAtr3u1T7j1eEcYr encrypted
username cisco2 attributes
group-lock value RA2
tunnel-group RA type remote-access
tunnel-group RA general-attributes
default-group-policy MY
tunnel-group RA webvpn-attributes
group-alias RA enable
tunnel-group RA2 type remote-access
tunnel-group RA2 general-attributes
default-group-policy MY
tunnel-group RA2 webvpn-attributes
group-alias RA2 enable
group-policy MY attributes
address-pools value POOL
webvpn
enable inside
anyconnect enable
tunnel-group-list enable
思科用户只能使用RA隧道组,而cisco2用户只能使用RA2隧道组。
如果cisco2用户选择RA隧道组,则连接被拒绝:
May 17 2013 17:24:54: %ASA-4-113040: Group <MY> User <cisco2> IP <192.168.1.88>
Terminating the VPN connection attempt from <RA>. Reason: This connection is
group locked to.
AAA服务器返回的属性3076/85(隧道组锁定)执行完全相同的操作。它可以与用户或策略组(或互联网工程任务组(IETF)属性25)身份验证一起传递,并锁定特定隧道组中的用户。
以下是思科访问控制服务器(ACS)上的授权配置文件示例:
当AAA返回属性时,RADIUS调试会指示它:
tunnel-group RA2 general-attributes
authentication-server-group ACS54
Parsed packet data.....
Radius: Code = 2 (0x02)
Radius: Identifier = 2 (0x02)
Radius: Length = 61 (0x003D)
Radius: Vector: E55D5EBF1558CA455DA46F5BF3B67354
Radius: Type = 1 (0x01) User-Name
Radius: Length = 7 (0x07)
Radius: Value (String) =
63 69 73 63 6f | cisco
Radius: Type = 25 (0x19) Class
Radius: Length = 24 (0x18)
Radius: Value (String) =
43 41 43 53 3a 61 63 73 35 34 2f 31 35 38 33 33 | CACS:acs54/15833
34 34 38 34 2f 33 | 4484/3
Radius: Type = 26 (0x1A) Vendor-Specific
Radius: Length = 10 (0x0A)
Radius: Vendor ID = 3076 (0x00000C04)
Radius: Type = 85 (0x55) The tunnel group that tunnel must be associated with
Radius: Length = 4 (0x04)
Radius: Value (String) =
52 41 | RA
rad_procpkt: ACCEPT
RADIUS_ACCESS_ACCEPT: normal termination
当您尝试访问RA2隧道组时,在RA隧道组内锁定组时,结果相同:
May 17 2013 17:41:33: %ASA-4-113040: Group <MY> User <cisco> IP <192.168.1.88>
Terminating the VPN connection attempt from <RA2>. Reason: This connection is
group locked to
此属性也取自ASA继承的VPN3000目录。它仍在8.4配置指南中(虽然在较新版本的配置指南中删除),并描述如下:
IPsec-User-Group-Lock
0 = Disabled
1 = Enabled
即使存在Tunnel-Group-Lock属性,该属性似乎也可用于禁用组锁定。如果尝试将该属性与Tunnel-Group-Lock一起返回为0(这仍只是用户身份验证),将发生以下情况。当您在返回特定隧道组名称时尝试禁用组锁定时,这看起来很奇怪:
调试显示:
Parsed packet data.....
Radius: Code = 2 (0x02)
Radius: Identifier = 3 (0x03)
Radius: Length = 73 (0x0049)
Radius: Vector: 7C6260DDFC3E523CCC34AD8B828DD014
Radius: Type = 1 (0x01) User-Name
Radius: Length = 7 (0x07)
Radius: Value (String) =
63 69 73 63 6f | cisco
Radius: Type = 25 (0x19) Class
Radius: Length = 24 (0x18)
Radius: Value (String) =
43 41 43 53 3a 61 63 73 35 34 2f 31 35 38 33 33 | CACS:acs54/15833
34 34 38 34 2f 34 | 4484/4
Radius: Type = 26 (0x1A) Vendor-Specific
Radius: Length = 12 (0x0C)
Radius: Vendor ID = 3076 (0x00000C04)
Radius: Type = 33 (0x21) Group-Lock
Radius: Length = 6 (0x06)
Radius: Value (Integer) = 0 (0x0000)
Radius: Type = 26 (0x1A) Vendor-Specific
Radius: Length = 10 (0x0A)
Radius: Vendor ID = 3076 (0x00000C04)
Radius: Type = 85 (0x55) The tunnel group that tunnel must be associated with
Radius: Length = 4 (0x04)
Radius: Value (String) =
52 41 | RA
rad_procpkt: ACCEPT
这将产生相同的结果(已实施组锁定,且未考虑IPSec-User-Group-Lock)。
May 17 2013 17:42:34: %ASA-4-113040: Group <MY> User <cisco> IP <192.168.1.88>
Terminating the VPN connection attempt from <RA2>. Reason: This connection is
group locked to
外部组策略返回IPSec-User-Group-Lock=0,并且获取了Tunnel-Group-Lock=RA以进行用户身份验证。但是,用户已被锁定,这意味着已执行组锁定。
对于相反的配置,外部组策略在尝试为特定用户禁用组锁定(IPSec-User-Group-Lock=0)时返回特定隧道组名称(Tunnel-Group-Lock),并且仍对该用户实施组锁定。
这确认该属性不再使用。该属性在旧VPN3000系列中使用。已打开思科漏洞ID CSCui34066。
Cisco IOS中组配置下的本地组锁定选项与ASA上的工作方式不同。在ASA上,指定用户锁定到的隧道组名称。Cisco IOS组锁定选项(无参数)启用其他验证,并将用户名(格式为user@group)提供的组与IKEID(组名)进行比较。
有关详细信息,请参阅《Easy VPN配置指南》(Cisco IOS版本15M&T)。
示例如下:
aaa new-model
aaa authentication login LOGIN local
aaa authorization network LOGIN local
username cisco1@GROUP1 password 0 cisco1
username cisco2@GROUP2 password 0 cisco2
crypto isakmp client configuration group GROUP1
key cisco
pool POOL
group-lock
save-password
!
crypto isakmp client configuration group GROUP2
key cisco
pool POOL
save-password
crypto isakmp profile prof1
match identity group GROUP1
client authentication list LOGIN
isakmp authorization list LOGIN
client configuration address respond
client configuration group GROUP1
virtual-template 1
crypto isakmp profile prof2
match identity group GROUP2
client authentication list LOGIN
isakmp authorization list LOGIN
client configuration address respond
client configuration group GROUP2
virtual-template 2
crypto ipsec transform-set aes esp-aes 256 esp-sha-hmac
mode tunnel
crypto ipsec profile prof1
set transform-set aes
set isakmp-profile prof1
crypto ipsec profile prof2
set transform-set aes
set isakmp-profile prof2
interface Virtual-Template1 type tunnel
ip unnumbered Ethernet0/0
tunnel mode ipsec ipv4
tunnel protection ipsec profile prof1
interface Virtual-Template2 type tunnel
ip unnumbered Ethernet0/0
tunnel mode ipsec ipv4
tunnel protection ipsec profile prof2
ip local pool POOL 10.10.10.10 10.10.10.15
这显示已为GROUP1启用组锁定验证。对于GROUP1,唯一允许的用户是cisco1@GROUP1。对于GROUP2(无组锁定),两个用户都可以登录。
要成功进行身份验证,请将cisco1@GROUP1与GROUP1配合使用:
*May 19 18:21:37.983: ISAKMP:(0): Profile prof1 assigned peer the group named GROUP1
*May 19 18:21:40.595: ISAKMP/author: Author request for group GROUP1successfully
sent to AAA
对于身份验证,将cisco2@GROUP2与GROUP1一起使用:
*May 19 18:24:10.210: ISAKMP:(1011):User Authentication in this group failed
ipsec:user-vpn-group是AAA服务器返回的RADIUS属性,它只能应用于用户身份验证(组锁用于组)。 这两种功能都是互补的,并且应用于不同的阶段。
有关详细信息,请参阅《Easy VPN配置指南,Cisco IOS版本15M&T》。
它的工作方式与组锁不同,仍允许您实现相同的结果。区别在于,属性必须具有特定值(如ASA),并且该特定值与互联网安全关联和密钥管理协议(ISAKMP)组名(IKEID)进行比较;如果不匹配,则连接失败。如果更改上一个示例以使客户端AAA身份验证并禁用组锁定,现在会发生以下情况:
username cisco password 0 cisco #for testing
aaa authentication login AAA group radius
crypto isakmp client configuration group GROUP1
no group-lock
crypto isakmp client configuration group GROUP2
no group-lock
crypto isakmp profile prof1
client authentication list AAA
crypto isakmp profile prof2
client authentication list AAA
请注意,ipsec:user-vpn-group属性已为用户定义,而group-lock已为组定义。
在ACS上,有两个用户,cisco1和cisco2。对于cisco1用户,返回此属性:ipsec:user-vpn-group=GROUP1。对于cisco2用户,返回此属性:ipsec:user-vpn-group=GROUP2。
当cisco2用户尝试使用GROUP1登录时,会报告以下错误:
debug radius verbose
debug crypto isakmp
debug crypto isakmp aaa
*May 19 19:44:10.153: RADIUS: Cisco AVpair [1] 29
"ipsec:user-vpn-group=GROUP2"
*May 19 19:44:10.153: RADIUS(00000055): Received from id 1645/23
AAA/AUTHOR/IKE: Processing AV user-vpn-group
*May 19 19:44:10.154:
AAA/AUTHOR/IKE: User group GROUP2 does not match VPN group GROUP1 - access denied
这是因为cisco2用户的ACS返回ipsec:user-vpn-group=GROUP2,由Cisco IOS与GROUP1进行比较。
这样,就实现了小组锁定的相同目标。您可以看到,目前,最终用户不需要提供user@group作为用户名,但可以使用用户(不含@group)。
对于组锁,应使用cisco1@GROUP1,因为Cisco IOS删除了最后一部分(@之后),并将其与IKEID(组名)进行比较。
对于ipsec:user-vpn-group,在Cisco VPN客户端中仅使用cisco1就足够了,因为该用户在ACS上定义,并返回特定的ipsec:user-vpn-group(在本例中为=GROUP1),该属性与IKEID进行比较。
为什么不同时使用这两个功能?
您可以再次添加组锁:
crypto isakmp client configuration group GROUP1
group-lock
crypto isakmp client configuration group GROUP2
group-lock
流程如下:
*May 19 20:14:31.678: ISAKMP/xauth: reply attribute XAUTH_USER_NAME_V2
*May 19 20:14:31.678: ISAKMP/xauth: reply attribute XAUTH_USER_PASSWORD_V2
*May 19 20:14:31.678: ISAKMP:(1041):User Authentication in this group failed
AAA/AUTHOR/IKE: User group GROUP2 does not match VPN group GROUP1 - access denied
在ASA上,Tunnel-Group-Lock可用于所有远程访问VPN服务(IPSec、SSL、WebVPN)。 对于Cisco IOS组锁和ipsec:user-vpn-group,它仅适用于IPSec(easy VPN服务器)。 为了在特定WebVPN环境(和附加的组策略)中对特定用户进行组锁定,应使用身份验证域。
示例如下:
aaa new-model
aaa authentication login LIST local
username cisco password 0 cisco
username cisco1@C1 password 0 cisco
username cisco2@C2 password 0 cisco
webvpn gateway GW
ip address 10.48.67.137 port 443
http-redirect port 80
logging enable
inservice
!
webvpn install svc flash:/webvpn/anyconnect-win-3.1.02040-k9.pkg sequence 1
!
webvpn context C1
ssl authenticate verify all
!
policy group C1
functions file-access
functions file-browse
functions file-entry
functions svc-enabled
svc address-pool "POOL"
svc default-domain "cisco.com"
svc keep-client-installed
default-group-policy C1
aaa authentication list LIST
aaa authentication domain @C1
gateway GW domain C1 #accessed via https://IP/C1
logging enable
inservice
!
!
webvpn context C2
ssl authenticate verify all
url-list "L2"
heading "Link2"
url-text "Display2" url-value "http://2.2.2.2"
policy group C2
url-list "L2"
default-group-policy C2
aaa authentication list LIST
aaa authentication domain @C2
gateway GW domain C2 #accessed via https://IP/C2
logging enable
inservice
ip local pool POOL 7.7.7.10 7.7.7.20
在下一个示例中,有两个情景:C1和C2。每个情景都有其自己的组策略和特定设置。C1允许AnyConnect访问。配置网关以侦听两个情景:C1和C2。
当cisco1用户使用https://10.48.67.137/C1访问C1上下文时,身份验证域将添加C1,并根据本地定义的(列表LIST)cisco1@C1用户名进行身份验证:
debug webvpn aaa
debug webvpn
*May 20 16:30:07.518: WV: validated_tp : cert_username : matched_ctx :
*May 20 16:30:07.518: WV-AAA: AAA authentication request sent for user: "cisco1"
*May 20 16:30:07.518: WV: ASYNC req sent
*May 20 16:30:07.518: WV-AAA: AAA Authentication Passed!
*May 20 16:30:07.518: %SSLVPN-5-LOGIN_AUTH_PASSED: vw_ctx: C1 vw_gw: GW remote_ip:
10.61.218.146 user_name: cisco1, Authentication successful, user logged in
*May 20 16:30:07.518: WV-AAA: User "cisco1" has logged in from "10.61.218.146" to gateway "GW"
context "C1"
当您在访问C1情景(https://10.48.67.137/C1)时尝试以cisco2作为用户名登录时,会报告此故障:
*May 20 16:33:56.930: WV: validated_tp : cert_username : matched_ctx :
*May 20 16:33:56.930: WV-AAA: AAA authentication request sent for user: "cisco2"
*May 20 16:33:56.930: WV: ASYNC req sent
*May 20 16:33:58.930: WV-AAA: AAA Authentication Failed!
*May 20 16:33:58.930: %SSLVPN-5-LOGIN_AUTH_REJECTED: vw_ctx: C1 vw_gw: GW
remote_ip: 10.61.218.146 user_name: cisco2, Failed to authenticate user credentials
这是因为没有用户定义cisco2@C1。思科用户无法登录任何情景。
当前没有可用于此配置的验证过程。
目前没有针对此配置的故障排除信息。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
25-Apr-2014 |
初始版本 |