簡介
本文檔介紹如何使用輕量級目錄訪問協定(LDAP)身份驗證在登入時分配組策略。 通常,管理員希望為VPN使用者提供不同的訪問許可權或WebVPN內容。在自適應安全裝置(ASA)上,這通常透過為不同使用者分配不同的組策略來實現。使用LDAP身份驗證時,可以透過LDAP屬性對映自動實現這一點。
要使用LDAP將組策略分配給某個使用者,需要對對映進行配置,使之將Active Directory (AD)屬性memberOf等LDAP屬性對映到ASA能夠辨識的IETF-Radius-Class 屬性。一旦建立了屬性對映,您必須將LDAP伺服器上配置的屬性值對映到ASA上的組策略名稱。
注意:memberOf屬性對應於Active Directory中使用者所在的組。使用者可以是Active Directory中一個以上群組的成員。這將導致伺服器傳送多個memberOf屬性,但ASA只能將其中一個屬性與一個組策略進行匹配。
必要條件
需求
本文檔要求已在ASA上配置有效的LDAP身份驗證設定。要瞭解如何在ASA上設定基本的LDAP身份驗證配置,請參閱為WebVPN使用者配置LDAP身份驗證。
採用元件
本文檔中的資訊基於PIX/ASA 8.0。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
背景資訊
在本示例中,AD/LDAP屬性memberOf對映到ASA屬性CVPN3000-Radius-IETF-Class。類屬性用於在ASA上分配組策略。這是ASA使用LDAP對使用者進行身份驗證時完成的一般過程:
-
使用者啟動與ASA的連線。
-
ASA配置為使用Microsoft AD/LDAP伺服器對該使用者進行身份驗證。
-
ASA使用在ASA上配置的憑證(在本例中為admin)繫結到LDAP伺服器,並查詢提供的使用者名稱。
-
如果找到使用者名稱,ASA會嘗試使用使用者在登入時提供的憑據繫結到LDAP伺服器。
-
如果第二次繫結成功,則ASA將處理使用者屬性(包括memberOf)。
-
根據配置的LDAP屬性對映,memberOf屬性將對映到CVPN3000-Radius-IETF-Class。
-
檢查新分配的CVPN3000-Radius-IETF-Class屬性並確定組策略。
設定
配置ASA
在本節中,您會看到配置ASA以根據使用者的LDAP屬性為其分配組策略的資訊。
ASDM
在Adaptive Security Device Manager (ASDM)中完成以下步驟,以便在ASA上配置LDAP對映。
-
導航到Configuration > Remote Access VPN > AAA Setup > LDAP Attribute Map。
-
按一下Add。
-
為地圖命名。
-
在LDAP屬性和ASA上的IETF-Radius-Class 屬性之間建立一個對映。在本示例中,Customer Name 是Active Directory中的memberOf 屬性。該屬性將對映到IETF-Radius-Class的Cisco Name。按一下Add。
注意:屬性名稱和值區分大小寫。
注意:如果不知道LDAP伺服器所提供的確切屬性名稱或拼寫,可在建立對映之前檢查調試。有關如何透過調試來確定LDAP屬性的詳細資訊,請參閱驗證部分。
-
增加屬性對映後,按一下Map Value 頁籤,然後按一下Add以建立值對映。根據需要增加多個值對映,然後在完成時按一下OK。
在本示例中,memberOf值CN=Employees,CN=Users,DC=ftwsecurity,DC=cisco,DC=com對映到ExamplePolicy1,memberOf值CN=Contractors,CN=Users,DC=ftwsecurity,DC=cisco,DC=com對映到ExamplePolicy2。
完成LDAP屬性對應
-
建立對映後,必須將其分配給為LDAP身份驗證配置的Authentication, Authorization, and Accounting (AAA) 伺服器。從左窗格中選擇AAA Server Groups。
-
選擇已針對LDAP進行配置的AAA伺服器,然後按一下Edit。
-
在所顯示的窗口底部,找到LDAP Attribute Map 下拉選單。選擇您剛建立的清單。完成後按一下OK。
CLI
在CLI中完成以下步驟,以便在ASA上配置LDAP對映。
ciscoasa#configure terminal
!--- Create the LDAP Attribute Map.
ciscoasa(config)#ldap attribute-map CISCOMAP
ciscoasa(config-ldap-attribute-map)#map-name memberOf IETF-Radius-Class
ciscoasa(config-ldap-attribute-map)#map-value memberOf CN=Employees,CN=Users,
DC=ftwsecurity,DC=cisco,DC=com ExamplePolicy1
ciscoasa(config-ldap-attribute-map)#map-value memberOf CN=Contractors,CN=Users,
DC=ftwsecurity,DC=cisco,DC=com ExamplePolicy2
ciscoasa(config-ldap-attribute-map)#exit
!--- Assign the map to the LDAP AAA server.
ciscoasa(config)#aaa-server LDAP_SRV_GRP (inside) host 192.168.1.2
ciscoasa(config-aaa-server-host)#ldap-attribute-map CISCOMAP
配置NOACCESS組策略
您可以建立NOACCESS組策略以在使用者不屬於任何LDAP組時拒絕VPN連線。此配置代碼段會顯示出來供您參考:
group-policy NOACCESS internal
group-policy NOACCESS attributes
vpn-simultaneous-logins 0
vpn-tunnel-protocol IPSec webvpn
您需要將此組策略作為預設組策略應用到隧道組。因此,從LDAP屬性對映獲得對映的使用者(例如,屬於所需LDAP組的使用者)能夠獲取其所需的組策略,而未獲得任何對映的使用者(例如,不屬於所需LDAP組的任何使用者)能夠從隧道組獲取NOACCESS組策略,該策略會阻止他們的訪問。
注意:有關如何建立可拒絕某些使用者訪問的不同LDAP屬性對映的詳細資訊,請參閱ASA/PIX:透過LDAP將VPN客戶端對映到VPN組策略配置示例。
配置Active Directory或其他LDAP伺服器
Active Directory或其他LDAP伺服器上所需的唯一配置與使用者的屬性有關。在此範例中,使用者Kate Austen是AD中Employees群組的成員:
Ben Linus是Contractors團隊的成員:
驗證
使用本節內容,驗證您的設定。
登入
要驗證配置是否成功,請以應分配有LDAP屬性對映的組策略的使用者身份登入。在本示例中,為每個組策略配置了一個標語。由於kate是Employees組的成員,因此螢幕截圖顯示使用者kate 已成功登入並應用了ExamplePolicy1。
調試LDAP事務
為了驗證LDAP對映是否已經發生,或者為了獲取LDAP伺服器所傳送屬性的詳細資訊,可在ASA命令列上發出debug ldap 255 命令,然後嘗試進行身份驗證。
在此調試中,為使用者kate 分配了組策略ExamplePolicy1,因為她是Employees 組的成員。此調試還顯示kate是Castaways組的成員,但該屬性尚未進行對映,因此被忽略。
ciscoasa#debug ldap 255
debug ldap enabled at level 255
ciscoasa#
[105] Session Start
[105] New request Session, context 0xd5481808, reqType = 1
[105] Fiber started
[105] Creating LDAP context with uri=ldap://192.168.1.2:389
[105] Connect to LDAP server: ldap://192.168.1.2:389, status = Successful
[105] defaultNamingContext: value = DC=ftwsecurity,DC=cisco,DC=com
[105] supportedLDAPVersion: value = 3
[105] supportedLDAPVersion: value = 2
[105] supportedSASLMechanisms: value = GSSAPI
[105] supportedSASLMechanisms: value = GSS-SPNEGO
[105] supportedSASLMechanisms: value = EXTERNAL
[105] supportedSASLMechanisms: value = DIGEST-MD5
[105] Binding as administrator
[105] Performing Simple authentication for admin to 192.168.1.2
[105] LDAP Search:
Base DN = [dc=ftwsecurity, dc=cisco, dc=com]
Filter = [sAMAccountName=kate]
Scope = [SUBTREE]
[105] User DN = [CN=Kate Austen,CN=Users,DC=ftwsecurity,DC=cisco,DC=com]
[105] Talking to Active Directory server 192.168.1.2
[105] Reading password policy for kate, dn:CN=Kate Austen,CN=Users,
DC=ftwsecurity,DC=cisco,DC=com
[105] Read bad password count 0
[105] Binding as user
[105] Performing Simple authentication for kate to 192.168.1.2
[105] Checking password policy for user kate
[105] Binding as administrator
[105] Performing Simple authentication for admin to 192.168.1.2
[105] Authentication successful for kate to 192.168.1.2
[105] Retrieving user attributes from server 192.168.1.2
[105] Retrieved Attributes:
[105] objectClass: value = top
[105] objectClass: value = person
[105] objectClass: value = organizationalPerson
[105] objectClass: value = user
[105] cn: value = Kate Austen
[105] sn: value = Austen
[105] givenName: value = Kate
[105] distinguishedName: value = CN=Kate Austen,CN=Users,DC=ftwsecurity,
DC=cisco,DC=com
[105] instanceType: value = 4
[105] whenCreated: value = 20070815155224.0Z
[105] whenChanged: value = 20070815195813.0Z
[105] displayName: value = Kate Austen
[105] uSNCreated: value = 16430
[105] memberOf: value = CN=Castaways,CN=Users,DC=ftwsecurity,DC=cisco,DC=com
[105] mapped to IETF-Radius-Class: value = CN=Castaways,CN=Users,
DC=ftwsecurity,DC=cisco,DC=com
[105] memberOf: value = CN=Employees,CN=Users,DC=ftwsecurity,DC=cisco,DC=com
[105] mapped to IETF-Radius-Class: value = ExamplePolicy1
[105] uSNChanged: value = 20500
[105] name: value = Kate Austen
[105] objectGUID: value = ..z...yC.q0.....
[105] userAccountControl: value = 66048
[105] badPwdCount: value = 0
[105] codePage: value = 0
[105] countryCode: value = 0
[105] badPasswordTime: value = 128316837694687500
[105] lastLogoff: value = 0
[105] lastLogon: value = 128316837785000000
[105] pwdLastSet: value = 128316667442656250
[105] primaryGroupID: value = 513
[105] objectSid: value = ............Q..p..*.p?E.Z...
[105] accountExpires: value = 9223372036854775807
[105] logonCount: value = 0
[105] sAMAccountName: value = kate
[105] sAMAccountType: value = 805306368
[105] userPrincipalName: value = kate@ftwsecurity.cisco.com
[105] objectCategory: value = CN=Person,CN=Schema,CN=Configuration,
DC=ftwsecurity,DC=cisco,DC=com
[105] dSCorePropagationData: value = 20070815195237.0Z
[105] dSCorePropagationData: value = 20070815195237.0Z
[105] dSCorePropagationData: value = 20070815195237.0Z
[105] dSCorePropagationData: value = 16010108151056.0Z
[105] Fiber exit Tx=685 bytes Rx=2690 bytes, status=1
[105] Session End
在此調試中,為使用者ben 分配了ExamplePolicy2 組策略,因為他是Contractors 組的成員。此調試還顯示ben 是TheOthers 組的成員,但該屬性尚未進行對映,因此被忽略。
ciscoasa#debug ldap 255
debug ldap enabled at level 255
ciscoasa#
[106] Session Start
[106] New request Session, context 0xd5481808, reqType = 1
[106] Fiber started
[106] Creating LDAP context with uri=ldap://192.168.1.2:389
[106] Connect to LDAP server: ldap://192.168.1.2:389, status = Successful
[106] defaultNamingContext: value = DC=ftwsecurity,DC=cisco,DC=com
[106] supportedLDAPVersion: value = 3
[106] supportedLDAPVersion: value = 2
[106] supportedSASLMechanisms: value = GSSAPI
[106] supportedSASLMechanisms: value = GSS-SPNEGO
[106] supportedSASLMechanisms: value = EXTERNAL
[106] supportedSASLMechanisms: value = DIGEST-MD5
[106] Binding as administrator
[106] Performing Simple authentication for admin to 192.168.1.2
[106] LDAP Search:
Base DN = [dc=ftwsecurity, dc=cisco, dc=com]
Filter = [sAMAccountName=ben]
Scope = [SUBTREE]
[106] User DN = [CN=Ben Linus,CN=Users,DC=ftwsecurity,DC=cisco,DC=com]
[106] Talking to Active Directory server 192.168.1.2
[106] Reading password policy for ben, dn:CN=Ben Linus,CN=Users,DC=ftwsecurity,
DC=cisco,DC=com
[106] Read bad password count 0
[106] Binding as user
[106] Performing Simple authentication for ben to 192.168.1.2
[106] Checking password policy for user ben
[106] Binding as administrator
[106] Performing Simple authentication for admin to 192.168.1.2
[106] Authentication successful for ben to 192.168.1.2
[106] Retrieving user attributes from server 192.168.1.2
[106] Retrieved Attributes:
[106] objectClass: value = top
[106] objectClass: value = person
[106] objectClass: value = organizationalPerson
[106] objectClass: value = user
[106] cn: value = Ben Linus
[106] sn: value = Linus
[106] givenName: value = Ben
[106] distinguishedName: value = CN=Ben Linus,CN=Users,DC=ftwsecurity,
DC=cisco,DC=com
[106] instanceType: value = 4
[106] whenCreated: value = 20070815160840.0Z
[106] whenChanged: value = 20070815195243.0Z
[106] displayName: value = Ben Linus
[106] uSNCreated: value = 16463
[106] memberOf: value = CN=TheOthers,CN=Users,DC=ftwsecurity,DC=cisco,DC=com
[106] mapped to IETF-Radius-Class: value = CN=TheOthers,CN=Users,
DC=ftwsecurity,DC=cisco,DC=com
[106] memberOf: value = CN=Contractors,CN=Users,DC=ftwsecurity,DC=cisco,DC=com
[106] mapped to IETF-Radius-Class: value = ExamplePolicy2
[106] uSNChanged: value = 20499
[106] name: value = Ben Linus
[106] objectGUID: value = ..j...5@.z.|...n
[106] userAccountControl: value = 66048
[106] badPwdCount: value = 0
[106] codePage: value = 0
[106] countryCode: value = 0
[106] badPasswordTime: value = 0
[106] lastLogoff: value = 0
[106] lastLogon: value = 0
[106] pwdLastSet: value = 128316677201718750
[106] primaryGroupID: value = 513
[106] objectSid: value = ............Q..p..*.p?E.^...
[106] accountExpires: value = 9223372036854775807
[106] logonCount: value = 0
[106] sAMAccountName: value = ben
[106] sAMAccountType: value = 805306368
[106] userPrincipalName: value = ben@ftwsecurity.cisco.com
[106] objectCategory: value = CN=Person,CN=Schema,CN=Configuration,
DC=ftwsecurity,DC=cisco,DC=com
[106] dSCorePropagationData: value = 20070815195243.0Z
[106] dSCorePropagationData: value = 20070815195243.0Z
[106] dSCorePropagationData: value = 20070815195243.0Z
[106] dSCorePropagationData: value = 16010108151056.0Z
[106] Fiber exit Tx=680 bytes Rx=2642 bytes, status=1
[106] Session End
疑難排解
使用本節內容,對組態進行疑難排解。
屬性名稱和值區分大小寫
屬性名稱和值區分大小寫。如果對映未能正確進行,請確保LDAP屬性對映中Cisco和LDAP的屬性名稱和值均使用了正確的拼寫和大小寫。
ASA無法從LDAP伺服器對使用者進行身份驗證
ASA無法從LDAP伺服器對使用者進行身份驗證。以下是調試:
ldap 255輸出:[1555805] Session Start[1555805]新請求會話,上下文0xcd66c028,reqType = 1[1555805]光纖已啟動[1555805]建立LDAP上下文,其中uri=ldaps://172.30.74.70:636[1555805]連線到LDAP伺服器:ldaps://172.30.74.70:636,狀態=成功[1555805] supportedLDAPVersion: value = 3[1555805] supportedLDAPVersion: value = 2[1555805]作為管理員[1555805]對172.30.74.70[1555805]簡單身份驗證執行System sysservices返回代碼(49)無效憑據[1555805]無法作為管理員繫結返回代碼(-1)無法聯絡LDAP伺服器[1555805]光纖退出Tx=222位元組Rx=605位元組,狀態=-2[1555805]會話結束
對於調試,LDAP Login DN格式不正確或密碼不正確,因此請檢驗二者以解決問題。