LDAP Kerberos Passwortspeicher

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
joe2017
Beiträge: 148
Registriert: 07.08.2017 14:29:51

Re: LDAP Kerberos Passwortspeicher

Beitrag von joe2017 » 07.08.2018 09:52:46

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.

joe2017
Beiträge: 148
Registriert: 07.08.2017 14:29:51

Re: LDAP Kerberos Passwortspeicher

Beitrag von joe2017 » 07.08.2018 11:45:34

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

Code: Alles auswählen

LDAP-Server-1.domain.net
sudo reboot

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 ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f /folder/logging.ldif

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
sudo systemctl restart syslog.service

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 -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

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
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 ###

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 ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /tmp/cn\=kerberos.ldif

sudo ldapmodify -Q -Y EXTERNAL -H ldapi:///

Code: Alles auswählen

dn: olcDatabase={1}mdb,cn=config
add: olcDbIndex
olcDbIndex: krbPrincipalName eq,pres,sub
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:///

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
KERBEROS SETUP
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 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

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	*
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

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 ldapmodify -Y EXTERNAL -H ldapi:/// -f /folder/certinfo.ldif

sudo nano /etc/default/slapd

Code: Alles auswählen

# SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
SLAPD_SERVICES="ldaps:///"
sudo service slapd restart

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 service slapd restart
sudo systemctl start krb5-kdc.service
sudo systemctl start krb5-admin-server.service

Antworten