Installera Kerberos och LDAP server i Debian Jessie: Difference between revisions

From Peters wiki
Jump to navigation Jump to search
mNo edit summary
Line 142: Line 142:
== Autentisering mot LDAP via Kerberos ==
== Autentisering mot LDAP via Kerberos ==
Skapa först en Kerberos principal för vår LDAP server:
Skapa först en Kerberos principal för vår LDAP server:
{{RootCmd|kadmin.local
{{RootCmd|kadmin.local}}
|addprinc -randkey ldap/ns.example.com@EXAMPLE.COM
Kör sedan dessa 2 kommandon:
|ktadd -k /root/ldap.keytab ldap/ns.example.com@EXAMPLE.COM
{{bc|1=
addprinc -randkey ldap/ns.example.com@EXAMPLE.COM
ktadd -k /root/ldap.keytab ldap/ns.example.com@EXAMPLE.COM
}}
}}
 
Avslut kadmin med kommandot q.




[[Category:Guide]]
[[Category:Guide]]

Revision as of 16:48, 16 May 2015

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

Starta sen om LDAP servern:

root # service slapd restart

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

Installera Kerberos

Installera Kerberos:

root # apt-get install krb5-admin-server krb5-kdc

Editera /etc/krb5.conf så att den innehåller:

[libdefaults]
	default_realm = EXAMPLE.COM

[realms]
	EXAMPLE.COM = {
		kdc = ns.example.com
		admin_server = ns.example.com
		default_domain = example.com
		database_module = openldap_ldapconf
	}

[domain_realm]
	.example.com = EXAMPLE.COM
        example.com = EXAMPLE.COM

[dbdefaults]
        ldap_kerberos_container_dn = cn=krbcontainer,dc=example,dc=com

[dbmodules]
        openldap_ldapconf = {
                db_library = kldap
        	ldap_kdc_dn = "cn=admin,dc=example,dc=com"
        	ldap_kadmind_dn = "cn=admin,dc=example,dc=com"
        	ldap_service_password_file = /etc/krb5kdc/service.keyfile
        	ldap_servers = ldapi://
        	ldap_conns_per_server = 5
	}

Editera /etc/krb5kdc/kdc.conf och lägg till raderna:

[realms]
    EXAMPLE.COM = {
        ...
        database_module = openldap_ldapconf
    }

[dbmodules]
    openldap_ldapconf = {
        db_library = kldap
        ldap_kdc_dn = "cn=admin,dc=example,dc=com"
	ldap_kadmind_dn = "cn=admin,dc=example,dc=com"
        ldap_service_password_file = /etc/krb5kdc/service.keyfile
        ldap_servers = ldapi://
        ldap_conns_per_server = 5
    }

Skapa din realm EXAMPLE.COM:

root # kdb5_ldap_util -D cn=admin,dc=example,dc=com create -subtrees dc=example,dc=com -r EXAMPLE.COM -s -H ldapi://

Ange ditt LDAP admin lösenord och ange välj sedan ett KDC master-key lösenord. Skapa sen en gömma med LDAP admin lösenordet så Kerberos kan ansluta till LDAP servern:

root # kdb5_ldap_util -D cn=admin,dc=example,dc=com stashsrvpw -f /etc/krb5kdc/service.keyfile cn=admin,dc=example,dc=com

Här behöver du först ange ditt LDAP admin lösenord och sen för att allt ska fungera, så ska du igen ange samma lösenord till gömman. Starta nu om Kerberos:

root # service krb5-admin-server restart
root #
service krb5-kdc restart

Autentisering mot LDAP via Kerberos

Skapa först en Kerberos principal för vår LDAP server:

root # kadmin.local

Kör sedan dessa 2 kommandon:

addprinc -randkey ldap/ns.example.com@EXAMPLE.COM
ktadd -k /root/ldap.keytab ldap/ns.example.com@EXAMPLE.COM

Avslut kadmin med kommandot q.