MIT Kerberose kasutamine Debianiga

Allikas: Kuutõrvaja
Redaktsioon seisuga 23. juuni 2010, kell 12:24 kasutajalt Imre (arutelu | kaastöö) (Sissejuhatus)

Sissejuhatus

Kerberos on SSO süsteem. MIT Kerberos http://web.mit.edu/Kerberos/ on üks Kerberos v5 protokolli http://www.faqs.org/rfcs/rfc1510.html implementatsioon.

Tööpõhimõte

TODO

          ___
         |   | krb5kdc - 88/tcp
         |___| kadmind - 749/tcp
           |
           |
       ----|----------|-------------------------|---
                      |                         |
                    __|__                     __|__
                   |     |                   |     |
                   |_____|                   |_____|
  • võtmejaotuskeskus (ingl. Key Distribution Center, KDC)
  • osapool (ingl. k. principal)
  • pilet (ingl. k. ticket)
  • täpsustus (ingl. k. instance)
  • piletite hankimise pilet (ingl. k. Ticket Granting Ticket, TGT)
  • Generic Security Services Application Programming Interface, GSSAPI

Ettevalmistused

  • Asjaosaliste arvutite nimede päri-ja pöördteisendused peavad lahenema korrektselt.
  • Asjaosaliste arvutite kellaaeg peab olema sama.

Serveri tarkvara paigaldamine

Kerberose serverisse paigaldatakse tavaliselt selline tarkvara

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

Tulemusena paigaldatakse

  • klist (krb5-user) - Kerberose cache'itud ja keytab võtmete esitamise utiliit
  • ktutil (krb5-user) - Kerberose keytab faili haldamise utiliit

Kerberose andmebaasi haldamine

  • Andmebaasi tekitamiseks tuleb öelda
# krb5_newrealm

Kerberose andmebaasi saab hallata kadmin.local programmiga, nt käsuga listprincs saab küsida registreeritud principalide nimekirja

  • Lokaalses arvutis, kasutades otse failisüsteemist Kerberose andmebaasifaili
# kadmin.local 
Authenticating as principal root/admin@AUUL with password.
kadmin.local:  listprincs 
K/M@AUUL
kadmin/admin@AUUL
kadmin/changepw@AUUL
kadmin/history@AUUL
krbtgt/AUUL@AUUL
  • Üle võrgu, kasutades Kerberose andmebaasifaili Kerberose protokolli abil
# kadmin -p root/admin

Selleks, et administraatorid saaksid administreerida, peab fail /etc/krb5kdc/kadm5.acl peab sisaldama rida

*/admin *

keytab faili kasutamine

Keytab failiga töötatakse tavaliselt kolme programmi abil

  • klist - võimaldab keytab faili sisu esitada, st lugeda faili
  • ktutil - võimaldab keytab faili sisu redigeerida, sh kahe faili sisu kokku ühendada
  • kadmin - võimaldab võtmejaotuskeskusest salvestada andmeid keytab faili
klist

Koos krüpto tüübiga keytab faili sisu esitamine

# klist -e -k /etc/krb5.keytab
Keytab name: WRFILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
  3 kadmin/admin@AUUL (AES-256 CTS mode with 96-bit SHA-1 HMAC) 
  3 kadmin/admin@AUUL (ArcFour with HMAC/md5) 
...
ktutil

keytab faili sisu esitamine

# ktutil 
ktutil:  rkt /etc/krb5.keytab
ktutil:  list
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
  1    3                        kadmin/admin@AUUL
  2    3                        kadmin/admin@AUUL
  3    3                        kadmin/admin@AUUL
...

Sisu redigeerimisel peab arvestada, et olemasolevasse faili saab võtmeid ainult lisada. ktutil töötab nii, et ta sisaldab mälus nn slotte kuhu saab laadida keytab failist andmed ning siis mällu laaditud seisu saab salvestada failiks.

kadmin

kadmin on üldiselt Kerberose andmebaasi haldusprogramm, mis muu seal võimaldab andmebaasist salvestada andmeid keytab faili

kadmin: ktadd -k /etc/krb5.keytab root/debian-testing-1.auul
# kadmin -p root/admin -q "ktadd -e des-cbc-crc:normal -k /etc/krb5.keytab nfs/debian-testing-1.auul"

Lisaks saab kadmin abil ka keytab failist andmeid kustutada

kadmin:  ktremove -k /etc/krb5.keytab  nfs/debian-testing-1.auul

Administraatori lisamine

kadmin.local:  addprinc root/admin

Kasutaja lisamine

kadmin.local:  addprinc priit

Hosti lisamine

kadmin.local:  addprinc -randkey host/debian-testing-2.auul

Kliendi tarkvara paigaldamine

# apt-get install krb5-user krb5-clients

Tarkvara paigaldamise käigus küsitakse

  • REALMi nime
  • Kerberose serverite nimesid
  • Kerberose administratiivne (password changing) server

Esitatud andmete põhjal moodustatakse Kerberoses süsteemis osalevale arvutile seadistusfail

/etc/krb5.conf

Kliendi kasutamine

Võtme saamiseks sobib nt öelda

$ kinit
$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: priit@AUUL

Valid starting     Expires            Service principal
06/21/10 00:40:13  06/21/10 10:40:13  krbtgt/AUUL@AUUL
        renew until 06/22/10 00:40:09

kshell

kshell (Kerberized rsh) kasutamiseks, nt teiselt arvutilt küsida keskkonna kohta, sobib öelda

$ krb5-rsh -x debian-kdc env
This rsh session is encrypting input/output data transmissions.
KRB5LOCALADDR=192.168.10.204
TERM=network
SHELL=/bin/bash
USER=priit
KRB5REMOTEPORT=55424
PATH=/usr/bin:/local/bin:/usr/bin:/bin:/usr/local/bin:/usr/bin/X11:.
KRB5LOCALPORT=544
PWD=/home/priit
SHLVL=1
HOME=/home/priit
KRB5REMOTEADDR=192.168.10.205
_=/usr/bin/env

OpenSSH

Selleks, et OpenSSH klient saaks ilma paroolita sisse logida, peab serveri seadistusfailis olema rida

GSSAPIAuthentication yes

Õnnestumisel tekib serveri auth.log faili

Jun 20 17:36:08 debian-testing-kdc sshd[4597]: Authorized to priit, krb5 principal priit@AUUL (krb5_kuserok)
Jun 20 17:36:08 debian-testing-kdc sshd[4597]: Accepted gssapi-with-mic for priit from 192.168.10.205 port 33144 ssh2
Jun 20 17:36:08 debian-testing-kdc sshd[4597]: pam_unix(sshd:session): session opened for user priit by (uid=0)

Pileti kehtivuse pikendamine

Pileti kehtivuse pikendamiseks sobib öelda, kusjuures olemasolev pilet peab veel kehtima

$ kinit -R

Kui püüda pikenda kehtetut piletit saab sellise veateate

kinit: Ticket expired while renewing credentials

Pileti kustutamine

Lõpetamiseks

$ kdestroy

LDAP kasutamine

TODO

Märkused

  • /tmp kataloog peab olema kõigile kirjutatav (nii nagu ta reeglina ka olema peab)

Kasulikud lisamaterjalid