Table of Contents

Installazione Realm Kerberos in Laboratorio

NOTA BENE Gli esempi citati in questa guida si intendono per MIT Kerberos 5 versione 1.6 su Scientific Linux 5.1.

Descrizione dell'ambiente di test

Nel nostro laboratorio abbiamo un dominio example.com e n sottodomini dn.example.com. Le macchine che costituiscono il laboratorio sono:

kdc.example.com: KDC del realm EXAMPLE.COM e DNS di example.com

client.example.com: client Kerberizzato appartenente al realm EXAMPLE.COM

server.example.com: server applicativo Kerberizzato appartenente al realm EXAMPLE.COM

lab1.d1.example.com: KDC del realm D1.EXAMPLE.COM e DNS di d1.example.com

lab2.d2.example.com: KDC del realm D2.EXAMPLE.COM e DNS di d2.example.com

….

….

….

labn.dn.example.com: KDC del realm Dn.EXAMPLE.COM e DNS di dn.example.com

Per necessità logistiche gli studenti implementeranno il server kdc, il server applicativo ed il client sulla stessa macchina.

Preparazione del sistema

[root@kdc ~]$ yum install krb5-server

Configurazione client e librerie K5

[root@client ~]$ vi /etc/krb5.conf

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = DN.EXAMPLE.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 forwardable = yes

[realms]
 DN.EXAMPLE.COM = {
  kdc = kerberos.dn.example.com:88
  admin_server = kerberos.dn.example.com:749
  default_domain = dn.example.com
 }

[domain_realm]
 .dn.example.com = DN.EXAMPLE.COM
 dn.example.com = DN.EXAMPLE.COM

[appdefaults]
 pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
 }

Configurazione del KDC (Key Distribution Center)

[root@kdc ~]$ vi /var/kerberos/krb5kdc/kdc.conf

[kdcdefaults]
 v4_mode = nopreauth
 kdc_tcp_ports = 88

[realms]
 DN.EXAMPLE.COM = {
  #master_key_type = des3-hmac-sha1
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  supported_enctypes = des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal des-cbc-crc:v4 des-cbc-crc:afs3
 }

Creazione del database per il REALM DN.EXAMPLE.COM

[root@kdc ~]$ kdb5_util create -s

Avviamento dei servizi che caratterizzano un KDC

[root@kdc ~]$ service krb5kdc start

[root@kdc ~]$ service kadmin start

[root@kdc ~]$ service krb524 start

Creare il primo utente amministratore del REALM

[root@kdc ~]$ kadmin.local

kadmin.local: listprincs

kadmin.local: addprinc admin/admin

Impostazione delle ACL di amministratore

[root@labn ~]$ vi /var/kerberos/krb5kdc/kadm5.acl

Creare un utente non privilegiato

[root@kdc ~]$ kinit admin/admin

[root@kdc ~]$ kadmin

kadmin: addprinc user1

Creare la chiave di servizio per la macchina labn.dn.example.com nel database del KDC

[root@kdc ~]$ kadmin

kadmin: addprinc -randkey host/labn.dn.example.com

Inserire la chiave di servizio nella keytable del server applicativo

[root@server ~]$ kinit admin/admin

[root@server ~]$ kadmin

kadmin: ktadd host/labn.dn.example.com

kadmin: exit

Kerberizzazione del servizio ssh mediante le librerie GSSAPI

[root@server ~] vi /etc/ssh/sshd_config

GSSAPIAuthentication yes

GSSAPICleanupCredentials yes (elimina il ticket alla chiusura della sessione ssh)

[root@server ~]$ service sshd restart

Kerberizzazione del client

[root@client ~]$ vi /etc/ssh/ssh_config

GSSAPIDelegateCredentials yes (abilita il client ssh al forwarding del ticket)

Inserimento di un utente nel database di autorizzazione

[root@server ~]$ adduser -m user1

Test di utilizzo dell’account Kerberos con ssh

[root@client ~]$ kinit -F user1

[root@client ~]$ klist

[root@client ~]$ ssh user1@labn.dn.example.com

[user1@server ~]$ klist (la cache delle credenziali è vuota)

[user1@server ~]$ exit

[root@client ~]$ kdestroy

[root@client ~]$ kinit user1

[root@client ~]$ klist -f

[root@client ~]$ ssh user1@labn.dn.example.com

[user1@server ~]$ klist -f (notare che il TGT è ancora forwardabile)

[user1@server ~]$ exit

Configurazione dei moduli PAM per l’autenticazione con Kerberos 5

[root@server ~]$ authconfig --update --enablekrb5
[root@server ~]$ vi /etc/pam.d/system-auth (aggiungere validate)

la riga delle pam dovrà apparire come segue:

auth        sufficient    pam_krb5.so use_first_pass validate

Verifica del telnet kerberizzato

[root@server ~]$ vi /etc/xinetd.d/krb5-telnet (verificare che disable = no)

[root@server ~]$ service xinetd restart

[root@client ~]$ telnet -f -a -l user1 labn.dn.example.com

[user1@server ~]$ exit

Configurazione del DNS del dominio example.com per i servizi Kerberos 5

[root@kdc ~]$ vi /var/named/data/dn.example.com

_kerberos IN TXT "DN.EXAMPLE.COM"

_kerberos._udp IN SRV 0 0 88 kerberos

_kerberos._tcp IN SRV 0 0 88 kerberos

_kerberos-master._udp IN SRV 0 0 88 kerberos

_kerberos-adm._tcp IN SRV 0 0 749 kerberos

_kpasswd._udp IN SRV 0 0 464 kerberos

Inserire inoltre il CANME:

kerberos IN CNAME labn

Configurazione della Cross Realm Authentication

Cross autenticazione diretta tra i domini DN.EXAMPLE.COM e DM.EXAMPLE.COM

su entrambi i kdc dei domini N e M:

aggiungere i principal krbtgt/DM.EXAMPLE.COM@DN.EXAMPLE.COM e krbtgt/DN.EXAMPLE.COM@DM.EXAMPLE.COM, lo stesso principal DEVE avere stesse password, kvno e enctype su i due kdc, controllarlo con il comando "getprinc".

kadmin: getprinc krbtgt/DM.EXAMPLE.COM@DN.EXAMPLE.COM

Cross autenticazione gerarchica tra i domini N e M passando per EXAMPLE.COM

Si tratta semplicemente di fare cross autenticazione diretta tra il kdc di EXAMPLE.COM e i kdc dei domini DN.EXAMPLE.COM e DM.EXAMPLE.COM

Quindi sui kdc di ogni dominio DN.EXAMPLE.COM dobbiamo aggiungere i due principal krbtgt/EXAMPLE.COM@DN.EXAMPLE.COM e krbtgt/DN.EXAMPLE.COM@EXAMPLE.COM e questi stessi principal vanno aggiunti sul kdc.example.com facendo attenzione che le password relative a stessi principal creati sui due kdc diversi siano identiche!

Scegliamo tutti la password: klab per tutte le chiavi su tutti i domini

[root@kdc ~]$ kadmin.local

kadmin: addprinc krbtgt/EXAMPLE.COM@DN.EXAMPLE.COM

kadmin: addprinc krbtgt/DN.EXAMPLE.COM@EXAMPLE.COM

kadmin: getprinc krbtgt/EXAMPLE.COM@DN.EXAMPLE.COM (Controlliamo le kvno e gli enctype per entrambi i principal)

Lo stesso andrà fatto sui labn e labm.

Configurazione del client per la cross authentication

[root@client ~]$ vi /etc/krb5.conf

dns_lookup_kdc = true

Autorizzazione in ssh

[root@labn ~]$ vi /home/user1/.k5login

user1@DM.EXAMPLE.COM

[root@labn ~]$ chown user1:user1 /home/user1/.k5login

A questo punto l'utente user1 del dominio DM.EXAMPLE.COM potrà fare login ssh sul sitema labn.dn.example.com

[root@labm ~]$ ssh user1@labn.dn.example.com

[user1@labn ~]$

http://www.kerberos.org/index.html

http://www.kerberos.org/software/tutorial.html

http://www.zeroshell.net/kerberos/

http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/Deployment_Guide/ch-kerberos.html