LDAP heeft bij ons lang gewerkt gewoon cleartext op het netwerk. Niet het grootste beveiligingsprobleem ter wereld maar er zijn andere mogelijkheden. Onlangs is communicatie met de daemon zo opgezet dat authenticatie over TLS gebeurt.
Om logins te enablen over LDAP/TLS zijn een aantal onderdelen nodig.
Hangt af van het aanpassen van /etc/pam.d/common-auth,en /etc/pam.d/common-passwd. (op debian, op andere distributies is de configuratie hetzelfde, maar waarschijnlijk in andere files)
/etc/pam.d/common-auth
auth [[success=1|default=ignore]] pam_unix.so auth required pam_ldap.so use_first_pass auth required pam_permit.so
Wat doet dat? Eerst probeert hij in te loggen via pam_unix, wat eigenlijk inloggen is met gewoon lokaal passw/shadow file. Wanneer dat niet lukt negeert hij het resultaat en probeert pam_ldap die bij de ldap server zal checken. Als dat niet werkt hebben we failure. De pam_permit.so is nodig om remote als root in te kunnen loggen.
Eigenlijk moet het volgende dus in common-password. Momenteel staat er spijtig genoeg wat junk in passwd. Dit zou allemaal vervangen moeten worden door het volgende in common-password, dat dan kan geinclude worden vanuit passwd.
/etc/pam.d/common-password
password sufficient pam_ldap.so
Alles onder ubuntu zit onder /etc/ldap.conf. Onder Debian kan het zijn dat /etc/pam_ldap.conf en /etc/libnss-ldap.conf moeten aangepast worden.
Een minimale file volgt, vul het gewoon het skelet dat al aanwezig is op dezelfde manier in, let op de lokatie van de .crt file die je zelf moet overkopiëren!
- The distinguished name of the search base. base dc=zeus,dc=ugent,dc=be - Another way to specify your LDAP server is to provide an - uri with the server name. This allows to use - Unix Domain Sockets to connect to a local LDAP Server. uri ldap://cartman.sp/ - The LDAP version to use (defaults to 3 - if supported by client library) ldap_version 3 - The port. - Optional: default is 389. port 389 - don't hash the password pam_password md5 - use tls ssl start_tls - Require and verify server certificate (yes/no) tls_checkpeer yes - CA certificates for server certificate verification tls_cacertfile /etc/ldap/zeus_ca.crt
Vinden van user enzo moet dan ook vanuit ldap. Pas gewoon /etc/nsswitch.conf aan waarbij de eerste drie lijnen zijn:
passwd: compat ldap group: compat shadow: compat ldap