Installera Kerberos och LDAP server i Debian Jessie: Difference between revisions
Line 161: | Line 161: | ||
Starta om LDAP servern: | Starta om LDAP servern: | ||
{{RootCmd|service slapd restart}} | {{RootCmd|service slapd restart}} | ||
Skapa en fil som heter /root/sasl.ldif med följande innehåll: | |||
{{bc|1= | |||
dn: cn=config | |||
changetype: modify | |||
add: olcSaslHost | |||
olcSaslHost: ns.example.com | |||
- | |||
add: olcSaslRealm | |||
olcSaslRealm: EXAMPLE.COM | |||
- | |||
add: olcSaslSecProps | |||
olcSaslSecProps: noplain,noanonymous | |||
- | |||
replace: olcAuthzRegexp | |||
olcAuthzRegexp: uid=([^/]*),cn=example.com,cn=gssapi,cn=auth uid=$1,ou=people,dc=example,dc=com | |||
- | |||
add: olcAuthzRegexp | |||
olcAuthzRegexp: uid=host/([^/]*).example.com,cn=example.com,cn=gssapi,cn=auth cn=$1,ou=hosts,dc=example,dc=com | |||
- | |||
add: olcAuthzRegexp | |||
olcAuthzRegexp: uid=ldap/admin,cn=example.com,cn=gssapi,cn=auth cn=admin,dc=example,dc=com | |||
}} | |||
[[Category:Guide]] | [[Category:Guide]] |
Revision as of 16:59, 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:
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:
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:
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:
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:
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:
Starta sen om LDAP servern:
LDAP är nu redo att agera backend åt Kerberos.
Installera Kerberos
Installera Kerberos:
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:
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:
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:
Autentisering mot LDAP via Kerberos
Installera SASL:
Skapa först en Kerberos principal för vår LDAP server:
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. Flytta keytab filen och se till att den bara kan användas av openldap användaren:
Editera /etc/default/slapd och lägg till:
export KRB5_KTNAME=/etc/ldap/ldap.keytab
Starta om LDAP servern:
Skapa en fil som heter /root/sasl.ldif med följande innehåll:
dn: cn=config changetype: modify add: olcSaslHost olcSaslHost: ns.example.com - add: olcSaslRealm olcSaslRealm: EXAMPLE.COM - add: olcSaslSecProps olcSaslSecProps: noplain,noanonymous - replace: olcAuthzRegexp olcAuthzRegexp: uid=([^/]*),cn=example.com,cn=gssapi,cn=auth uid=$1,ou=people,dc=example,dc=com - add: olcAuthzRegexp olcAuthzRegexp: uid=host/([^/]*).example.com,cn=example.com,cn=gssapi,cn=auth cn=$1,ou=hosts,dc=example,dc=com - add: olcAuthzRegexp olcAuthzRegexp: uid=ldap/admin,cn=example.com,cn=gssapi,cn=auth cn=admin,dc=example,dc=com