A Kerberos egy megbízható harmadik fél elvére épülő hálózati hitelesítési rendszer. A másik két fél a felhasználó, és az a szolgáltatás, amelyhez a felhasználó be szeretne jelentkezni. Nem minden szolgáltatás és alkalmazás képes Kerberos használatára, de azok számára amelyek igen, a hálózatot egy lépéssel közelebb viszi a Single Sign On (SSO) típusú működéshez.
Ez a szakasz a Kerberos kiszolgáló telepítését és beállítását ismerteti, valamint néhány példa klienskonfigurációt.
Ha még nem használt Kerberost, akkor néhány fogalommal meg kell ismerkednie a Kerberos kiszolgáló beállítása előtt. A legtöbb kifejezés más környezetekből ismerős dolgokhoz kapcsolódik:
-
Résztvevő: minden felhasználót, számítógépet és kiszolgálók által biztosított szolgáltatást Kerberos résztvevőként kell meghatározni.
-
Példányok: szolgáltatás-résztvevők és speciális adminisztratív résztvevők megnevezése.
-
Tartományok: a Kerberos rendszer által biztosított egyedi felügyeleti tartomány. Általában a DNS-tartomány nagybetűssé alakítva (PÉLDA.HU).
-
A kulcsszolgáltató (KDC) három részből áll, az összes résztvevő adatbázisa, a hitelesítési kiszolgáló és a jegymegadási kiszolgáló. Minden tartományhoz legalább egy KDC kell tartozzon.
-
Jegybiztosító jegy: a hitelesítési kiszolgáló (AS) által kiadott jegybiztosító jegy (TGT) a felhasználó jelszavában van titkosítva, amelyet csak a felhasználó és a KDC ismer.
-
A jegykiadó szolgáltatás (TGS) kérésre szolgáltatásjegyeket ad ki a klienseknek.
-
A jegyek megerősítik a két résztvevő személyazonosságát. Az egyik résztvevő a felhasználó, a másik pedig a felhasználó által kért szolgáltatás. A jegyek létrehozzák a hitelesített munkamenet során a biztonságos kommunikációhoz használt titkosított kulcsot.
-
Kulcstáblafájlok: ezek a KDC résztvevő-adatbázisából kinyert fájlok egy szolgáltatás vagy gép titkosítási kulcsát tartalmazzák.
Összefoglalva egy tartománynak legalább egy, de a redundancia érdekében inkább két, résztvevők adatbázisát tartalmazó KDC-vel kell rendelkeznie. Ha egy felhasználó résztvevő bejelentkezik egy Kerberos hitelesítésre beállított munkaállomásra, akkor a KDC kiad egy jegybiztosító jegyet (TGT). Ha a felhasználó által megadott hitelesítési adatok megfelelők, akkor a felhasználó hitelesítve lesz és jegyeket kérhet a Kerberost támogató szolgáltatásokhoz a jegykiadó szolgáltatástól (TGS). A szolgáltatásjegyek lehetővé teszik a felhasználó bejelentkezését a szolgáltatáshoz a felhasználónév és jelszó ismételt megadása nélkül.
A Kerberos kiszolgáló telepítése előtt szükség van egy megfelelően beállított DNS-kiszolgálóra a tartományban. Mivel a Kerberos tartomány megállapodás szerint megegyezik a tartománynévvel, ez a szakasz az „Elsődleges mester” szakaszban beállított példa.hu tartományt használja.
A Kerberos ezen kívül időérzékeny protokoll is. Emiatt ha a helyi rendszeridő a kliensgép és a kiszolgáló között (alapértelmezésben) 5 percnél többel tér el, akkor a munkaállomás nem lesz képes hitelesítésre. A probléma megszüntetése érdekében minden kiszolgálónak a Hálózati időprotokoll (NTP) segítségével kell szinkronizálnia idejét. Az NTP beállításáról lásd: „Időszinkronizálás NTP-vel”.
A Kerberos tartomány telepítésének első lépése a krb5-kdc és krb5-admin-server csomagok telepítése. Adja ki a következő parancsot:
sudo apt-get install krb5-kdc krb5-admin-server
A telepítés végén a program bekéri a tartomány Kerberos és Admin kiszolgálóinak nevét, ezek lehetnek önállóak vagy ugyanaz a kiszolgáló is.
Ezután hozza létre az új tartományt a kdb5_newrealm segédprogrammal:
sudo krb5_newrealm
A telepítés során feltett kérdések segítségével az /etc/krb5.conf
fájl kerül beállításra. Ha módosítania kell a kulcsszolgáltató (KDC) beállításait, akkor szerkessze ezt a fájlt, és indítsa újra a krb5-kdc démont.
-
Miután a KDC működik, egy admin felhasználóra van szükség. Ajánlott a normál felhasználónevétől eltérő felhasználót használni. Ezt a kadmin.local segítségével teheti meg; adja ki a következő parancsot:
sudo kadmin.local
Authenticating as principal root/admin@PÉLDA.HU with password. kadmin.local:
addprinc geza/admin
WARNING: no policy specified for geza/admin@PÉLDA.HU; defaulting to no policy Enter password for principal "geza/admin@PÉLDA.HU": Re-enter password for principal "geza/admin@PÉLDA.HU": Principal "geza/admin@PÉLDA.HU" created. kadmin.local:
quit
A fenti példában geza a résztvevő, az /admin egy példány, a @PÉLDA.HU pedig a tartományt jelzi. A mindennapos résztvevő geza@PÉLDA.HU, és csak normál felhasználói jogai vannak.
A PÉLDA.HU és a geza helyére a saját tartományának és admin felhasználójának nevét írja.
-
Ezután az új admin felhasználónak megfelelő hozzáférés-vezérlési (ACL) jogosultságokra van szüksége. A jogosultságokat az
/etc/krb5kdc/kadm5.acl
fájlban lehet megadni:geza/admin@PÉLDA.HU *
Ez a bejegyzés képessé teszi geza/admin felhasználót tetszőleges művelet végrehajtására a tartomány összes résztvevőjén.
-
Ezután indítsa újra a krb5-admin-server démont az új ACL életbe léptetéséhez:
sudo /etc/init.d/krb5-admin-server restart
-
Az új felhasználó résztvevő a kinit segédprogram használatával tesztelhető:
kinit geza/admin
geza/admin@PÉLDA.HU's Password:
A jelszó megadása után a klist segédprogrammal jeleníthetők meg a jegybiztosító jeggyel (TGT) kapcsolatos információk:
klist
Credentials cache: FILE:/tmp/krb5cc_1000 Principal: geza/admin@PÉLDA.HU Issued Expires Principal Jul 13 17:53:34 Jul 14 03:53:34 krbtgt/PÉLDA.HU@PÉLDA.HU
Szükség lehet egy bejegyzés felvételére az
/etc/hosts
fájlba a KDC-hez. Például:192.168.0.1 kdc01.példa.hu kdc01
A 192.168.0.1 helyére a KDC IP-címét írja.
-
A tartományhoz tartozó KDC kliensek általi lekéréséhez néhány DNS SRV rekord szükséges. Vegye fel a következőket az
/etc/named/db.példa.hu
fájlba:_kerberos._udp.PÉLDA.HU. IN SRV 1 0 88 kdc01.példa.hu. _kerberos._tcp.PÉLDA.HU. IN SRV 1 0 88 kdc01.példa.hu. _kerberos._udp.PÉLDA.HU. IN SRV 10 0 88 kdc02.példa.hu. _kerberos._tcp.PÉLDA.HU. IN SRV 10 0 88 kdc02.példa.hu. _kerberos-adm._tcp.PÉLDA.HU. IN SRV 1 0 749 kdc01.példa.hu. _kpasswd._udp.PÉLDA.HU. IN SRV 1 0 464 kdc01.példa.hu.
A PÉLDA.HU, kdc01 és kdc02 helyére a tartomány, az elsődleges KDC és a másodlagos KDC nevét írja.
A DNS beállításával kapcsolatos részletes utasításokért lásd: 7. fejezet - Tartománynév-szolgáltatás (DNS).
Az új Kerberos tartomány ezzel felkészült a kliensek hitelesítésére.
Miután beüzemelt egy kulcsszolgáltatót a hálózatán, hasznos lehet beállítani egy másodlagos KDC-t is, ha az első elérhetetlenné válna.
-
Első lépésként telepítse a csomagokat, majd a Kerberos és admin kiszolgálók neveinek bekérésekor adja meg az elsődleges KDC nevét:
sudo apt-get install krb5-kdc krb5-admin-server
-
A csomagok telepítése után hozza létre a másodlagos KDC kiszolgáló résztvevőjét. Adja ki a következő parancsot:
kadmin -q "addprinc -randkey host/kdc02.példa.hu"
Ezután a további kadmin parancsok kiadásakor a rendszer bekéri a felhasználónév/admin@PÉLDA.HU résztvevő jelszavát.
-
Másolja le a kulcstábla fájlt:
kadmin -q "ktadd -k keytab.kdc02 host/kdc02.példa.hu"
-
Meg kell jelennie egy
keytab.kdc02
fájlnak az aktuális könyvtárban. Mozgassa ezt a fájlt az/etc/krb5.keytab
helyre:sudo mv keytab.kdc02 /etc/krb5.keytab
Ha a
keytab.kdc02
fájl útvonala eltér, módosítsa értelemszerűen.A klist segédprogrammal ki is írathatja a kulcstáblafájlt, ami hibakereséskor lehet hasznos:
sudo klist -k /etc/krb5.keytab
-
Ezen kívül lennie kell egy
kpropd.acl
fájlnak minden KDC-n, amely felsorolja a tartományban lévő összes KDC-t. Az elsődleges és másodlagos KDC-n is hozza létre az/etc/krb5kdc/kpropd.acl
fájt:host/kdc01.példa.hu@PÉLDA.HU host/kdc02.példa.hu@PÉLDA.HU
-
Hozzon létre egy üres adatbázist a másodlagos KDC-n:
sudo kdb5_util -s create
-
Ezután indítsa el a kpropd démont, amely a kprop segédprogramtól érkező kapcsolatokat figyeli. A kprop a kiíratási fájlok átvitelére használatos:
sudo kpropd -S
-
Az elsődleges KDC-n egy terminálból hozzon létre egy kiíratási fájlt az elsődleges adatbázisból:
sudo kdb5_util dump /var/lib/krb5kdc/dump
-
Másolja ki az elsődleges KDC kulcstábla fájlját, és másolja át az
/etc/krb5.keytab
fájlba:kadmin -q "ktadd -k keytab.kdc01 host/kdc01.példa.hu" sudo mv keytab.kdc01 /etc/kr5b.keytab
A kulcstábla lemásolása előtt győződjön meg róla, hogy a kdc01.példa.hu bejegyzéshez tartozik host.
-
A kprop segédprogrammal vigye át az adatbázist a másodlagos KDC-re:
sudo kprop -r PÉLDA.HU -f /var/lib/krb5kdc/dump kdc02.példa.hu
Ha a másolás sikeres, egy SUCCEEDED üzenet jelenik meg. Ha hibaüzenetet lát, akkor további információkért nézze meg a
/var/log/syslog
fájlt.Hasznos lehet létrehozni egy cron feladatot a másodlagos KDC adatbázisának rendszeres frissítéséhez. A következő például óránként átmásolja az adatbázist:
# m h dom mon dow command 0 * * * * /usr/sbin/kdb5_util dump /var/lib/krb5kdc/dump && /usr/sbin/kprop -r PÉLDA.HU -f /var/lib/krb5kdc/dump kdc02.példa.hu
-
A másodlagos KDC-n hozzon létre egy stash fájlt a Kerberos elsődleges kulcsának tárolásához:
sudo kdb5_util stash
-
Végül indítsa el a krb5-kdc démont a másodlagos KDC-n:
sudo /etc/init.d/krb5-kdc start
A másodlagos KDC-nek ezután képesnek kell lennie jegyek kiadására a tartományhoz. Ez ellenőrizhető az elsődleges KDC krb5-kdc démonjának leállításával, majd egy jegy kérésével a kinit használatával. Ha minden jól megy, meg kell kapnia a jegyet a másodlagos KDC-től.
Ez a szakasz egy Linux rendszer Kerberos kliensként való beállítását ismerteti. Ez lehetővé teszi a Kerberost támogató szolgáltatások elérését, miután a felhasználó sikeresen bejelentkezett a rendszerbe.
Egy Kerberos tartományba való bejelentkezéshez a krb5-user és libpam-krb5 csomagok szükségesek, valamint van néhány nem kötelező, de az életet megkönnyítő csomag is. A telepítésükhöz adja ki a következőt:
sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config
Az auth-client-config csomag lehetővé teszi a PAM egyszerű beállítását több forrásból való bejelentkezéshez, a libpam-ccreds pedig gyorsítótárazza a bejelentkezési személyes adatokat, ezzel lehetővé téve a bejelentkezést akkor is, ha a kulcsszolgáltató (KDC) nem érhető el. Ez a csomag hasznos laptopok használatakor is, amelyeknek képeseknek kell lenniük Kerberos használatával való bejelentkezésre a céges hálózaton, de a hálózatról leválasztva is elérhetőnek kell maradniuk.
A kliens beállításához adja ki a következő parancsot:
sudo dpkg-reconfigure krb5-config
A beállítófelület bekéri a Kerberos tartomány nevét. Ha nincs beállítva DNS a Kerberos SRV rekordjaival, akkor a menü bekéri a kulcsszolgáltató (KDC) és tartományadminisztrációs kiszolgáló gépnevét.
A dpkg-reconfigure a tartomány /etc/krb5.conf
fájljába vesz fel bejegyzéseket. A következőhöz hasonló bejegyzéseket kell látnia:
[libdefaults] default_realm = PÉLDA.HU ... [realms] PÉLDA.HU = } kdc = 192.168.0.1 admin_server = 192.168.0.1 }
A beállításokat tesztelheti egy jegy kérésével a kinit segítségével. Például:
kinit geza@PÉLDA.HU
Password for geza@PÉLDA.HU:
A jegy megadása után a részletei a klist segítségével jeleníthetők meg:
klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: geza@PÉLDA.HU
Valid starting Expires Service principal
07/24/08 05:18:56 07/24/08 15:18:56 krbtgt/PÉLDA.HU@PÉLDA.HU
renew until 07/25/08 05:18:57
Kerberos 4 ticket cache: /tmp/tkt1000
klist: You have no tickets cached
Ezután az auth-client-config segítségével állítsa be a libpam-krb5 modult jegy kérésére a bejelentkezés során:
sudo auth-client-config -a -p kerberos_example
A sikeres bejelentkezés után meg kell kapnia a jegyet.
-
A Kerberossal kapcsolatos további információkért lásd a MIT Kerberos oldalát.
-
Az Ubuntu wiki Kerberos oldala további részleteket tartalmaz.
-
Az O'Reilly Kerberos: The Definitive Guide című könyve remek referencia a Kerberos telepítésekor.
-
A Freenode #ubuntu-server IRC csatornáján is kérhet segítséget, ha a Kerberossal kapcsolatos kérdései vannak.