Introduction
This document describes configuration of Microsoft AD as external identity store for administrative access to the Cisco ISE management GUI and CLI.
Prerequisites
Requirements
Cisco recommends knowledge of these topics:
- Configuration of Cisco ISE Version 3.0
- Microsoft AD
Components Used
The information in this document is based on these software and hardware versions:
- Cisco ISE Version 3.0
- Windows Server 2016
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, ensure that you understand the potential impact of any command.
Configure
Use this section in order to configure the use of Microsoft AD as an external identity store for administrative access to the Cisco ISE management GUI.
These ports are used between ISE node and AD for this communication:
Note: Ensure the AD account has all the required privileges.
Join ISE to AD
- Navigate to
Administration > Identity Management > External Identity Sources > Active Directory.
- Enter the new join point name and the AD domain.
- Enter the credentials of the AD account that can add and make changes to computer objects and click OK.
Select Directory Groups
- Navigate to
Administration > Identity Management > External Identity Sources > Active Directory > Groups > Add > Select groups form Directory.
- Import at least one AD Group to which your administrator belongs.
Enable Administrative Access for AD
Complete these steps in order to enable password-based authentication for AD:
- Navigate to
Administration > System > Admin Access > Authentication.
- From the
Authentication Method
tab, choose the Password Based
option.
- Choose AD from the
Identity Source
drop-down list.
- Click
Save Changes.
Configure the Admin Group to AD Group Mapping
Define a Cisco ISE Admin Group
and map it to an AD group. This allows authorization to determine the Role Based Access Control (RBAC)
permissions for the administrator based on group membership in AD.
- Navigate to
Administration > System > Admin Access > Administrators > Admin Groups.
- Click
Add
in the table header in order to view the new Admin Group
configuration pane.
- Enter the name for the new Admin group.
- In the
Type
field, check the External
check box.
- From the
External Groups
drop-down list, choose the AD group to which you want this Admin Group to map, as defined in the Select Directory Groups
section.
- Click
Save Changes.
Set RBAC Permissions for the Admin Group
Complete these steps in order to assign RBAC permissions to the Admin Groups created in the previous section:
- Navigate to
Administration > System > Admin Access > Authorization > Policy.
- From the
Actions
drop-down list on the right, choose Insert New Policy
to add a new policy.
- Create a new rule called
AD_Administrator.
Map it with the Admin Group defined in the Enable Administrative Access
for AD section, and assign it permissions.
Note: In this example, the Admin Group called Super Admin is assigned, which is equivalent to the standard admin account.
- Click
Save Changes.
Confirmation of the changes saved are displayed in the lower-right corner of the GUI.
ISE GUI Access with AD Credentials
Complete these steps in order to access the ISE GUI with AD credentials:
- Log out of the administrative GUI.
- Choose AD from the
Identity Source
drop-down list.
- Enter the username and password from the AD database and log in.
Note: ISE defaults to the internal user store in the event that AD is unreachable, or the account credentials used do not exist in AD. This facilitates quick log in if you use the internal store while AD is configured for administrative access.
ISE CLI Access with AD Credentials
Authentication with an external identity source is more secure than with the internal database. RBAC for CLI Administrators
supports an external identity store.
Note: ISE Version 2.6 and later releases only support AD as the external identity source for CLI login.
Manage a single source for passwords without the need to manage multiple password policies and administer internal users within ISE, which results in reduced time and effort.
Prerequisites
You must have defined the Admin user, and added them to an Administrator group. The Admin must be a Super Admin.
Definethe User’s Attributes in the AD User Directory.
On the Windows server that runs Active Directory,
modify the attributes for each user that you plan to configure as a CLI Administrator.
- Open the
Server Manager Window,
and navigate to Server Manager > Roles > Active Directory Domain Services > Active Directory Users and Computers > [ ad.adserver ] <ad_server>.local.
- Enable
Advanced Features
under the View menu so you can edit a user’s attributes.
- Navigate to the AD group that contains the Admin user and find that user.
- Double-click the user to open the
Properties
window and choose the Attribute Editor
.
- Click any attribute and enter
gid
to locate the attribute gidNumber
. If you do not find the gidNumber
attribute, click the Filter
button and uncheck.
Show only attributes that have values.
- Double-click the attribute name to edit each attribute. For each user:
- Assign
uidNumber
greater than 60000, and make sure that the number is unique.
- Assign
gidNumber
as 110 or 111.
- GidNumber 110 denotes an admin user whereas 111 denotes a read-only user.
- Do not change the
uidNumber
after assignment.
- If you modify the
gidNumber
, wait at least five minutes before you make an SSH connection.
Join the Admin CLI User to the AD Domain
Connect to the Cisco ISE CLI, run the identity-store
command, and assign the Admin user to the ID store.
For example, to map the CLI admin user to the Active Directory defined in ISE as isha.global, run this command:
identity-store active-directory domain-name <Domain name> user <AD join username>
When the join is complete, connect to the Cisco ISE CLI and log in as the Admin CLI user to verify your configuration.
If the domain you use in this command was previously joined to the ISE node, then rejoin the domain in the Administrators console.
- In the Cisco ISE GUI, click the
Menu
icon and navigate to Administration > Identity Management > External Identity Sources.
- In the left-hand pane, choose
Active Directory
and choose your AD name.
- In the right-hand pane, the status for your AD connection possibly reads
Operational.
There are errors if you test the connection with Test User with either MS-RPC or Kerberos.
- Verify that you can still log in to the Cisco ISE CLI as the Admin CLI user.
ISE CLI
- Log in to the ISE CLI:
ise30-1/admin# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
ise30-1/admin(config)#
- Join the node to the domain:
ise30-1/admin(config)# identity-store active-directory domain-name isha.global user Administrator
If the domain isha.global
is already joined via UI, then you must rejoin the domain isha.global
from UI after this configuration. Until the rejoin happens, authentications to isha.global
fails.
Do you want to proceed? Y/N
: Y
Password for Administrator:
Joined to domain isha.global successfully.
Notes:
- If the domain is already joined via GUI, then rejoin the node from GUI, otherwise, the authentications against AD continues to fail.
- All nodes must be joined individually via CLI.
Verify
There is currently no verification procedure available for this configuration.
Troubleshoot
Join Issues
Issues during the join operation and the logs related to this can be seen under /var/log/messages file.
Command: show logging system messages
Working Scenario
2021-07-19T21:15:01.457723+05:30 ise30-1 dbus[9675]: [system] Activating via systemd: service name='org.freedesktop.realmd' unit='realmd.service'
2021-07-19T21:15:01.462981+05:30 ise30-1 systemd: Starting Realm and Domain Configuration...
2021-07-19T21:15:01.500846+05:30 ise30-1 dbus[9675]: [system] Successfully activated service 'org.freedesktop.realmd'
2021-07-19T21:15:01.501045+05:30 ise30-1 systemd: Started Realm and Domain Configuration.
2021-07-19T21:15:01.541478+05:30 ise30-1 realmd: * Resolving: _ldap._tcp.isha.global
2021-07-19T21:15:01.544480+05:30 ise30-1 realmd: * Performing LDAP DSE lookup on: 10.127.197.115
2021-07-19T21:15:01.546254+05:30 ise30-1 realmd: * Performing LDAP DSE lookup on: 10.127.197.236
2021-07-19T21:15:01.546777+05:30 ise30-1 realmd: * Successfully discovered: Isha.global
2021-07-19T21:15:09.282364+05:30 ise30-1 realmd: * Required files: /usr/sbin/oddjobd, /usr/libexec/oddjob/mkhomedir, /usr/sbin/sssd, /usr/bin/
2021-07-19T21:15:09.282708+05:30 ise30-1 realmd: * LANG=C LOGNAME=root /usr/bin/net -s /var/cache/realmd/realmd-smb-conf.MU0M60 -U Administrator ads join Isha.global
2021-07-19T21:15:12.701071+05:30 ise30-1 realmd: Enter Administrator's password:DNS update failed: NT_STATUS_INVALID_PARAMETER
2021-07-19T21:15:12.705753+05:30 ise30-1 realmd:
2021-07-19T21:15:12.706142+05:30 ise30-1 realmd: Use short domain name -- ISHA
2021-07-19T21:15:12.706580+05:30 ise30-1 realmd: Joined 'ISE30-1' to dns domain 'Isha.global'
2021-07-19T21:15:12.708781+05:30 ise30-1 realmd: * LANG=C LOGNAME=root /usr/bin/net -s /var/cache/realmd/realmd-smb-conf.MU0M60 -U Administrator ads keytab create
2021-07-19T21:15:13.786749+05:30 ise30-1 realmd: Enter Administrator's password:
2021-07-19T21:15:13.859916+05:30 ise30-1 realmd: * /usr/bin/systemctl enable sssd.service
2021-07-19T21:15:13.870511+05:30 ise30-1 systemd: Reloading.
2021-07-19T21:15:13.870724+05:30 ise30-1 realmd: Created symlink from /etc/systemd/system/multi-user.target.wants/sssd.service to /usr/lib/systemd/system/sssd.service.
2021-07-19T21:15:13.943407+05:30 ise30-1 realmd: * /usr/bin/systemctl restart sssd.service
2021-07-19T21:15:13.956987+05:30 ise30-1 systemd: Starting System Security Services Daemon...
2021-07-19T21:15:14.240764+05:30 ise30-1 sssd: Starting up
2021-07-19T21:15:14.458345+05:30 ise30-1 sssd[be[Isha.global]]: Starting up
2021-07-19T21:15:15.180211+05:30 ise30-1 sssd[nss]: Starting up
2021-07-19T21:15:15.208949+05:30 ise30-1 sssd[pam]: Starting up
2021-07-19T21:15:15.316360+05:30 ise30-1 systemd: Started System Security Services Daemon.
2021-07-19T21:15:15.317846+05:30 ise30-1 realmd: * /usr/bin/sh -c /usr/sbin/authconfig --update --enablesssd --enablesssdauth --enablemkhomedir --nostart && /usr/bin/systemctl enable oddjobd.service && /usr/bin/systemctl start oddjobd.service
2021-07-19T21:15:15.596220+05:30 ise30-1 systemd: Reloading.
2021-07-19T21:15:15.691786+05:30 ise30-1 systemd: Reloading.
2021-07-19T21:15:15.750889+05:30 ise30-1 realmd: * Successfully enrolled machine in realm
Non-Working Scenario
Join failure due to incorrect password:
2021-07-19T21:12:45.487538+05:30 ise30-1 dbus[9675]: [system] Activating via systemd: service name='org.freedesktop.realmd' unit='realmd.service'
2021-07-19T21:12:45.496066+05:30 ise30-1 systemd: Starting Realm and Domain Configuration...
2021-07-19T21:12:45.531667+05:30 ise30-1 dbus[9675]: [system] Successfully activated service 'org.freedesktop.realmd'
2021-07-19T21:12:45.531950+05:30 ise30-1 systemd: Started Realm and Domain Configuration.
2021-07-19T21:12:45.567816+05:30 ise30-1 realmd: * Resolving: _ldap._tcp.isha.global
2021-07-19T21:12:45.571092+05:30 ise30-1 realmd: * Performing LDAP DSE lookup on: 10.127.197.115
2021-07-19T21:12:45.572854+05:30 ise30-1 realmd: * Performing LDAP DSE lookup on: 10.127.197.236
2021-07-19T21:12:45.573376+05:30 ise30-1 realmd: * Successfully discovered: Isha.global
2021-07-19T21:12:52.273667+05:30 ise30-1 realmd: * Required files: /usr/sbin/oddjobd, /usr/libexec/oddjob/mkhomedir, /usr/sbin/sssd, /usr/bin/net
2021-07-19T21:12:52.274730+05:30 ise30-1 realmd: * LANG=C LOGNAME=root /usr/bin/net -s /var/cache/realmd/realmd-smb-conf.R0SM60 -U Administrator ads join Isha.global
2021-07-19T21:12:52.369726+05:30 ise30-1 realmd: Enter Administrator's password:
2021-07-19T21:12:52.370190+05:30 ise30-1 realmd: Failed to join domain: failed to lookup DC info for domain 'Isha.global' over rpc: The attempted logon is invalid. This is either due to a bad username or authentication information.
2021-07-19T21:12:52.372180+05:30 ise30-1 realmd: ! Joining the domain Isha.global failed
Log in Issues
Issues during log in and the logs related to this can be seen under /var/log/secure.
Command: show logging system secure
Successful authentication:
2021-07-19T21:25:10.435849+05:30 ise30-1 sshd[119435]: pam_tally2(sshd:auth): unknown option: no_magic_root
2021-07-19T21:25:10.438694+05:30 ise30-1 sshd[119435]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.227.243.67 user=ad_admin
2021-07-19T21:25:11.365110+05:30 ise30-1 sshd[119435]: pam_sss(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.227.243.67 user=ad_admin
2021-07-19T21:25:11.365156+05:30 ise30-1 sshd[119435]: pam_sss(sshd:auth): received for user ad_admin: 12 (Authentication token is no longer valid; new one required)
2021-07-19T21:25:11.368231+05:30 ise30-1 sshd[119435]: pam_tally2(sshd:account): unknown option: reset
2021-07-19T21:25:11.370223+05:30 ise30-1 sshd[119435]: pam_succeed_if(sshd:account): 'uid' resolves to '60001'
2021-07-19T21:25:11.370337+05:30 ise30-1 sshd[119435]: Accepted password for ad_admin from 10.227.243.67 port 61613 ssh2
2021-07-19T21:25:11.371478+05:30 ise30-1 sshd[119435]: pam_tally2(sshd:setcred): unknown option: no_magic_root
2021-07-19T21:25:11.781374+05:30 ise30-1 sshd[119435]: pam_limits(sshd:session): reading settings from '/etc/security/limits.conf'
2021-07-19T21:25:11.781445+05:30 ise30-1 sshd[119435]: pam_limits(sshd:session): reading settings from '/etc/security/limits.d/20-nproc.conf'
2021-07-19T21:25:11.781462+05:30 ise30-1 sshd[119435]: pam_limits(sshd:session): process_limit: processing soft nproc 4096 for DEFAULT
2021-07-19T21:25:11.781592+05:30 ise30-1 sshd[119435]: pam_unix(sshd:session): session opened for user ad_admin by (uid=0)
2021-07-19T21:25:11.784725+05:30 ise30-1 sshd[121474]: pam_tally2(sshd:setcred): unknown option: no_magic_root
Authentication failure due to incorrect password:
2021-07-19T21:25:10.435849+05:30 ise30-1 sshd[119435]: pam_tally2(sshd:auth): unknown option: no_magic_root
2021-07-19T21:25:10.438694+05:30 ise30-1 sshd[119435]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.227.243.67 user=ad_admin
2021-07-19T21:25:11.365110+05:30 ise30-1 sshd[119435]: pam_sss(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.227.243.67 user=ad_admin
2021-07-19T21:25:11.365156+05:30 ise30-1 sshd[119435]: pam_sss(sshd:auth): received for user ad_admin: 12 (Authentication token is no longer valid; new one required)
2021-07-19T21:25:11.368231+05:30 ise30-1 sshd[119435]: pam_tally2(sshd:account): unknown option: reset
2021-07-19T21:25:11.370223+05:30 ise30-1 sshd[119435]: pam_succeed_if(sshd:account): 'uid' resolves to '60001'
2021-07-19T21:25:11.370337+05:30 ise30-1 sshd[119435]: Accepted password for ad_admin from 10.227.243.67 port 61613 ssh2
2021-07-19T21:25:11.371478+05:30 ise30-1 sshd[119435]: pam_tally2(sshd:setcred): unknown option: no_magic_root
2021-07-19T21:25:11.781374+05:30 ise30-1 sshd[119435]: pam_limits(sshd:session): reading settings from '/etc/security/limits.conf'
2021-07-19T21:25:11.781445+05:30 ise30-1 sshd[119435]: pam_limits(sshd:session): reading settings from '/etc/security/limits.d/20-nproc.conf'
2021-07-19T21:25:11.781462+05:30 ise30-1 sshd[119435]: pam_limits(sshd:session): process_limit: processing soft nproc 4096 for DEFAULT
2021-07-19T21:25:11.781592+05:30 ise30-1 sshd[119435]: pam_unix(sshd:session): session opened for user ad_admin by (uid=0)
2021-07-19T21:25:11.784725+05:30 ise30-1 sshd[121474]: pam_tally2(sshd:setcred): unknown option: no_magic_root
2021-07-19T21:25:56.737559+05:30 ise30-1 sshd[119435]: pam_unix(sshd:session): session closed for user ad_admin
2021-07-19T21:25:56.738341+05:30 ise30-1 sshd[119435]: pam_tally2(sshd:setcred): unknown option: no_magic_root
2021-07-19T21:26:21.375211+05:30 ise30-1 sshd[122957]: pam_tally2(sshd:auth): unknown option: no_magic_root
2021-07-19T21:26:21.376387+05:30 ise30-1 sshd[122957]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.227.243.67 user=ad_admin
2021-07-19T21:26:21.434442+05:30 ise30-1 sshd[122957]: pam_sss(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.227.243.67 user=ad_admin
2021-07-19T21:26:21.434461+05:30 ise30-1 sshd[122957]: pam_sss(sshd:auth): received for user ad_admin: 17 (Failure setting user credentials)
2021-07-19T21:26:21.434480+05:30 ise30-1 sshd[122957]: pam_nologin(sshd:auth): unknown option: debug
2021-07-19T21:26:22.742663+05:30 ise30-1 sshd[122957]: Failed password for ad_admin from 10.227.243.67 port 61675 ssh2
Authentication failure due to invalid user:
2021-07-19T21:28:08.756228+05:30 ise30-1 sshd[125725]: Invalid user Masked(xxxxx) from 10.227.243.67 port 61691
2021-07-19T21:28:08.757646+05:30 ise30-1 sshd[125725]: input_userauth_request: invalid user Masked(xxxxx) [preauth]
2021-07-19T21:28:15.628387+05:30 ise30-1 sshd[125725]: pam_tally2(sshd:auth): unknown option: no_magic_root
2021-07-19T21:28:15.628658+05:30 ise30-1 sshd[125725]: pam_tally2(sshd:auth): pam_get_uid; no such user
2021-07-19T21:28:15.628899+05:30 ise30-1 sshd[125725]: pam_unix(sshd:auth): check pass; user unknown
2021-07-19T21:28:15.629142+05:30 ise30-1 sshd[125725]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.227.243.67
2021-07-19T21:28:15.631975+05:30 ise30-1 sshd[125725]: pam_sss(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.227.243.67 user=isha
2021-07-19T21:28:15.631987+05:30 ise30-1 sshd[125725]: pam_sss(sshd:auth): received for user isha: 10 (User not known to the underlying authentication module)
2021-07-19T21:28:15.631993+05:30 ise30-1 sshd[125725]: pam_nologin(sshd:auth): unknown option: debug
2021-07-19T21:28:17.256541+05:30 ise30-1 sshd[125725]: Failed password for invalid user Masked(xxxxx) from 10.227.243.67 port 61691 ssh2