LDAP Kerberos Passwortspeicher (SASL)
Re: LDAP Kerberos Passwortspeicher
Ich habe jetzt einige Seiten zu SASL gelesen. Ich habe das Gefühl, dass folgende Seite nicht den vollen Umfang beschreibt
http://labs.opinsys.com/blog/2010/03/16 ... sing-sasl/
Ich muss sagen, dass dieses Thema etwas verwirrend für mich ist.
Die Installation von LDAP und (MIT) Kerberos war eigentlich überschaubar. Hier habe ich aktuell auch keine Probleme. Meine Services funktionieren auch. Jedoch eben nur mit den getrennten Passwörtern. So wie ich das sehe, ist SASL die richtige Vorgehensweise um den LDAP Benutzern mitzuteilen, dass die Passwörter im Kerberos hinterlegt sind. Irgendwie hakt es hierbei noch etwas. Hat jemand eine gute Anleitung für Debian 9.5.0. Hierbei bräuchte ich leider etwas Unterstützung.
http://labs.opinsys.com/blog/2010/03/16 ... sing-sasl/
Ich muss sagen, dass dieses Thema etwas verwirrend für mich ist.
Die Installation von LDAP und (MIT) Kerberos war eigentlich überschaubar. Hier habe ich aktuell auch keine Probleme. Meine Services funktionieren auch. Jedoch eben nur mit den getrennten Passwörtern. So wie ich das sehe, ist SASL die richtige Vorgehensweise um den LDAP Benutzern mitzuteilen, dass die Passwörter im Kerberos hinterlegt sind. Irgendwie hakt es hierbei noch etwas. Hat jemand eine gute Anleitung für Debian 9.5.0. Hierbei bräuchte ich leider etwas Unterstützung.
Re: LDAP Kerberos Passwortspeicher
Anbei meine LDAP Kerberos Installation. Ich hoffe das hilft.
Ich habe natürlich einige Inhalte (Servername, IP, Domain) angepasst. Ich habe hier jetzt auch nur den Primary LDAP/Kerberos aufgelistet. Der Secondary LDAP/Kerberos wird bis auf die Replication identisch installiert. Es wäre prima wenn ich das mit dem Passwortspeicher im Kerberos noch irgendwie hinbekommen könnte. Ich hab jetzt schon dutzende Seiten hierzu durchgelesen und komme nicht wirklich weiter damit. Alles was ich bisher getestet habe funktioniert nicht. Ich habe auf jeden Fall einen Snapshot meiner Virtuellen Maschine.
LDAP PRIMARY
sudo nano /etc/hostname
sudo reboot
sudo apt -y install slapd ldap-utils
sudo nano /folder/logging.ldif
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f /folder/logging.ldif
sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.1st
sudo nano /etc/rsyslog.conf
sudo systemctl restart syslog.service
REPLICATION - PROVIDER
sudo nano /folder/provider_sync.ldif
sudo -u openldap mkdir /var/lib/ldap/accesslog
sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /folder/provider_sync.ldif
KERBEROS SCHEMA IMPORT
sudo apt install -y krb5-kdc krb5-admin-server krb5-kdc-ldap
sudo gzip -d /usr/share/doc/krb5-kdc-ldap/kerberos.schema.gz
sudo cp /usr/share/doc/krb5-kdc-ldap/kerberos.schema /etc/ldap/schema/
sudo nano /folder/schema_convert.conf
mkdir /tmp/ldif_output
sudo slapcat -f /folder/schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}kerberos,cn=schema,cn=config" > /tmp/cn=kerberos.ldif
sudo nano /tmp/cn\=kerberos.ldif ### DELETE ###
sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /tmp/cn\=kerberos.ldif
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:///
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:///
KERBEROS SETUP
sudo cp /etc/krb5.conf /etc/krb5.conf.1st
sudo nano /etc/krb5.conf
sudo kdb5_ldap_util -D cn=admin,dc=domain,dc=net create -subtrees \ dc=domain,dc=net -r domain.NET -s -H ldap://LDAP-Server-1.domain.net
sudo kdb5_ldap_util -D cn=admin,dc=domain,dc=net stashsrvpw -f /etc/krb5kdc/service.keyfile cn=admin,dc=domain,dc=net
sudo nano /etc/krb5kdc/kadm5.acl
sudo /etc/init.d/krb5-admin-server restart
LDAP SSL/TLS
sudo apt install ssl-cert
sudo chgrp openldap /etc/ssl/private/LDAP-Server-1_ecdsa_re.key.pem
sudo chmod 0640 /etc/ssl/private/LDAP-Server-1_ecdsa_re.key.pem
sudo gpasswd -a openldap ssl-cert
sudo systemctl restart slapd.service
sudo nano /folder/certinfo.ldif
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /folder/certinfo.ldif
sudo nano /etc/default/slapd
sudo service slapd restart
sudo nano /etc/ldap/ldap.conf
sudo service slapd restart
sudo systemctl start krb5-kdc.service
sudo systemctl start krb5-admin-server.service
Ich habe natürlich einige Inhalte (Servername, IP, Domain) angepasst. Ich habe hier jetzt auch nur den Primary LDAP/Kerberos aufgelistet. Der Secondary LDAP/Kerberos wird bis auf die Replication identisch installiert. Es wäre prima wenn ich das mit dem Passwortspeicher im Kerberos noch irgendwie hinbekommen könnte. Ich hab jetzt schon dutzende Seiten hierzu durchgelesen und komme nicht wirklich weiter damit. Alles was ich bisher getestet habe funktioniert nicht. Ich habe auf jeden Fall einen Snapshot meiner Virtuellen Maschine.
LDAP PRIMARY
sudo nano /etc/hostname
Code: Alles auswählen
LDAP-Server-1.domain.net
sudo apt -y install slapd ldap-utils
sudo nano /folder/logging.ldif
Code: Alles auswählen
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.1st
sudo nano /etc/rsyslog.conf
Code: Alles auswählen
# add to the end....
# Disable rate limiting
# (default is 200 messages in 5 seconds; below we make the 5 become 0)
$SystemLogRateLimitInterval 0
REPLICATION - PROVIDER
sudo nano /folder/provider_sync.ldif
Code: Alles auswählen
# Add indexes to the frontend db.
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN eq
-
add: olcDbIndex
olcDbIndex: entryUUID eq
#Load the syncprov and accesslog modules.
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov
-
add: olcModuleLoad
olcModuleLoad: accesslog
# Accesslog database definitions
dn: olcDatabase={2}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {2}mdb
olcDbDirectory: /var/lib/ldap/accesslog
olcSuffix: cn=accesslog
olcRootDN: cn=admin,dc=domain,dc=net
olcDbIndex: default eq
olcDbIndex: entryCSN,objectClass,reqEnd,reqResult,reqStart
# Accesslog db syncprov.
dn: olcOverlay=syncprov,olcDatabase={2}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE
olcSpReloadHint: TRUE
# syncrepl Provider for primary db
dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE
# accesslog overlay definitions for primary db
dn: olcOverlay=accesslog,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcAccessLogConfig
olcOverlay: accesslog
olcAccessLogDB: cn=accesslog
olcAccessLogOps: writes
olcAccessLogSuccess: TRUE
# scan the accesslog DB every day, and purge entries older than 7 days
olcAccessLogPurge: 07+00:00 01+00:00
sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /folder/provider_sync.ldif
KERBEROS SCHEMA IMPORT
sudo apt install -y krb5-kdc krb5-admin-server krb5-kdc-ldap
sudo gzip -d /usr/share/doc/krb5-kdc-ldap/kerberos.schema.gz
sudo cp /usr/share/doc/krb5-kdc-ldap/kerberos.schema /etc/ldap/schema/
sudo nano /folder/schema_convert.conf
Code: Alles auswählen
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/kerberos.schema
sudo slapcat -f /folder/schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}kerberos,cn=schema,cn=config" > /tmp/cn=kerberos.ldif
sudo nano /tmp/cn\=kerberos.ldif ### DELETE ###
Code: Alles auswählen
structuralObjectClass: olcSchemaConfig
entryUUID: 18ccd010-746b-102d-9fbe-3760cca765dc
creatorsName: cn=config
createTimestamp: 20090111203515Z
entryCSN: 20090111203515.326445Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20090111203515Z
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:///
Code: Alles auswählen
dn: olcDatabase={1}mdb,cn=config
add: olcDbIndex
olcDbIndex: krbPrincipalName eq,pres,sub
Code: Alles auswählen
dn: olcDatabase={1}mdb,cn=config
replace: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,krbPrincipalKey by dn="cn=admin,dc=domain,dc=net" write by anonymous auth by self write by * none
-
add: olcAccess
olcAccess: to dn.base="" by * read
-
add: olcAccess
olcAccess: to * by dn="cn=admin,dc=domain,dc=net" write by * read
sudo cp /etc/krb5.conf /etc/krb5.conf.1st
sudo nano /etc/krb5.conf
Code: Alles auswählen
[libdefaults]
default_realm = DOMAIN.NET
...
[realms]
domain.NET = {
kdc = LDAP-Server-1.domain.net
kdc = LDAP-Server-2.domain.net
admin_server = LDAP-Server-1.domain.net
admin_server = LDAP-Server-2.domain.net
default_domain = domain.net
database_module = openldap_ldapconf
}
...
[domain_realm]
.domain.net = DOMAIN.NET
domain.net = DOMAIN.NET
...
[dbdefaults]
ldap_kerberos_container_dn = cn=krbContainer,dc=domain,dc=net
[dbmodules]
openldap_ldapconf = {
db_library = kldap
ldap_kdc_dn = "cn=admin,dc=domain,dc=net"
# this object needs to have read rights on
# the realm container, principal container and realm sub-trees
ldap_kadmind_dn = "cn=admin,dc=domain,dc=net"
# this object needs to have read and write rights on
# the realm container, principal container and realm sub-trees
ldap_service_password_file = /etc/krb5kdc/service.keyfile
# ldap_servers = ldap://LDAP-Server-1.domain.net ldap://LDAP-Server-2.domain.net
ldap_servers = ldaps://LDAP-Server-1.domain.net ldaps://LDAP-Server-2.domain.net
ldap_conns_per_server = 5
}
sudo kdb5_ldap_util -D cn=admin,dc=domain,dc=net stashsrvpw -f /etc/krb5kdc/service.keyfile cn=admin,dc=domain,dc=net
sudo nano /etc/krb5kdc/kadm5.acl
Code: Alles auswählen
# This file is the access control list for krb5 administration.
# When this file is edited run /etc/init.d/krb5-admin-server restart to activate
# One common way to set up Kerberos administration is to allow any principal
# ending in /admin is given full administrative rights.
# To enable this, uncomment the following line:
*/admin@domain.NET *
LDAP SSL/TLS
sudo apt install ssl-cert
sudo chgrp openldap /etc/ssl/private/LDAP-Server-1_ecdsa_re.key.pem
sudo chmod 0640 /etc/ssl/private/LDAP-Server-1_ecdsa_re.key.pem
sudo gpasswd -a openldap ssl-cert
sudo systemctl restart slapd.service
sudo nano /folder/certinfo.ldif
Code: Alles auswählen
dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/ca.int_ecdsa.crt.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/LDAP-Server-1_ecdsa.crt.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/LDAP-Server-1_ecdsa_re.key.pem
sudo nano /etc/default/slapd
Code: Alles auswählen
# SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
SLAPD_SERVICES="ldaps:///"
sudo nano /etc/ldap/ldap.conf
Code: Alles auswählen
BASE dc=domain,dc=net
URI ldaps://LDAP-IP-1 ldaps://LDAP-IP-2
TLS_CACERT /etc/ssl/certs/ca.int_ecdsa.crt.pem
TLS_REQCERT never
sudo systemctl start krb5-kdc.service
sudo systemctl start krb5-admin-server.service
Re: LDAP Kerberos Passwortspeicher
Guten Morgen zusammen,
hat hier keiner einen Tipp für mich? Es wäre wirklich toll wenn ich das Problem mit SASL noch lösen könnte. Ich komm hier irgendwie nicht weiter.
Ich habe mir jetzt noch einmal das Thema LDAP Kerberos und Passwortspeicher angeschaut. Auf folgender Seite https://wiki.ubuntuusers.de/Kerberos/LDAP/wird beschrieben, dass LDAP als KDC ungleich einfacher wäre als SASL - Kerberos als Passwordspeicher. Genau so habe ich meinen LDAP/Kerberos auch installiert. Jedoch habe ich immer noch unterschiedliche Passwörter in LDAP und Kerberos. Können diese nicht synchronisiert werden. Bzw. nur in einem Benutzer hinterlegt werden?
hat hier keiner einen Tipp für mich? Es wäre wirklich toll wenn ich das Problem mit SASL noch lösen könnte. Ich komm hier irgendwie nicht weiter.
Ich habe mir jetzt noch einmal das Thema LDAP Kerberos und Passwortspeicher angeschaut. Auf folgender Seite https://wiki.ubuntuusers.de/Kerberos/LDAP/wird beschrieben, dass LDAP als KDC ungleich einfacher wäre als SASL - Kerberos als Passwordspeicher. Genau so habe ich meinen LDAP/Kerberos auch installiert. Jedoch habe ich immer noch unterschiedliche Passwörter in LDAP und Kerberos. Können diese nicht synchronisiert werden. Bzw. nur in einem Benutzer hinterlegt werden?
Re: LDAP Kerberos Passwortspeicher (SASL)
Also ich bin echt amverzweifeln. Hat denn niemand eine Installation von einem LDAP Server mit einem MIT Kerberos Server und SASL durchgeführt? Ich bekomme die Installation des SASL (pass through authentication) nicht hin.
Re: LDAP Kerberos Passwortspeicher (SASL)
So ich bin jetzt schon mal einen kleinen Schritt weiter.
Ich habe nach der Installation von LDAP und Kerberos (auf einem Server) folgendes Setup durchgeführt.
sudo apt install libsasl2-modules-gssapi-mit
sudo kadmin -p admin/admin
addprinc -randkey ldap/LDAP-Server-1.domain.net
ktadd -k /etc/ldap/ldap.keytab ldap/LDAP-Server-1.domain.net
exit
sudo klist -e -k /etc/ldap/ldap.keytab
sudo chown openldap. /etc/ldap/ldap.keytab
sudo nano /etc/default/slapd
sudo /etc/init.d/slapd restart
sudo nano /tmp/sasl.ldif
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/sasl.ldif
Auf meinem Client hab ich zusätzlich zu der Client Installation von LDAP und Kerberos folgendes durchgeführt.
sudo apt install libsasl2-modules-gssapi-mit
sudo kadmin -p admin/admin
addprinc -randkey host/client.domain.net
ktadd host/client.domain.net
sudo nano /etc/ldap/ldap.conf
Das sieht eigentlich alles gut aus. Ich habe auch schon diverse Tests durchgeführt.
ldapwhoami
kdestroy
klist
kinit ldap-username
klist
Das funktioniert schon mal alles.
Womit ich noch Probleme habe, sind die unterschiedlichen Passwörter von LDAP und Kerberos. Eigentlich sollte ich das LDAP Passwort doch jetzt nicht mehr benötigen oder?
Mein user verwendet jetzt doch die SASL/GSSAPI authentication (username@DOMAIN.NET)
Ich habe nach der Installation von LDAP und Kerberos (auf einem Server) folgendes Setup durchgeführt.
sudo apt install libsasl2-modules-gssapi-mit
sudo kadmin -p admin/admin
addprinc -randkey ldap/LDAP-Server-1.domain.net
ktadd -k /etc/ldap/ldap.keytab ldap/LDAP-Server-1.domain.net
exit
sudo klist -e -k /etc/ldap/ldap.keytab
sudo chown openldap. /etc/ldap/ldap.keytab
sudo nano /etc/default/slapd
Code: Alles auswählen
export KRB5_KTNAME=/etc/ldap/ldap.keytab
sudo nano /tmp/sasl.ldif
Code: Alles auswählen
dn: cn=config
changetype: modify
add: olcSaslHost
olcSaslHost: LDAP-Server-1.domain.net
-
add: olcSaslRealm
olcSaslRealm: DOMAIN.NET
-
add: olcAuthzRegexp
olcAuthzRegexp: {0}"uid=([^/]*),cn=GSSAPI,cn=auth" "uid=$1,ou=Users,dc=domain,dc=net"
-
add: olcAuthzRegexp
olcAuthzRegexp: {1}"uid=([^/]*),cn=realm,cn=GSSAPI,cn=auth" "uid=$1,ou=Users,dc=domain,dc=net"
-
add: olcAuthzRegexp
olcAuthzRegexp: {2}"uid=host/([^/]*).realm,cn=realm,cn=gssapi,cn=auth" "cn=$1,ou=Hosts,dc=domain,dc=net"
Auf meinem Client hab ich zusätzlich zu der Client Installation von LDAP und Kerberos folgendes durchgeführt.
sudo apt install libsasl2-modules-gssapi-mit
sudo kadmin -p admin/admin
addprinc -randkey host/client.domain.net
ktadd host/client.domain.net
sudo nano /etc/ldap/ldap.conf
Code: Alles auswählen
SASL_MECH GSSAPI
ldapwhoami
kdestroy
klist
kinit ldap-username
klist
Das funktioniert schon mal alles.
Womit ich noch Probleme habe, sind die unterschiedlichen Passwörter von LDAP und Kerberos. Eigentlich sollte ich das LDAP Passwort doch jetzt nicht mehr benötigen oder?
Mein user verwendet jetzt doch die SASL/GSSAPI authentication (username@DOMAIN.NET)
Re: LDAP Kerberos Passwortspeicher (SASL)
Ich hab jetzt folgende Konfiguration gefunden. Hier wurden die LDAP Benutzer ohne Passwort angelet und die Kerberos Benutzer mit einem Passwort. Dies funktioniert soweit auch.
Folgendes Szenario habe ich in Firefox und Thunderbird getestet.
Wenn ich z.B. einen WebDAV (Apache) Server aufsetzte und diverse Bereiche nur einer bestimmten LDAP Gruppe zugänglich mache, wird immer nach einem Benutzer/Passwort gefragt. Hier sollte einfach der angemeldete Kerberos Benutzer verwendet werden. Ist das eine Einstellung im LDAP/Kerberos, in meinem WebDAV Server oder sogar nur eine Client Einstellung in Firefox/Thunderbird.
Zur Information. Meine LDAP Gruppen-Berechtigungen auf meinem NFS4 Server funktionieren einwandfrei nach der Anmeldung. Hier darf nur der User auf einen Ordner zugreifen wenn er auch in der freigegebenen LDAP Gruppe gelistet ist.
Ich vermute fast, dass dieses Problem bei Firefox/Thunderbird zu suchen ist.
Folgendes Szenario habe ich in Firefox und Thunderbird getestet.
Wenn ich z.B. einen WebDAV (Apache) Server aufsetzte und diverse Bereiche nur einer bestimmten LDAP Gruppe zugänglich mache, wird immer nach einem Benutzer/Passwort gefragt. Hier sollte einfach der angemeldete Kerberos Benutzer verwendet werden. Ist das eine Einstellung im LDAP/Kerberos, in meinem WebDAV Server oder sogar nur eine Client Einstellung in Firefox/Thunderbird.
Zur Information. Meine LDAP Gruppen-Berechtigungen auf meinem NFS4 Server funktionieren einwandfrei nach der Anmeldung. Hier darf nur der User auf einen Ordner zugreifen wenn er auch in der freigegebenen LDAP Gruppe gelistet ist.
Ich vermute fast, dass dieses Problem bei Firefox/Thunderbird zu suchen ist.