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