Kerberos

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.

Áttekintés

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.

Kerberos kiszolgáló

Telepítés

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

Beállítás

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.

  1. 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.

    [Megjegyzés]

    A PÉLDA.HU és a geza helyére a saját tartományának és admin felhasználójának nevét írja.

  2. 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.

  3. 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
    
  4. 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.

  5. 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.
    
    [Megjegyzés]

    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.

Másodlagos KDC

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.

  1. 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
    
  2. 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"
    
    [Megjegyzés]

    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.

  3. Másolja le a kulcstábla fájlt:

    kadmin -q "ktadd -k keytab.kdc02 host/kdc02.példa.hu"
    
  4. 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
    
    [Megjegyzés]

    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
    
  5. 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
    
  6. Hozzon létre egy üres adatbázist a másodlagos KDC-n:

    sudo kdb5_util -s create
    
  7. 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
    
  8. 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
    
  9. 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
    
    [Megjegyzés]

    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.

  10. 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
    
    [Megjegyzés]

    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
    
  11. 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
    
  12. 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.

Kerberos Linux kliens

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.

Telepítés

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.

Beállítás

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.

Információforrások

  • 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.