Manuale di Sun Enterprise Authentication Mechanism

Amministrazione del database di Kerberos

Il database di Kerberos è la struttura portante del sistema di autenticazione e deve essere amministrato correttamente. Questa sezione descrive alcune delle procedure necessarie per amministrare il database di Kerberos, tra cui il backup e il ripristino del database, la configurazione di una propagazione parallela e l'amministrazione del file segreto. La procedura per la configurazione iniziale del database è descritta in "Configurare un KDC master".

Backup e propagazione del database di Kerberos

La propagazione del database di Kerberos dal KDC master ai KDC slave è una delle operazioni di configurazione più importanti. Se la propagazione non viene eseguita con una frequenza sufficiente, il KDC master e i KDC slave rischiano di non essere sincronizzati; in questo caso, se il KDC master dovesse arrestarsi, i KDC slave non disporranno delle informazioni più recenti del database. Inoltre, se un KDC slave è stato configurato come master per scopi di bilanciamento dei carichi, i client che utilizzano questo slave come KDC master non disporranno delle informazioni più recenti. Per queste ragioni, è importante impostare la propagazione con una frequenza sufficiente in base alla frequenza delle modifiche effettuate al database di Kerberos.

Durante la configurazione del KDC master, lo script kprop_script viene inserito in un lavoro cron perché esegua automaticamente il backup del database di Kerberos nel file /var/krb5/slave_datatrans e lo propaghi ai KDC slave. Può accadere, tuttavia, che il database di Kerberos venga danneggiato. Se questo accade su uno dei KDC slave, tale danneggiamento può passare completamente inosservato, poiché la successiva propagazione automatica del database ne installerà una nuova copia. Se invece il file viene danneggiato sul KDC master, il database danneggiato verrà copiato su tutti i server slave durante la propagazione successiva, e il backup danneggiato sovrascriverà la copia corretta precedente sul KDC master.

Poiché questo scenario non prevede l'esistenza di una copia di backup "sicura", è consigliabile configurare un lavoro cron che copi periodicamente il file slave_datatrans in un'altra posizione, o che crei una copia di backup separata usando il comando dump di kdb5_util. In questo modo, se il database dovesse essere danneggiato, sarà possibile ripristinare il backup più recente sul KDC master usando il comando load di kdb5_util.

Un altro aspetto importante da osservare è che, poiché il file di salvataggio del database contiene le chiavi dei nomi principali, è necessario proteggere questo file dagli accessi non autorizzati (nella configurazione predefinita, il file di salvataggio del database ha le autorizzazioni di lettura/scrittura solo per l'utente root). Questo significa che si dovrà usare solo il comando kprop per propagare il file di archiviazione del database, il quale esegue una cifratura dei dati trasferiti. Inoltre, kprop propaga i dati solo ai KDC slave, riducendo la probabilità che il file del database venga inviato accidentalmente a un host non autorizzato.


Avvertenza - Avvertenza -

Se il database di Kerberos viene aggiornato dopo essere stato propagato e il file del database viene danneggiato prima della propagazione successiva, gli slave non conterranno gli aggiornamenti, che andranno perduti. Per questa ragione, se vengono effettuate numerose modifiche al database diverso tempo prima di una propagazione pianificata, è consigliabile propagare il database manualmente per evitare la perdita di dati.


File kpropd.acl

Il file kpropd.acl di un KDC contiene un elenco di nomi principali di host, uno per riga, che specifica i sistemi da cui il KDC può ricevere un database aggiornato attraverso il meccanismo di propagazione. Se si utilizza il KDC master per propagare il database a tutti i KDC slave, il file kpropd.acl di ogni slave dovrà contenere solo il nome principale dell'host del master.

Tuttavia, l'installazione di SEAM e le successive procedure di configurazione descritte in questo manuale permettono di aggiungere lo stesso file kpropd.acl sia al KDC master che ai KDC slave. Il file contiene tutti i nomi principali degli host KDC. Questa configurazione permette di propagare il database da qualunque KDC, nel caso in cui i KDC designati perla propagazione diventino temporaneamente indisponibili. Inoltre, la presenza di una copia identica del file su tutti i KDC ne facilita la manutenzione.

Comando kprop_script

Il comando kprop_script utilizza il comando kprop per propagare il database di Kerberos ad altri KDC. (Se kprop_script viene eseguito su un KDC slave, esso propagherà la copia del database di Kerberos di quello slave agli altri KDC.) kprop_script può accettare come argomenti un elenco di nomi host, separati da spazi, che denotino i KDC su cui eseguire la propagazione.

L'esecuzione di kprop_script crea una copia di backup del database di Kerberos nel file /var/krb5/slave_datatrans e copia questo file sui KDC specificati. Il database di Kerberos rimane bloccato fino al termine della propagazione.

Eseguire il backup del database di Kerberos

  1. Diventare superutente sul KDC master.

  2. Eseguire il backup del database di Kerberos usando il comando dump di kdb5_util.


    # /usr/krb5/sbin/kdb5_util dump [-verbose] [-d nome_db] [nome_file] [nomi_principali...]

    -verbose

    Visualizza tutti i nomi principali e i criteri di cui viene eseguito il backup. 

    nome_db

    Nome del database di cui deve essere eseguito il backup. Si noti che a tutti i nomi di database specificati viene aggiunto il suffisso ".db", e che è possibile specificare un percorso assoluto per il file. Se non viene specificata l'opzione -d, il nome predefinito del database è /var/krb5/principal, che diventa effettivamente /var/krb5/principal.db.

    nome_file

    File in cui deve essere eseguito il backup del database. È possibile specificare un percorso assoluto per il file. Se non viene specificato il nome di un file, il database viene salvato nell'output standard. 

    nomi_principali

    Elenco dei nomi principali (separati da uno spazio) di cui deve essere eseguito il backup. È necessario utilizzare nomi principali pienamente qualificati. Se non viene specificato nessun nome principale, il backup viene eseguito sull'intero database. 

Esempio: Backup del database di Kerberos

L'esempio seguente descrive il backup del database di Kerberos in un file di nome dumpfile. Poiché viene specificata l'opzione -verbose, vengono visualizzati tutti i nomi principali di cui viene eseguito il backup.


# kbd5_util dump -verbose dumpfile 
kadmin/kdc1.euro.spa.it@EURO.SPA.IT 
krbtgt/euro.spa.it@EURO.SPA.IT 
kadmin/history@EURO.SPA.IT 
pak/admin@EURO.SPA.IT 
pak@EURO.SPA.IT
changepw/kdc1.euro.spa.it@EURO.SPA.IT
#

L'esempio seguente descrive il backup dei nomi principali pak e pak/admin dal database di Kerberos.


# kdb5_util dump -verbose dumpfile pak/admin@EURO.SPA.IT pak@EURO.SPA.IT
pak/admin@EURO.SPA.IT
pak@EURO.SPA.IT
#

Ripristinare il database di Kerberos

  1. Diventare superutente sul KDC master.

  2. Ripristinare il database di Kerberos usando il comando load di kdb_util.


    # /usr/krb5/sbin/kdb5_util load [-verbose] [-d nome_db] [-update] [nome_file] 

    -verbose

    Visualizza tutti i nomi principali e i criteri che vengono ripristinati. 

    nome_db

    Nome del database che deve essere ripristinato. Si noti che a tutti i nomi di database specificati viene aggiunto il suffisso ".db", e che è possibile specificare un percorso assoluto per il file. Se non viene specificata l'opzione -d, il nome predefinito del database è/var/krb5/principal, che diventa effettivamente /var/krb5/principal.db.

    -update

    Aggiorna il database esistente; diversamente, viene creato un nuovo database o viene sovrascritto il database esistente. 

    nome_file

    File da cui deve essere ripristinato il database. È possibile specificare un percorso assoluto per il file.  

Esempio: Ripristino del database di Kerberos

L'esempio seguente descrive il ripristino del database di nome database1.db nella directory corrente dal file dumpfile. Poiché non viene specificata l'opzione -update, l'operazione di ripristino crea un nuovo database.


# kdb5_util load -d database1 dumpfile

Propagare manualmente il database di Kerberos ai KDC slave

Questa procedura spiega come propagare il database di Kerberos usando il comando kprop. Questo comando può essere usato se occorre sincronizzare un KDC slave con il KDC master al di fuori del lavoro cron periodico. A differenza di kprop_script, kprop permette di propagare solo il backup corrente del database, senza bisogno di creare prima una nuova copia di backup.

  1. Diventare superutente sul KDC master.

  2. (Opzionale) Eseguire il backup del database usando il comando kdb5_util.


    # /usr/krb5/sbin/kdb5_util dump /var/krb5/slave_datatrans
    
  3. Propagare il database su un KDC slave usando il comando kprop.


    # /usr/krb5/lib/kprop -f /var/krb5/slave_datatrans KDC_slave
    

Se si desidera eseguire un backup del database e propagarlo a un KDC slave al di fuori del lavoro cron periodico, è anche possibile usare il comando kprop_script come segue:


# /usr/krb5/lib/kprop_script KDC_slave

Configurazione di una propagazione parallela

In genere, il KDC master viene usato esclusivamente per propagare il suo database ai KSC slave. Tuttavia, se nel sito sono presenti numerosi KDC slave, può essere comodo suddividere il carico del processo di propagazione, mediante una propagazione parallela.

La propagazione parallela permette a determinati KDC slave di condividere le operazioni di propagazione con il KDC master. Questo permette di velocizzare la propagazione e di alleggerire il lavoro del KDC master.

Ad esempio, si supponga che nel sito siano presenti un KDC master e sei slave (come mostrato nella Figura 3-2), in cui i server da slave-1 a slave-3 formino un unico raggruppamento logico e i server da slave-4 a slave-6 un secondo raggruppamento logico. Configurando una propagazione parallela, il KDC master potrà propagare il database a slave-1 e a slave-4, e questi slave potranno a loro volta propagare il database agli slave del loro gruppo.

Figura 3-2 Esempio di configurazione di una propagazione parallela

Graphic

Configurare una propagazione parallela

Quella descritta non è una procedura dettagliata, ma un elenco generale delle operazioni di configurazione da eseguire per abilitare la propagazione parallela.

  1. Sul KDC master, modificare la voce kprop_script nel lavoro cron includendo solo gli argomenti per gli slave che dovranno eseguire la propagazione successiva (slave di propagazione).

  2. Su ogni slave di propagazione, aggiungere una voce kprop_script al lavoro cron che includa gli argomenti per gli slave su cui eseguire la propagazione. Perché la propagazione parallela riesca, il lavoro cron deve essere configurato in modo da essere eseguito dopo la propagazione del nuovo database allo slave di propagazione.


    Nota -

    La durata della propagazione del database agli slave di propagazione dipende da fattori come l'ampiezza di banda della rete e le dimensioni del database.


  3. Su ogni KDC slave, configurare le autorizzazioni appropriate per la propagazione, aggiungendo il nome principale dell'host del KDC propagante al rispettivo file kpropd.acl.

Esempio: Configurazione di una propagazione parallela

Usando l'esempio della Figura 3-2, la voce kprop_script del KDC master dovrebbe avere la forma seguente:

10 3 * * * /usr/krb5/lib/kprop_script slave-1.spa.it slave-4.spa.it

La voce kprop_script di slave-1 dovrebbe avere la forma seguente (si noti che la propagazione sullo slave inizierà un'ora dopo la propagazione eseguita dal master):

10 4 * * * /usr/krb5/lib/kprop_script slave-2.spa.it slave-3.spa.it

Il file kpropd.acl degli slave di propagazione dovrà contenere la voce seguente:

host/master.spa.it@SPA.IT

Il file kpropd.acl degli slave propagati da slave-1 dovrà contenere la voce seguente:

host/slave-1.spa.it@SPA.IT

Amministrazione del file segreto

Il file segreto contiene la chiave master per il database di Kerberos, che viene creata automaticamente quando si crea il database. Se questo file viene danneggiato, è possibile usare il comando stash di kdb5_util(1M) per sostituirlo. L'unico caso in cui è necessario rimuovere un file segreto è dopo la rimozione del database di Kerberos con il comando destroy di kdb5_util. Poiché infatti il file segreto non viene rimosso automaticamente insieme al database, per completare l'operazione è necessario eliminarlo manualmente.

Rimuovere un file segreto

  1. Diventare superutente sul KDC che contiene il file segreto.

  2. Rimuovere il file segreto.


    # rm file_segreto
    

    file_segreto

    Percorso del file segreto. Nella configurazione predefinita, il file segreto si trova in /var/krb5/.k5.settore.

Se occorre ricreare il file segreto, si può usare l'opzione -f del comando kdb5_util.