LDAPS (LDAP over TLS/SSL)

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Wo sind wir?

Wir befinden uns auf dem LDAP Server.
Dort kommt KEY und CERT rein.

Wir holen uns ein Zertifkat une ein Schlüssel

Sie liegen unter /etc/ssl/

Das Zertifilat
/etc/ssl/own.crt
Der private Schlüssel
/etc/ssl/own.key

Rechte für den slapd anpassen

Der User openldap muss den privaten Schlüssel lesen können:

  • chown openldap:openldap /etc/ssl/own.crt /etc/ssl/own.key
  • chmod 640 /etc/ssl/own.key

LDIF-Datei für die TLS-Konfiguration erstellen

  • vi /root/tls_config.ldif
dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/own.crt
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/own.key

Konfiguration einspielen

Die Änderung direkt in die cn=config schreiben:

  • ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f /root/tls_config.ldif

Ports in /etc/default/slapd anpassen

Sicherstellen, dass ldaps aktiviert ist:

SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"

Dienst neu starten

  • systemctl restart slapd

Ports prüfen

  • ss -4lntp | grep slapd
LISTEN 0      2048         0.0.0.0:636       0.0.0.0:*    users:(("slapd",pid=788,fd=10))
LISTEN 0      2048         0.0.0.0:389       0.0.0.0:*    users:(("slapd",pid=788,fd=7))

Funktionstest

Prüfen, ob der Server das Zertifikat auf Port 636 ausliefert:

  • openssl s_client -connect ldap.it213.int:636 -showcerts

Nun zu den Clients

Funktionstest

Prüfen, ob der Server das Zertifikat auf Port 636 ausliefert:

  • openssl s_client -connect ldap.it213.int:636 -showcerts

SSSD Konfiguration auf TLS umstellen

Da der Server nun Zertifikate ausliefert, wird die Verschlüsselung auf den Clients in der aktiviert:

  • vi /etc/sssd/sssd.conf
[sssd]
config_file_version = 2
services = nss, pam, sudo
domains = it213.int
[domain/it213.int]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = permit
sudo_provider = ldap
ldap_uri = ldaps://ldap.it213.int
dns_discovery_domain = it213.int
ldap_search_base = dc=it213,dc=int
ldap_sudo_search_base = ou=sudo,dc=it213,dc=int
ldap_default_bind_dn = cn=admin,dc=it213,dc=int
ldap_default_authtok = 123Start$
cache_credentials = True
ldap_id_use_start_tls = false
# ldap_auth_disable_tls_never_use_in_production = true
ldap_tls_reqcert = hard
[nss]
filter_users = root,daemon,bin,sys,sync,games,man,lp,mail,news,uucp,proxy,www-data,backup,list,irc,gnats,nobody,systemd-network,systemd-resolve,messagebus,_apt,uuidd,nslcd
filter_groups = root,daemon,bin,sys,adm,tty,disk,lp,mail,news,uucp,man,proxy,kmem,dialout,fax,voice,cdrom,floppy,tape,sudo,audio,dip,www-data,backup,operator,list,irc,src,gnats,shadow,utmp,video,sasl,plugdev,staff,games,users,nogroup,systemd-journal,systemd-network,systemd-resolve,input,kvm,render,crontab,netdev,messagebus,_apt,uuidd,ssh,nslcd
[pam]
offline_credentials_expiration = 2

[nss] filter_users = root,daemon,bin,sys,sync,games,man,lp,mail,news,uucp,proxy,www-data,backup,list,irc,gnats,nobody,systemd-network,systemd-resolve,messagebus,_apt,uuidd,nslcd filter_groups = root,daemon,bin,sys,adm,tty,disk,lp,mail,news,uucp,man,proxy,kmem,dialout,fax,voice,cdrom,floppy,tape,sudo,audio,dip,www-data,backup,operator,list,irc,src,gnats,shadow,utmp,video,sasl,plugdev,staff,games,users,nogroup,systemd-journal,systemd-network,systemd-resolve,input,kvm,render,crontab,netdev,messagebus,_apt,uuidd,ssh,nslcd

[pam] offline_credentials_expiration = 2

Dienst neu starten

Damit die TLS-Einstellungen geladen werden:

  • systemctl restart sssd

Verbindungstest

Prüfen, ob die Benutzerauflösung über den verschlüsselten Kanal weiterhin funktioniert:

  • getent passwd thomas

Status prüfen

Falls es Probleme gibt, hilft das SSSD-Tool:

  • sssctl domain-status it213.int