User Tools

Site Tools


cn:ccr:aai:howto:krb5-lab-install

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
cn:ccr:aai:howto:krb5-lab-install [2009/12/01 16:39]
roberto.lulli@roma2.infn.it
cn:ccr:aai:howto:krb5-lab-install [2009/12/02 08:48] (current)
roberto.lulli@roma2.infn.it
Line 1: Line 1:
 +====== 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//​
 +<​code>​
 +[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
 + }
 +</​code>​
 +
 +===== Configurazione del KDC (Key Distribution Center) =====
 +
 +[root@kdc ~]$ //vi /​var/​kerberos/​krb5kdc/​kdc.conf// ​
 +
 +<​code>​
 +[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
 + }
 +</​code>​
 +
 +===== 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 ~]$
 +
 +
 +===== Link utili =====
 +
 +[[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]]
cn/ccr/aai/howto/krb5-lab-install.txt · Last modified: 2009/12/02 08:48 by roberto.lulli@roma2.infn.it