Installera Kerberos och LDAP server i Debian Jessie

From Peters wiki
Jump to navigation Jump to search

Denna artikel beskriver hur man installerar Kerberos och OpenLDAP i Debian Jessie. Kerberos kommer att använda LDAP som backend. Vi kommer använda ns.example.com som FQDN för vår server och vår Kerberos realm EXAMPLE.COM i exemplen.

Målet är att kunna autentisera sig mot Kerberos och hämta användaruppgifter ifrån LDAP.

Förberedelser

Kerberos kräver att klockan går rätt, så se till att ha fungerande NTP server. Kerberos kräver också både uppslagning via IP adress och via namn, så se till att ditt nätverk funkar tillfredsställande innan du börjar. I Debian kan denna rad i /etc/hosts med fördel kommenteras bort:

127.0.1.1    server.example.com    server

Installera LDAP server med Kerberos schema

Installera:

root # apt-get install slapd ldap-utils libsasl2-modules-gssapi-mit krb5-kdc-ldap

Ange LDAP administrator lösenord, realm EXAMPLE.SE och ns.example.com både som din key admin server och KDC. Kontrollera efteråt att du kan köra kommandot:

root # ldapsearch -Y EXTERNAL -H ldapi:// -b cn=config

Och att uppgifterna stämmer. Bl.a. ska du se:

# {1}mdb, config
dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=example,dc=com
olcRootDN: cn=admin,dc=example,dc=com
...

Kopiera och packa upp Kerberos schemat:

root # cp /usr/share/doc/krb5-kdc-ldap/kerberos.schema.gz /etc/ldap/schema
root #
gunzip /etc/ldap/schema/kerberos.schema.gz

För att konvertera schemat till en LDIF fil, skapa filen /root/schema_convert.conf med innehållet:

include /etc/ldap/schema/kerberos.schema

Kör sedan kommandona:

root # mkdir /tmp/ldif_output
root #
slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={0}kerberos,cn=schema,cn=config" > /tmp/cn=kerberos.ldif

Editera sedan filen /tmp/cn=kerberos.ldif och ta bort {0}kerberos på de 2 ställen i början så filen ser ut så här:

dn: cn=kerberos,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: kerberos

Och ta bort raderna på slutet som ser ungefär ut så här:

structuralObjectClass: olcSchemaConfig
entryUUID: 56a8f4dc-9010-1034-8ba0-a1e47b1e0717
creatorsName: cn=config
createTimestamp: 20150516121051Z
entryCSN: 20150516121051.173689Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20150516121051Z

Addera schemat till LDAP:

root # ldapadd -Y EXTERNAL -H ldapi:// -f /tmp/cn\=kerberos.ldif

Sista steget blir att addera ett index för krbPrincipalName attributet och justera ACL (Access Control List). Skapa en fil som t.ex heter /root/krb5.ldif med innehållet:

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: krbPrincipalName eq,pres,sub
-
replace: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,krbPrincipalKey by dn="cn=admin,dc=example,dc=com" 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=example,dc=com" write by * read

Kör kommandot:

root # ldapmodify -Y EXTERNAL -H ldapi:// -f /root/krb5.ldif

LDAP är nu redo att agera backend åt Kerberos.