KerberosAndLDAP
Debian
The guide I followed was https://wiki.debian.org/LDAP/OpenLDAPSetup#Kerberos which while it worked required some minor tweaks. I obtained edit privileges for the Debian Wiki and updated the guide with the fixes that I found. I however have a Synology NAS and that can run an LDAP Server. So this guide differs a little from the upstream Debian Guide.
First, install the packages containing the LDAP-enabled Kerberos servers (krb5-kdc-ldap and krb5-admin-server) and the schema2ldif tool:
$ sudo apt install krb5-kdc-ldap krb5-admin-server schema2ldif
Then load the kerberos schema:
$ zcat /usr/share/doc/krb5-kdc-ldap/kerberos.openldap.ldif.gz | ldapadd -H ldap:~/~/nas.fqdn/ -D uid=root,cn=users,dc=example,dc=com Password: adding new entry "cn=kerberos,cn=schema,cn=config" $
And add an index on the krbPrincipalName (improves performance and also suppresses some log messages if slapd is configured to log more than default) for the database(s) where you intend to store Kerberos data:
# ldapmodify -H ldap:~/~/nas.fqhn <<EOF dn: olcDatabase={1}bdb,cn=config add: olcDbIndex olcDbIndex: krbPrincipalName eq,pres,sub EOF modifying entry "olcDatabase={1}bdb,cn=config"
Next, you need to create and configure two entries which will be used by the Kerberos servers to connect to OpenLDAP. If you are running Kerberos and OpenLDAP on the same system, these steps are optional, but recommended. In order to keep things nicely separated, everything will be created under a separate organizationalUnit. Note that a simple bind (-x -D) is used instead of an EXTERNAL bind since write access to the dc=example,dc=com DIT is necessary:
# ldapadd -x -D cn=admin,dc=example,dc=com -W <<EOF dn: ou=Services,dc=example,dc=com objectClass: organizationalUnit objectClass: top ou: Services dn: ou=kerberos,ou=Services,dc=example,dc=com objectClass: organizationalUnit objectClass: top ou: kerberos dn: uid=kdc,ou=kerberos,ou=Services,dc=example,dc=com uid: kdc objectClass: account objectClass: simpleSecurityObject userPassword: {CRYPT}x description: Kerberos KDC Account dn: uid=kadmin,ou=kerberos,ou=Services,dc=example,dc=com uid: kadmin objectClass: account objectClass: simpleSecurityObject userPassword: {CRYPT}x description: Kerberos Admin Server Account EOF Enter LDAP Password: SECRET adding new entry "ou=Services,dc=example,dc=com" adding new entry "ou=kerberos,ou=Services,dc=example,dc=com" adding new entry "uid=kdc,ou=kerberos,ou=Services,dc=example,dc=com" adding new entry "uid=kadmin,ou=kerberos,ou=Services,dc=example,dc=com"