Below is the sample configuration to get UM-Ad intigation via LDAP (replace the contents of /ec/nslcd.conf with what is appropriate in your environment.
root@photon-machine [ /etc ]# cat /etc/nslcd.conf
uid nslcd
gid ldap
uri ldap://ntitta.lab
base dc=ntitta,dc=lab
binddn CN=service,CN=Users,DC=ntitta,DC=lab
bindpw P@ssw0rd
pagesize 1000
filter passwd (&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*))
map passwd uid sAMAccountName
map passwd homeDirectory unixHomeDirectory
map passwd gecos displayName
filter shadow (&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*))
map shadow uid sAMAccountName
map shadow shadowLastChange pwdLastSet
filter group (objectClass=group)
cat /etc/nsswitch.conf
hosts: files resolve dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
passwd: files ldap
group: files ldap
shadow: files ldap
cat /etc/pam.d/system-auth
# Begin /etc/pam.d/system-auth
auth required pam_env.so
auth required pam_tally2.so onerr=fail deny=3 unlock_time=900 root_unlock_time=900 file=/var/log/tallylog
auth sufficient pam_ldap.so
auth required pam_unix.so
auth optional pam_faildelay.so delay=4000000
cat /etc/pam.d/system-account
# Begin /etc/pam.d/system-account
account sufficient pam_ldap.so
account required pam_tally2.so file=/var/log/tallylog
account required pam_unix.so
# End /etc/pam.d/system-account
cat /etc/pam.d/system-password
# Begin /etc/pam.d/system-password
password sufficient pam_ldap.so try_first_pass
password requisite pam_cracklib.so minlen=10 minclass=4 difok=4 maxsequence=0 retry=3 enforce_for_root
password requisite pam_pwhistory.so retry=3 remember=5 enforce_for_root
password required pam_unix.so sha512 shadow use_authtok
# End /etc/pam.d/system-password
cat /etc/pam.d/system-session
# Begin /etc/pam.d/system-session
session required pam_unix.so
session required pam_limits.so
session optional pam_motd.so
session optional pam_lastlog.so showfailed
session optional pam_systemd.so
session optional pam_ldap.so
# End /etc/pam.d/system-session
cat /etc/pam.d/vmware-um-pam
auth sufficient /lib64/security/pam_ldap.so
auth required /lib64/security/pam_unix_auth.so
account sufficient /lib64/security/pam_ldap.so
account required /lib64/security/pam_unix_acct.so
aside from this, NSLCD also needs some pre-requisites for the user that is used to log in, This is described here: https://www.server-world.info/en/note?os=Windows_Server_2019&p=active_directory&f=12
basically the below attributes must exist on ad for the user in question:
uid sAMAccountName
uidNumber objectSid:<yourValue>
gidNumber primaryGroupID
homeDirectory "/home/$sAMAccountName"
gecos displayName
loginShell "/bin/bash"
gidNumber primaryGroupID
Note:
- uid must be uniq for a user and should not be associated with any existing user in UM appliance, see getent passwd for the full list of used uids
- gid must exist in the UM appliance before configuring AD. Use it to control what kind of privileges you want to give to the user. In most case use the usgemeger gid 1002
Note: Making changes to /etc/pam.d generally needs a reboot to take effect. Once the above config are in place, reboot the appliance and try login in
Note: If you move the original config files and create new files, please ensure the permissions of the files are corrected.
If configured correctly and when the user is attempted to log in on the UI, you should see the same domain user mapped in getent passwd
root@photon-machine [ /etc ]# getent passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
daemon:x:6:6:Daemon User:/dev/null:/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
systemd-bus-proxy:x:72:72:systemd Bus Proxy:/:/bin/false
systemd-journal-gateway:x:73:73:systemd Journal Gateway:/:/bin/false
systemd-journal-remote:x:74:74:systemd Journal Remote:/:/bin/false
systemd-journal-upload:x:75:75:systemd Journal Upload:/:/bin/false
systemd-network:x:76:76:systemd Network Management:/:/bin/false
systemd-resolve:x:77:77:systemd Resolver:/:/bin/false
systemd-timesync:x:78:78:systemd Time Synchronization:/:/bin/false
nobody:x:65534:65533:Unprivileged User:/dev/null:/bin/false
sshd:x:50:50:sshd PrivSep:/var/lib/sshd:/bin/false
named:x:999:999::/var/lib/bind:/bin/false
polkitd:x:27:1000:PolicyKit Daemon Owner:/etc/polkit-1:/bin/false
nslcd:x:998:998:nslcd ldap user:/:/usr/sbin/nologin
ntp:x:87:87:Network Time Protocol:/var/lib/ntp:/bin/false
usagemeter:x:1000:1002::/home/usagemeter:/bin/bash
umauditor:x:1001:1003::/home/umauditor:/bin/bash
test:*:5000:1002:test:/home/test:/bin/bash <---------this is the domain user
I’m facing strange behavior where LDAP connection kind of flakers. Even login with usagemeter account is sometimes slow
“getent passwd” sometimes shows LDAP users, after certain time they disappear, later on they are available again. Even when I’m able to use LDAP account authentication is really slow. Any idea how can I troubleshoot it?