A Kerberos résztvevő-adatbázis replikálása két kiszolgáló között bonyolult lehet, és egy újabb felhasználó-adatbázist ad a hálózatához. Szerencsére a MIT Kerberos beállítható LDAP címtár használatára résztvevő-adatbázisként. Ez a szakasz bemutatja az elsődleges és másodlagos Kerberos kiszolgáló beállítását OpenLDAP használatára résztvevő-adatbázisként.
Első lépésként a szükséges sémát kell betölteni egy OpenLDAP kiszolgálóra, amely rendelkezik hálózati kapcsolattal az elsődleges és másodlagos KDC-khez. A szakasz további része feltételezi, hogy az LDAP replikáció is be van állítva legalább két kiszolgáló között. Az OpenLDAP beállításával kapcsolatos információkért lásd: „OpenLDAP kiszolgáló”.
Szükség van még az OpenLDAP beállítására TLS és SSL kapcsolatokhoz, a KDC és az LDAP-kiszolgáló közötti forgalom titkosításához. A részletekért lásd: „TLS és SSL”.
-
A séma LDAP-ba töltéséhez az LDAP-kiszolgálón telepítse a krb5-kdc-ldap csomagot. Adja ki a következő parancsot:
sudo apt-get install krb5-kdc-ldap
-
Ezután bontsa ki a
kerberos.schema.gz
fájlt: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/
-
A kerberos sémát fel kell venni a cn=config fába. Az új séma slapd-be való felvételének módját a „További beállítások” szakasz ismerteti.
-
Első lépésként hozzon létre egy
schema_convert.conf
vagy hasonló beszédes nevű konfigurációs fájlt, a következő tartalommal: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
-
Hozzon létre egy ideiglenes könyvtárat az LDIF-fájlok tárolásához:
mkdir /tmp/ldif_output
-
Most az slapcat használatával konvertálja a sémafájlokat:
slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}kerberos,cn=schema,cn=config" > /tmp/cn=kerberos.ldif
Módosítsa a fenti fájl- és útvonalneveket a sajátjainak megfelelően.
-
Szerkessze a kapott
/tmp/cn\=kerberos.ldif
fájlt, és módosítsa a következő attribútumokat:dn: cn=kerberos,cn=schema,cn=config ... cn: kerberos
Távolítsa el a következő sorokat a fájl végéről:
structuralObjectClass: olcSchemaConfig entryUUID: 18ccd010-746b-102d-9fbe-3760cca765dc creatorsName: cn=config createTimestamp: 20090111203515Z entryCSN: 20090111203515.326445Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20090111203515Z
Az attribútumértékek eltérők lesznek, győződjön meg róla, hogy eltávolította az attribútumokat.
-
Töltse be az új sémát az ldapadd használatával:
ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn\=kerberos.ldif
-
Vegyen fel indexet a krb5principalname attribútumhoz:
ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password:
dn: olcDatabase={1}hdb,cn=config add: olcDbIndex olcDbIndex: krbPrincipalName eq,pres,sub
modifying entry "olcDatabase={1}hdb,cn=config" -
Végül frissítse a hozzáférés-vezérlési listákat (ACL):
ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password:
dn: olcDatabase={1}hdb,cn=config replace: olcAccess olcAccess: to attrs=userPassword,shadowLastChange,krbPrincipalKey by dn="cn=admin,dc=példa ,dc=hu" 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=példa,dc=hu" write by * read
modifying entry "olcDatabase={1}hdb,cn=config"
-
Ennyi az egész, az LDAP-címtár ezzel készen áll a Kerberos résztvevő-adatbázisként való használatra.
Az OpenLDAP beállítása után ideje beállítani a KDC-t is.
-
Első lépésként telepítse a szükséges csomagokat, adja ki a következő parancsot:
sudo apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap
-
Szerkessze az
/etc/krb5.conf
fájlt, az alábbi beállítások megfelelő szakaszokhoz adásával:[libdefaults] default_realm = PÉLDA.HU ... [realms] PÉLDA.HU = { kdc = kdc01.példa.hu kdc = kdc02.példa.hu admin_server = kdc01.példa.hu admin_server = kdc02.példa.hu default_domain = példa.hu database_module = openldap_ldapconf } ... [domain_realm] .példa.hu = PÉLDA.HU ... [dbdefaults] ldap_kerberos_container_dn = dc=példa,dc=hu [dbmodules] openldap_ldapconf = { db_library = kldap ldap_kdc_dn = "cn=admin,dc=példa,dc=hu" # this object needs to have read rights on # the realm container, principal container and realm sub-trees ldap_kadmind_dn = "cn=admin,dc=példa,dc=hu" # 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 = ldaps://ldap01.példa.hu ldaps://ldap02.példa.hu ldap_conns_per_server = 5 }
A példa.hu, dc=példa,dc=hu, cn=admin,dc=példa,dc=hu és az ldap01.példa.hu helyére a hálózatának megfelelő tartományt, LDAP-objektumot és LDAP-kiszolgálót írja.
-
Ezután a kdb5_ldap_util segédprogrammal hozza létre a tartományt:
sudo kdb5_ldap_util -D cn=admin,dc=példa,dc=hu create -subtrees dc=példa,dc=hu -r PÉLDA.HU -s -H ldap://ldap01.példa.hu
-
Hozzon létre egy stash fájlt az LDAP-kiszolgálóhoz kapcsolódásra használt jelszóval. Ezt a jelszót az
/etc/krb5.conf
fájl ldap_kdc_dn és ldap_kadmin_dn beállításai használják:sudo kdb5_ldap_util -D cn=admin,dc=példa,dc=hu stashsrvpw -f /etc/krb5kdc/service.keyfile cn=admin,dc=példa,dc=hu
-
Másolja át a CA-tanúsítványt az LDAP-kiszolgálóról:
scp ldap01:/etc/ssl/certs/cacert.pem . sudo cp cacert.pem /etc/ssl/certs
Módosítsa az
/etc/ldap/ldap.conf
fájlt a tanúsítvány használatához:TLS_CACERT /etc/ssl/certs/cacert.pem
A tanúsítványt a másodlagos KDC-re is át kell másolni, az LDAP-kiszolgálókhoz LDAPS használatával való kapcsolódás engedélyezéséhez.
Most már felvehet Kerberos résztvevőket az LDAP-adatbázisba, ezek minden más, replikációra beállított LDAP-kiszolgálóra át lesznek másolva. Adja ki a következő parancsot résztvevő hozzáadásához a kadmin.local segédprogrammal:
sudo kadmin.local
Authenticating as principal root/admin@PÉLDA.HU with password.
kadmin.local: addprinc -x dn="uid=geza,ou=emberek,dc=példa,dc=hu" geza
WARNING: no policy specified for geza@PÉLDA.HU; defaulting to no policy
Enter password for principal "geza@PÉLDA.HU":
Re-enter password for principal "geza@PÉLDA.HU":
Principal "geza@PÉLDA.HU" created.
Ezután a uid=geza,ou=emberek,dc=példa,dc=hu felhasználóobjektumhoz meg kell jelenniük a krbPrincipalName, krbPrincipalKey, krbLastPwdChange és krbExtraData attribútumoknak. A kinit és klist segédprogramokkal tesztelheti, hogy a felhasználó valóban kap-e jegyet.
Ha a felhasználóobjektum már létezik, akkor a -x dn="..." kapcsoló szükséges a Kerberos attribútumok hozzáadásához. Ellenkező esetben egy új résztvevőobjektum jön létre a tartomány részfájában. |
A másodlagos KDC beállítása az LDAP-háttérprogram használatára hasonlóan történik a normál Kerberos adatbázist használó beállításához.
-
Első lépésként telepítse a szükséges csomagokat, adja ki a következő parancsot:
sudo apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap
-
Ezután szerkessze az
/etc/krb5.conf
fájlt az LDAP-háttérprogram használata érdekében:[libdefaults] default_realm = PÉLDA.HU ... [realms] PÉLDA.HU = { kdc = kdc01.példa.hu kdc = kdc02.példa.hu admin_server = kdc01.példa.hu admin_server = kdc02.példa.hu default_domain = példa.hu database_module = openldap_ldapconf } ... [domain_realm] .példa.hu = PÉLDA.HU ... [dbdefaults] ldap_kerberos_container_dn = dc=példa,dc=hu [dbmodules] openldap_ldapconf = { db_library = kldap ldap_kdc_dn = "cn=admin,dc=példa,dc=hu" # this object needs to have read rights on # the realm container, principal container and realm sub-trees ldap_kadmind_dn = "cn=admin,dc=példa,dc=hu" # 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 = ldaps://ldap01.példa.hu ldaps://ldap02.példa.hu ldap_conns_per_server = 5 }
-
Hozzon létre stash fájlt az LDAP-hoz kapcsolódásra használt jelszóról:
sudo kdb5_ldap_util -D cn=admin,dc=példa,dc=hu stashsrvpw -f /etc/krb5kdc/service.keyfile cn=admin,dc=példa,dc=hu
-
Ezután az elsődleges KDC-n másolja át az
/etc/krb5kdc/.k5.PÉLDA.HU
elsődleges kulcs stash fájlt a másodlagos KDC-re. Ne feledje a fájlt titkosított kapcsolaton vagy fizikai adathordozón átmásolni.sudo scp /etc/krb5kdc/.k5.PÉLDA.HU geza@kdc02.példa.hu:~ sudo mv .k5.PÉLDA.HU /etc/krb5kdc/
A PÉLDA.HU helyére a tényleges tartományt írja.
-
Végül indítsa el a krb5-kdc démont:
sudo /etc/init.d/krb5-kdc start
Ezzel a hálózatán működő redundáns KDC-kkel és a redundáns LDAP-kiszolgálókkal képes lesz a felhasználók hitelesítésére akkor is, ha az egyik LDAP-kiszolgáló, az egyik Kerberos-kiszolgáló, vagy egy LDAP-kiszolgáló és egy Kerberos-kiszolgáló is elérhetetlenné válik.
-
A Kerberos Admin Guide további részleteket tartalmaz.
-
A kdb5_ldap_util segédprogrammal kapcsolatos további információkért lásd az 5.6-os fejezetet és a kdb5_ldap_util kézikönyvoldalát.
-
Szintén hasznos lehet elolvasni a krb5.conf kézikönyvoldalát.
-
Ezeken kívül nézze még meg a Kerberos és LDAP Ubuntu wiki oldalt.