7.4 - Creazione del database di Kerberos


Per creare il database principale si può usare il comando kdb5_util:

# /opt/krb5/sbin/kdb5_util create -r SPARTACO.IT -s Initializing database '/opt/krb5/var/krb5kdc/principal' for realm 'SPARTACO.IT', master key name 'K/M@SPARTACO.IT' You will be prompted for the database Master Password. It is important that you NOT FORGET this password.

A questo punto viene richiesta una password per il database che stiamo creando.

Enter KDC database master key: Re-enter KDC database master key to verify:

l'opzione "-r" indica il dominio, mentre "-s" serve per creare un file "stash" usato dal per "autenticarsi".

L'accesso al database è regolato dai permessi che sono indicati nel file "kadm5.acl", in questo file ogni riga specifica un utente oppure un gruppo di utenti nella forma userid/istanza@REALM è possibile usare caratteri speciali come "*" il cui significato è noto.

Il formato esatto è:

 Kerberos principal		permission 		optional target principal

"Permission" è una stringa che indica i permessi dell'utente (o dell'insieme di utenti) specificato nella voce Kerberos principal", mentre "optional target" indica un eventuale sottoinsieme di "principal" a cui applicare i permessi indicati, per esempio:

kadm.acl:

*/admin@SPARTACO.IT 	*	* 

questa riga da a tutti gli utenti con l'istanza admin tutti i permessi sul database
mentre la riga:

giomas@SPARTACO.IT	ali	*/amici@SPARTACO.IT
da al principal "giomas" il diritto di fare interrogazioni, listare e aggiungere utenti dell'istanza "amici" i possibili permessi sono:
"a"	permette l'aggiunta di nuovi principal
"d"	permette la cancellazione di principal
"m"	permette la modifica di principal
"c"	permette il cambio di password di un principal
"i"	permette le interrogazioni sul database
"l"	permette la visualizzazione dei principal
"*"	abilità tutte le opzioni suddette

il complemento di ogni opzione può essere ottenuto con la corrispondente lettera maiuscola, quindi per negare ogni permesso si può usare "ADMCIL"

L'amministrazione remota è fatta con il software "kadmin". Questo software usa RPC e l'autenticazione Kerberos, e per partecipare al processo di autenticazione ha bisogno di una chiave segreta che deve essere nota al KDC e ad esso stesso.

Tutti i servizi, compreso il servizio di amministrazione, memorizzano la loro chiave segreta in un file chiamato "keytab", il cui nome esatto e la collocazione vengono indicate nel file di configurazione.

In particolare il servizio kadmin usa i principal "kadmin/admin" e "kadmin/changepw", creati automaticamente durante la creazione del db.

Per poter permettere l'uso di kadmin da una macchina remota dovremo quindi aggiungere una entrata per kadmin/admin e kadmin/changepw al file keytab locale, e dovremo farlo su ogni machina dalla quale intendiamo usare kadmin e dall'host principale.

il procedimento è identico sia che si lavori in locale con kadmin.local sia che si lavori da una postazione remota, in particolare da kadmin usiamo il comando ktadd:

# /opt/krb5/sbin/kadmin.local kadmin: ktadd -k /opt/krb5/var/krb5kdc/kadm5.keytab kadmin/admin kadmin/changepw Entry for principal kadmin/admin with kvno 4, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/opt/krb5/var/krb5kdc/kadm5.keytab. Entry for principal kadmin/admin with kvno 4, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/opt/krb5/var/krb5kdc/kadm5.keytab. Entry for principal kadmin/changepw with kvno 4, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/opt/krb5/var/krb5kdc/kadm5.keytab. Entry for principal kadmin/changepw with kvno 4, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/opt/krb5/var/krb5kdc/kadm5.keytab. kadmin.local: quit

Editiamo il file /etc/services per includere i seguenti servizi kerberizzati:


#Kerberos (Project Athena/MIT) services
#
kerberos 	88/udp 		kdc	# Kerberos 5 kdc
kerberos	88/tcp 		kdc	# Kerberos 5 kdc
klogin		543/tcp			# Kerberos rlogin -kfall
kshell 		544/tcp 	krcmd	# Kerberos remote shell -kfall
krb5_prop 	754/tcp			# Kerberos v5 slave propagation
kerberos-adm 	749/tcp			# Kerberos v5 admin/chpwd
kerberos-adm 	749/udp			# Kerberos v5 admin/chpwd
eklogin 	2105/tcp		# Kerberos encrypted rlogin -kfall
kpasswd 	761/tcp 	kpwd	# Kerberos "passwd" -kfall
ktelnet 	545/tcp			# Kerberized telnet v4/v5
kftp-data 	546/tcp			# Kerberized ftp data V5
kftp 		547/tcp			# Kerberized ftp v5

Questa lista mostra tutti i servizi disponibili, il key server dovrebbe essere il solo servizio sulla macchina server gli altri servizi servono agli host kerberizzati.


Avviare i Server