安全 : 用于 Windows 的思科安全访问控制服务器

配置 ACS 以在登录时使用 RADIUS 分配组策略

2015 年 8 月 28 日 - 机器翻译
其他版本: PDFpdf | 英语 (2014 年 9 月 29 日) | 反馈


目录


简介

在 VPN 用户登录到自适应安全设备 (ASA) 时,您可使用 RADIUS 身份验证为用户分配组策略。应用的组策略由访问控制服务器 (ACS) 中为用户组分配的 IETF RADIUS 属性 25 (Class) 确定。

在此示例中,对于 ACS 中 Employees 组内的用户,在 ASA 上将为其分配 ExamplePolicy1;对于 Contractors 组内的用户,在 ASA 上将为其分配 ExamplePolicy2。

此示例中的 RADIUS 服务器为 Cisco Secure ACS 版本 4.1。

先决条件

要求

本文档要求已在 ASA 上配置了工作 RADIUS 设置。请参阅文档 98594,了解如何在 ASA 和 Cisco Secure ACS 上设置基本 RADIUS 配置。

背景信息

ASA 组策略配置

要协同使用 ACS 和 ASA 在用户登录时为用户分配组策略,ASA 必须已为对应的 RADIUS 属性 25 配置组策略。组策略配置超出本文档的范围,但以下配置代码段显示了 ASA 上组策略配置的大致情况。

group-policy ExamplePolicy1 internal
group-policy ExamplePolicy1 attributes
 banner value This is ExamplePolicy1
group-policy ExamplePolicy2 internal
group-policy ExamplePolicy2 attributes
 banner value This is ExamplePolicy2

一般来说,两种组策略之间的唯一区别是登录时显示的标语。捕获,还可以配置许多其他选项。

配置 ACS 以分配组策略

配置 ACS

完成以下步骤,以配置与 ASA 上的组策略对应的组的 IETF RADIUS 属性 25 (Class)。

  1. 从 ACS 显示屏幕的左侧菜单中选择 Interface Configuration

  2. 选择 RADIUS (IETF)

  3. 确保在“Group”列中选中 [025] Class

    /image/gif/paws/98608/radius-assign-group-policy-1.gif

  4. 从左侧菜单中选择 Group Setup

  5. 从下拉列表中选取所需的组,并单击 Edit Settings

  6. 向下滚动到 IETF RADIUS Attributes 并找到“[025] Class”。

  7. 选中 [025] Class 旁边的复选框。

  8. 在 ASA 上输入要在该组用户登录时分配给他们的组策略的名称。使用“ou=Policyname;”格式, 其中,“Policyname”替换为您的组策略的名称。完成后,单击 Submit + Restart

    /image/gif/paws/98608/radius-assign-group-policy-2.gif

验证

使用此部分可验证您的配置。

洛金

测试配置是否成功的一种简单方法是,以应获得 ACS 分配的组策略的用户身份登录。在本示例中,已为每个组策略配置了标语。以下屏幕截图显示了一位已成功登录并应用了 ExamplePolicy1 的 WebVPN 用户。

/image/gif/paws/98608/radius-assign-group-policy-3.gif

show vpn-sessiondb

当需要验证为您的用户分配的组策略是否正确时,show vpn-sessiondb 命令非常有用。在以下示例中,kate 和 ben 使用的是 WebVPN,但此 show 命令可用于任何类型的远程 VPN 会话。

以下示例输出针对 kate,她位于 Employees 组中且应为其分配 ExamplePolicy1。

ciscoasa#show vpn-sessiondb webvpn

Session Type: WebVPN

Username     : kate                   Index        : 21
Public IP    : 10.88.250.211
Protocol     : Clientless
Encryption   : RC4                    Hashing      : SHA1
Bytes Tx     : 4207283                Bytes Rx     : 1352862
Group Policy : ExamplePolicy1         Tunnel Group : ExampleGroup1
Login Time   : 10:24:01 UTC Thu Aug 16 2007
Duration     : 0h:01m:43s
NAC Result   : Unknown
VLAN Mapping : N/A                    VLAN         : none

以下示例输出针对 ben,他位于 Contractors 组中且应为其分配 ExamplePolicy2。

ciscoasa#show vpn-sessiondb webvpn

Session Type: WebVPN

Username     : ben                    Index        : 22
Public IP    : 10.88.250.211
Protocol     : Clientless
Encryption   : RC4                    Hashing      : SHA1
Bytes Tx     : 4331698                Bytes Rx     : 1373769
Group Policy : ExamplePolicy2         Tunnel Group : ExampleGroup1
Login Time   : 10:27:25 UTC Thu Aug 16 2007
Duration     : 0h:02m:41s
NAC Result   : Unknown
VLAN Mapping : N/A                    VLAN         : none

故障排除

使用本部分可排除配置故障。

调试 RADIUS 活动

启用 RADIUS 调试后,可检查 ACS 服务器的实际响应,以确保它包含所需的 Class 属性。本部分中的示例输出显示已启用 debug radius。此命令将启用 RADIUS 会话调试以及 RADIUS 数据包解码。在本部分显示的每个调试输出中,解码的第一个数据包为从 ASA 发送到 ACS 服务器的数据包。第二个数据包为来自 ACS 服务器的响应。

注意: 使用 debug 命令之前,请参阅有关 Debug 命令的重要信息

在以下输出中,ASA 与 ACS 联系对用户 kate 进行身份验证。ACS 以 access-accept 做出响应,并提供将 ExamplePolicy1 分配给 kate 的 Class 属性,因为她是 ACS 服务器上的 Employees 的成员。

ciscoasa#debug radius
ciscoasa# radius mkreq: 0x72
alloc_rip 0xd5627ae4
    new request 0x72 --> 36 (0xd5627ae4)
got user ''
got password
add_req 0xd5627ae4 session 0x72 id 36
RADIUS_REQUEST
radius.c: rad_mkpkt

RADIUS packet decode (authentication request)

--------------------------------------
Raw packet data (length = 113).....
01 24 00 71 df 2c f5 8a fb 18 71 56 d7 c4 ad e2    |  .$.q.,....qV....
73 30 a9 2e 01 06 6b 61 74 65 02 12 26 1b fb 69    |  s0....kate..&..i
2e ec 8d 74 14 b9 8c d8 64 d9 2a 57 1f 0f 31 30    |  ...t....d.*W..10
2e 38 38 2e 32 35 30 2e 32 31 31 3d 06 00 00 00    |  .88.250.211=....
05 04 06 c0 a8 01 01 05 06 00 00 00 24 1a 24 00    |  ............$.$.
00 00 09 01 1e 69 70 3a 73 6f 75 72 63 65 2d 69    |  .....ip:source-i
70 3d 31 30 2e 38 38 2e 32 35 30 2e 32 31 31 85    |  p=10.88.250.211.
6a                                                 |  j

Parsed packet data.....
Radius: Code = 1 (0x01)
Radius: Identifier = 36 (0x24)
Radius: Length = 113 (0x0071)
Radius: Vector: DF2CF58AFB187156D7C4ADE27330A92E
Radius: Type = 1 (0x01) User-Name
Radius: Length = 6 (0x06)
Radius: Value (String) =
6b 61 74 65                                        |  kate
Radius: Type = 2 (0x02) User-Password
Radius: Length = 18 (0x12)
Radius: Value (String) =
26 1b fb 69 2e ec 8d 74 14 b9 8c d8 64 d9 2a 57    |  &..i...t....d.*W
Radius: Type = 31 (0x1F) Calling-Station-Id
Radius: Length = 15 (0x0F)
Radius: Value (String) =
31 30 2e 38 38 2e 32 35 30 2e 32 31 31             |  10.88.250.211
Radius: Type = 61 (0x3D) NAS-Port-Type
Radius: Length = 6 (0x06)
Radius: Value (Hex) = 0x5
Radius: Type = 4 (0x04) NAS-IP-Address
Radius: Length = 6 (0x06)
Radius: Value (IP Address) = 192.168.1.1 (0xC0A80101)
Radius: Type = 5 (0x05) NAS-Port
Radius: Length = 6 (0x06)
Radius: Value (Hex) = 0x24
Radius: Type = 26 (0x1A) Vendor-Specific
Radius: Length = 36 (0x24)
Radius: Vendor ID = 9 (0x00000009)
Radius: Type = 1 (0x01) Cisco-AV-pair
Radius: Length = 30 (0x1E)
Radius: Value (String) =
69 70 3a 73 6f 75 72 63 65 2d 69 70 3d 31 30 2e    |  ip:source-ip=10.
38 38 2e 32 35 30 2e 32 31 31 85 6a                |  88.250.211.j
send pkt 192.168.1.2/1645
rip 0xd5627ae4 state 7 id 36
rad_vrfy() : response message verified
rip 0xd544d2e8
 : chall_state ''
 : state 0x7
 : timer 0x0
 : reqauth:
     df 2c f5 8a fb 18 71 56 d7 c4 ad e2 73 30 a9 2e
 : info 0x72
     session_id 0x72
     request_id 0x24
     user 'kate'
     response '***'
     app 0
     reason 0
     skey 'secretkey'
     sip 192.168.1.2
     type 1

RADIUS packet decode (response)

--------------------------------------
Raw packet data (length = 70).....
02 24 00 46 cb 46 53 67 3b 5a 77 99 9e c3 91 5e    |  .$.F.FSg;Zw....^
85 54 70 48 19 14 6f 75 3d 45 78 61 6d 70 6c 65    |  .TpH..ou=Example
50 6f 6c 69 63 79 31 3b 08 06 ff ff ff ff 19 18    |  Policy1;........
43 41 43 53 3a 30 2f 31 61 37 2f 63 30 61 38 30    |  CACS:0/1a7/c0a80
31 30 31 2f 33 36                                  |  101/36

Parsed packet data.....
Radius: Code = 2 (0x02)
Radius: Identifier = 36 (0x24)
Radius: Length = 70 (0x0046)
Radius: Vector: CB4653673B5A77999EC3915E85547048
Radius: Type = 25 (0x19) Class
Radius: Length = 20 (0x14)
Radius: Value (String) =
6f 75 3d 45 78 61 6d 70 6c 65 50 6f 6c 69 63 79    |  ou=ExamplePolicy
31 3b                                              |  1;
Radius: Type = 8 (0x08) Framed-IP-Address
Radius: Length = 6 (0x06)
Radius: Value (IP Address) = 255.255.255.255 (0xFFFFFFFF)
Radius: Type = 25 (0x19) Class
Radius: Length = 24 (0x18)
Radius: Value (String) =
43 41 43 53 3a 30 2f 31 61 37 2f 63 30 61 38 30    |  CACS:0/1a7/c0a80
31 30 31 2f 33 36                                  |  101/36
rad_procpkt: ACCEPT
RADIUS_ACCESS_ACCEPT: normal termination
RADIUS_DELETE
remove_req 0xd5627ae4 session 0x72 id 36
free_rip 0xd5627ae4
radius: send queue empty

在以下输出中,ASA 与 ACS 联系对用户 ben 进行身份验证。ACS 以 access-accept 做出响应,并提供将 ExamplePolicy2 分配给 ben 的 Class 属性,因为他是 ACS 服务器上的 Contractors 的成员。

ciscoasa#debug radius
ciscoasa# radius mkreq: 0x75
alloc_rip 0xd5627ae4
    new request 0x75 --> 37 (0xd5627ae4)
got user ''
got password
add_req 0xd5627ae4 session 0x75 id 37
RADIUS_REQUEST
radius.c: rad_mkpkt

RADIUS packet decode (authentication request)

--------------------------------------
Raw packet data (length = 112).....
01 25 00 70 cf 5c 65 3a eb 48 e1 06 c7 f4 1d 92    |  .%.p.\e:.H......
63 60 19 de 01 05 62 65 6e 02 12 a3 6d 71 a2 2c    |  c`....ben...mq.,
a8 92 ad 5d 19 00 37 d4 c2 8d ca 1f 0f 31 30 2e    |  ...]..7......10.
38 38 2e 32 35 30 2e 32 31 31 3d 06 00 00 00 05    |  88.250.211=.....
04 06 c0 a8 01 01 05 06 00 00 00 25 1a 24 00 00    |  ...........%.$..
00 09 01 1e 69 70 3a 73 6f 75 72 63 65 2d 69 70    |  ....ip:source-ip
3d 31 30 2e 38 38 2e 32 35 30 2e 32 31 31 19 45    |  =10.88.250.211.E

Parsed packet data.....
Radius: Code = 1 (0x01)
Radius: Identifier = 37 (0x25)
Radius: Length = 112 (0x0070)
Radius: Vector: CF5C653AEB48E106C7F41D92636019DE
Radius: Type = 1 (0x01) User-Name
Radius: Length = 5 (0x05)
Radius: Value (String) =
62 65 6e                                           |  ben
Radius: Type = 2 (0x02) User-Password
Radius: Length = 18 (0x12)
Radius: Value (String) =
a3 6d 71 a2 2c a8 92 ad 5d 19 00 37 d4 c2 8d ca    |  .mq.,...]..7....
Radius: Type = 31 (0x1F) Calling-Station-Id
Radius: Length = 15 (0x0F)
Radius: Value (String) =
31 30 2e 38 38 2e 32 35 30 2e 32 31 31             |  10.88.250.211
Radius: Type = 61 (0x3D) NAS-Port-Type
Radius: Length = 6 (0x06)
Radius: Value (Hex) = 0x5
Radius: Type = 4 (0x04) NAS-IP-Address
Radius: Length = 6 (0x06)
Radius: Value (IP Address) = 192.168.1.1 (0xC0A80101)
Radius: Type = 5 (0x05) NAS-Port
Radius: Length = 6 (0x06)
Radius: Value (Hex) = 0x25
Radius: Type = 26 (0x1A) Vendor-Specific
Radius: Length = 36 (0x24)
Radius: Vendor ID = 9 (0x00000009)
Radius: Type = 1 (0x01) Cisco-AV-pair
Radius: Length = 30 (0x1E)
Radius: Value (String) =
69 70 3a 73 6f 75 72 63 65 2d 69 70 3d 31 30 2e    |  ip:source-ip=10.
38 38 2e 32 35 30 2e 32 31 31 19 45                |  88.250.211.E
send pkt 192.168.1.2/1645
rip 0xd5627ae4 state 7 id 37
rad_vrfy() : response message verified
rip 0xd544d2e8
 : chall_state ''
 : state 0x7
 : timer 0x0
 : reqauth:
     cf 5c 65 3a eb 48 e1 06 c7 f4 1d 92 63 60 19 de
 : info 0x75
     session_id 0x75
     request_id 0x25
     user 'ben'
     response '***'
     app 0
     reason 0
     skey 'secretkey'
     sip 192.168.1.2
     type 1

RADIUS packet decode (response)

--------------------------------------
Raw packet data (length = 70).....
02 25 00 46 2d 78 a3 18 ee fc 2f ac 66 b3 06 33    |  .%.F-x..../.f..3
53 31 cf 19 19 14 6f 75 3d 45 78 61 6d 70 6c 65    |  S1....ou=Example
50 6f 6c 69 63 79 32 3b 08 06 ff ff ff ff 19 18    |  Policy2;........
43 41 43 53 3a 30 2f 31 61 61 2f 63 30 61 38 30    |  CACS:0/1aa/c0a80
31 30 31 2f 33 37                                  |  101/37

Parsed packet data.....
Radius: Code = 2 (0x02)
Radius: Identifier = 37 (0x25)
Radius: Length = 70 (0x0046)
Radius: Vector: 2D78A318EEFC2FAC66B306335331CF19
Radius: Type = 25 (0x19) Class
Radius: Length = 20 (0x14)
Radius: Value (String) =
6f 75 3d 45 78 61 6d 70 6c 65 50 6f 6c 69 63 79    |  ou=ExamplePolicy
32 3b                                              |  2;
Radius: Type = 8 (0x08) Framed-IP-Address
Radius: Length = 6 (0x06)
Radius: Value (IP Address) = 255.255.255.255 (0xFFFFFFFF)
Radius: Type = 25 (0x19) Class
Radius: Length = 24 (0x18)
Radius: Value (String) =
43 41 43 53 3a 30 2f 31 61 61 2f 63 30 61 38 30    |  CACS:0/1aa/c0a80
31 30 31 2f 33 37                                  |  101/37
rad_procpkt: ACCEPT
RADIUS_ACCESS_ACCEPT: normal termination
RADIUS_DELETE
remove_req 0xd5627ae4 session 0x75 id 37
free_rip 0xd5627ae4
radius: send queue empty

相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


相关信息


Document ID: 98608