Manuale di Sun Enterprise Authentication Mechanism

Configurazione dei server KDC

Dopo l'installazione del software SEAM, è necessario configurare i server KDC. Configurando un KDC master e almeno un KDC slave, si istituisce il servizio che emette le credenziali. Queste credenziali rappresentano la base per l'uso di SEAM, perciò l'installazione dei KDC deve essere effettuata prima delle altre operazioni.

La differenza più rilevante tra un KDC master e uno slave è data dal fatto che solo il master può gestire le richieste di amministrazione del database. Ad esempio, la modifica di una password o l'aggiunta di un nuovo nome principale devono essere effettuate sul KDC master. Queste modifiche possono quindi essere propagate ai KDC slave. Sia il KDC slave che il KDC master possono generare le credenziali; questo assicura la ridondanza nel caso in cui il KDC master non possa rispondere.

Configurare un KDC master

In questo esempio si presume che la procedura di preconfigurazione non sia stata eseguita. Se questa procedura è invece stata utilizzata per l'installazione del software, molti dei file indicati qui di seguito non richiederanno di essere modificati; si consiglia tuttavia di esaminare il contenuto dei file.

In questa procedura verranno utilizzati i seguenti parametri di configurazione:

  1. Prerequisiti per la configurazione di un KDC master.

    Questa procedura richiede che il KDC master sia installato e che il DNS sia in esecuzione. Per istruzioni specifiche sull'assegnazione dei nomi se si desidera rendere il master intercambiabile, vedere "Sostituzione di un KDC master con uno slave".

  2. Diventare superutente sul KDC master.

  3. Aprire con un editor il file di configurazione di Kerberos (krb5.conf).

    Si dovranno cambiare i nomi dei settori e i nomi dei server. Per una descrizione completa di questo file, vedere la pagina man krb5.conf(4). Se il software SEAM è stato installato usando i file di configurazione, sarà sufficiente verificare il contenuto del file.


    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = SPA.IT
     
    [realms]
                    SPA.IT = {
                    kdc = kdc1.spa.it
                    kdc = kdc2.spa.it
                    admin_server = kdc1.spa.it
            }
     
    [domain_realm]
            .spa.it = SPA.IT
    #
    # if the domain name and realm name are equivalent, 
    # this entry is not needed
    #
    [logging]
            default = FILE:/var/krb5/kdc.log
            kdc = FILE:/var/krb5/kdc.log
     
    [appdefaults]
        gkadmin = {
            help_url = http://milano:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956
            }

    In questo esempio, sono state modificate le righe per default_realm, kdc, admin_server e tutte le voci domain_realm. La riga per default_realm è stata inclusa per ragioni di completezza, ma non viene creata dal processo di installazione se il nome del settore e il nome del dominio sono uguali. È stata inoltre modificata la riga che definisce l'help_url.

  4. Aprire con un editor il file di configurazione del KDC (kdc.conf).

    Occorrerà modificare il nome del settore. Per una descrizione completa di questo file, vedere la pagina man kdc.conf(4). Se il software SEAM è stato installato usando i file di configurazione, sarà sufficiente verificare il contenuto del file.


    kdc1 # cat /etc/krb5/kdc.conf
    [kdcdefaults]
            kdc_ports = 88,750
     
    [realms]
            SPA.IT= {
                    profile = /etc/krb5/krb5.conf
                    database_name = /var/krb5/principal
                    admin_keytab = /var/krb5/kadm5.keytab
                    acl_file = /var/krb5/kadm5.acl
                    kadmind_port = 749
                    max_life = 8h 0m 0s
                    max_renewable_life = 7d 0h 0m 0s
            }

    In questo esempio, è stata modificata la definizione del nome del settore nella sezione realms.

  5. Creare il database del KDC usando kdb5_util.

    Il comando kdb5_util crea il database del KDC e, se usato con l'opzione -s, crea un file segreto che viene usato per autenticare il KDC prima dell'avvio dei daemon kadmind e krb5kdc.


    kdc1 # /usr/krb5/sbin/kdb5_util create -r SPA.IT -s
    Inizializzazione del database '/var/krb5/principal' per il settore 'SPA.IT'
    nome della chiave master 'K/M@SPA.IT'
    Verrà richiesto di inserire la password master per il database.
    È importante NON DIMENTICARE questa password.
    Inserire la chiave master del database KDC: <digitare la chiave>
    	Reinserire la chiave master del database KDC: <digitare nuovamente la chiave>
    

    L'opzione -r seguita dal nome del settore non è richiesta se il nome del settore è uguale al nome del dominio nello spazio di denominazione dei server.

  6. Aprire con un editor il file contenente la lista di controllo degli accessi di Kerberos (kadm5.acl).

    Una volta popolato, il file /etc/krb5/kadm5.acl dovrebbe contenere tutti i nomi principali autorizzati ad amministrare il KDC. La prima voce aggiunta potrebbe apparire come segue:


    kws/admin@SPA.IT   *

    Questa riga assegna al nome principale kws/admin del settore SPA.IT l'autorizzazione a modificare i nomi principali o i criteri all'interno del KDC. L'installazione predefinita include un simbolo "*" per designare tutti i nomi principali di tipo admin. Questo potrebbe rappresentare un rischio per la sicurezza, perciò si raccomanda di specificare un elenco dei nomi principali di tipo admin.

  7. Avviare kadmin.local.

    La sottoprocedura seguente permette di creare i nomi principali usati da SEAM.


    kdc1 # /usr/krb5/sbin/kadmin.local
    kadmin.local: 
    1. Aggiungere i nomi principali di amministrazione al database usando kadmin.local.

      È possibile aggiungere tutti i nomi principali admin desiderati. È tuttavia necessario aggiungere almeno un nome principale admin per completare il processo di configurazione del KDC. In questo esempio, viene aggiunto un nome principale kws/admin. Al posto di "kws" si potrà usare un altro nome principale appropriato.


      kadmin.local: addprinc kws/admin
      Inserire la password per il nome principale kws/admin@SPA.IT: 
      <inserire la password>
      Reinserire la password per il nome principale kws/admin@SPA.IT: 
      <reinserire la password>
      Nome principale "kws/admin@SPA.IT" creato.
      kadmin.local: 
    2. Creare una tabella di chiavi per kadmin usando kadmin.local.

      Questa sequenza di comandi crea una tabella di chiavi speciale con i nomi principali per kadmin e changepw. Questi nomi principali sono richiesti per il servizio kadmind.


      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc1.spa.it
      Voce per nome principale kadmin/kdc1.spa.it con kvno 3, tipo di cifratura DES-CBC-CRC
                aggiunta alla tabella di chiavi WRFILE:/etc/krb5/kadm5.keytab.
      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc1.spa.it
      Voce per nome principale changepw/kdc1.spa.it con kvno 3, tipo di cifratura DES-CBC-CRC 
                aggiunta alla tabella di chiavi WRFILE:/etc/krb5/kadm5.keytab.
      kadmin.local: 
    3. Uscire da kadmin.local

      Sono stati aggiunti tutti i nomi principali richiesti per le operazioni successive.


      kadmin.local: quit
      
  8. Avviare i daemon di Kerberos.


    kdc1 # /etc/init.d/kdc start
    kdc1 # /etc/init.d/kdc.master start
    
  9. Avviare kadmin.

    A questo punto, si potranno aggiungere i nomi principali usando lo strumento di amministrazione di SEAM. Il comando di esempio seguente è presentato in forma semplificata. È necessario eseguire il login con uno dei nomi principali admin creati precedentemente in questa procedura.


    kdc1 # /usr/krb5/sbin/kadmin -p kws/admin
    Inserire la password: <Inserire la password per kws/admin>
    kadmin: 
    1. Creare il nome principale del KDC master usando kadmin.

      Il nome principale dell'host verrà usato dalle applicazioni basate su Kerberos (come klist e kprop) e dai servizi basati su Kerberos (come ftp e telnet).


      kadmin: addprinc -randkey host/kdc1.spa.it
      Nome principale "host/kdc1.spa.it@SPA.IT" creato.
      kadmin: 
    2. Opzionale: Creare il nome principale root per il KDC master usando kadmin.

      Questo nome principale verrà usato per le attivazioni NFS autenticate, e potrebbe perciò non essere necessario su un KDC master.


      kadmin: addprinc root/kdc1.spa.it
      Inserire la password per il nome principale root/kdc1.spa.it@SPA.IT: <inserire la password>
      Reinserire la password per il nome principale root/kdc1.spa.it@SPA.IT: <reinserire la password>
      Nome principale "root/kdc1.spa.it@SPA.IT" creato.
      kadmin: 
    3. Aggiungere il nome principale dell'host usato come KDC master alla tabella di chiavi del KDC master.

      Aggiungendo il nome principale dell'host alla tabella di chiavi, questo nome principale potrà essere usato automaticamente.


      kadmin: ktadd host/kdc1.spa.it
      kadmin: Voce per nome principale host/kdc1.spa.it con
        kvno 3, tipo di cifratura DES-CBC-CRC aggiunta alla tabella di chiavi 
        WRFILE:/etc/krb5/krb5.keytab
      kadmin: quit
      
    4. Uscire da kadmin


      kadmin: quit
      
  10. Aggiungere una voce per ogni KDC nel file di configurazione usato per la propagazione (kpropd.acl).

    Per una descrizione completa di questo file, vedere la pagina man kprop(1M). Se il software SEAM è stato installato usando i file di configurazione, sarà sufficiente verificare il contenuto del file.


    kdc1 # cat /etc/krb5/kpropd.acl
    host/kdc1.spa.it@SPA.IT
    host/kdc2.spa.it@SPA.IT
  11. Opzionale: Sincronizzare l'orologio del KDC master usando NTP o un altro meccanismo di sincronizzazione.

    Non è necessario installare e usare NTP, ma perché l'autenticazione riesca tutti gli orologi dovranno rientrare nello spazio orario definito nella sezione libdefaults del file krb5.conf. Per informazioni su NTP, vedere "Sincronizzazione degli orologi tra i KDC e i client SEAM".

Configurare un KDC slave

In questa procedura viene configurato un nuovo KDC slave di nome kdc3. Nell'esempio si ipotizza che non sia stata usata la procedura di preconfigurazione durante l'installazione del software o che, in tale procedura, kdc3 non sia stato definito come slave. Se la procedura è stata eseguita e kdc3 è stato identificato come slave, non sarà necessario modificare molti dei file qui indicati; è consigliabile comunque esaminarne il contenuto.

In questa procedura vengono usati i seguenti parametri di configurazione:

  1. Prerequisiti per la configurazione di un KDC slave.

    Questa procedura richiede che il KDC master sia stato configurato e che il software del KDC slave di SEAM sia stato installato su kdc3. Per istruzioni specifiche sulla configurazione del server slave come sistema di backup per la sostituzione del master in caso di guasto, vedere "Sostituzione di un KDC master con uno slave".

  2. Sul KDC master: Diventare superutente.

  3. Sul KDC master: Avviare kadmin.

    È necessario eseguire il login con uno dei nomi principali admin creati durante la configurazione del KDC master.


    kdc1 # /usr/krb5/sbin/kadmin -p kws/admin
    Inserire la password: <Inserire la password per kws/admin>
    kadmin: 
    1. Sul KDC master: Aggiungere i nomi principali degli host slave al database usando kadmin.

      Perché il sistema slave possa funzionare, è necessario che disponga di un nome principale per l'host.


      kadmin: addprinc -randkey host/kdc3.spa.it
      Nome principale "host/kdc3@SPA.IT" creato.
      kadmin: 
    2. Opzionale: Sul KDC master, creare il nome principale root per il KDC slave usando kadmin.

      Questo nome principale è necessario solo se il sistema slave attiverà via NFS un file system autenticato.


      kadmin: addprinc root/kdc3.spa.it
      Inserire la password per il nome principale root/kdc3.spa.it@SPA.IT: <inserire la password>
      Reinserire la password per il nome principale root/kdc3.spa.it@SPA.IT: <reinserire la password>
      Nome principale "root/kdc3.spa.it@SPA.IT" creato.
      kadmin: 
    3. Uscire da kadmin


      kadmin: quit
      
  4. Sul KDC master: Aprire con un editor il file di configurazione di Kerberos (krb5.conf).

    È necessario aggiungere una voce per ogni slave. Per una descrizione completa di questo file, vedere la pagina man krb5.conf(4). Se kdc3 è stato definito come server slave durante la procedura di preconfigurazione, sarà sufficiente verificare il contenuto del file.


    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = SPA.IT
     
    [realms]
                    SPA.IT = {
                    kdc = kdc1.spa.it
                    kdc = kdc2.spa.it
                    kdc = kdc3.spa.it
                    admin_server = kdc1.spa.it
            }
     
    [domain_realm]
            .spa.it = SPA.IT
    #
    # if the domain name and realm name are equivalent, 
    # this entry is not needed
    #        
    [logging]
            default = FILE:/var/krb5/kdc.log
            kdc = FILE:/var/krb5/kdc.log
     
    [appdefaults]
        gkadmin = {
            help_url = http://milano:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956
     
    
  5. Sul KDC master: Aggiungere una voce per ogni KDC slave nel file di configurazione usato per la propagazione del database (kpropd.acl).

    Per una descrizione completa di questo file, vedere la pagina man kprop(1M). Se kdc3 è stato definito come server slave durante la procedura di preconfigurazione, sarà sufficiente verificare il contenuto del file.


    kdc1 # cat /etc/krb5/kpropd.acl
    host/kdc1.spa.it@SPA.IT
    host/kdc2.spa.it@SPA.IT
    host/kdc3.spa.it@SPA.IT
    
  6. Su tutti i server slave: Copiare i file di amministrazione di KDC dal KDC master.

    Questa operazione deve essere eseguita su tutti i KDC slave, poiché il KDC master contiene le informazioni aggiornate necessarie per tutti i server KDC. Se kdc3 è stato definito come server slave durante la procedura di preconfigurazione, sarà sufficiente verificare il contenuto dei file. Si potrà usare ftp o un meccanismo di trasferimento analogo per trasferire una copia dei seguenti file dal master:

    • /etc/krb5/krb5.conf

    • /etc/krb5/kdc.conf

    • /etc/krb5/kpropd.acl

  7. Sul nuovo slave: Aggiungere il nome principale dell'host slave alla tabella di chiavi dello slave usando kadmin.

    È necessario eseguire il login con uno dei nomi principali admin creati durante la configurazione del KDC master. Questa voce permetterà il funzionamento di kprop e di altre applicazioni basate su Kerberos.


    kdc3 # /usr/krb5/sbin/kadmin -p kws/admin
    Inserire la password: <Inserire la password per kws/admin>
    kadmin: ktadd host/kdc3.spa.it
    kadmin: Voce per nome principale host/kdc3.spa.it con
      kvno 3, tipo di cifratura DES-CBC-CRC aggiunta alla tabella di chiavi
      WRFILE:/etc/krb5/krb5.keytab
    kadmin: quit
    
  8. Sul KDC master: Aggiungere i nomi dei KDC slave al lavoro cron, che esegue automaticamente i backup, con il comando crontab -e.

    Aggiungere il nome di ogni KDC slave alla fine della riga kprop_script. Se kdc3 è stato definito come server slave durante la procedura di preconfigurazione, sarà sufficiente verificare il contenuto del file.


    10 3 * * * /usr/krb5/lib/kprop_script kdc2.spa.it kdc3.spa.it
    

    Eventualmente, si potrà cambiare l'ora impostata per i backup. Nella configurazione dell'esempio, il processo di backup ha inizio ogni giorno alle 3:10 AM.

  9. Sul KDC master: Eseguire un backup del database e propagarlo usando kprop_script.

    Se è già disponibile una copia di backup del database, non sarà necessario crearne una nuova. Per maggiori informazioni, vedere "Propagare manualmente il database di Kerberos ai KDC slave".


    kdc1 # /usr/krb5/lib/kprop_script kdc3.spa.it
    Propagazione del database su kdc3.spa.it: OPERAZIONE ESEGUITA
  10. Sul nuovo slave: Creare un file segreto usando kdb5_util.


    kdc3 # /usr/krb5/sbin/kdb5_util stash
    kdb5_util: Impossibile trovare/leggere la chiave master
     memorizzata durante la lettura della chiave master dalla tastiera
    kdb5_util: Attenzione: l'operazione proseguirà senza chiave master
     
    Inserire la chiave master per il database del KDC: <inserire la chiave>
    
  11. Sul nuovo slave: Avviare il daemon KDC (krb5kdc).


    kdc3 # /etc/init.d/kdc start
    
  12. Opzionale: Sul nuovo slave, sincronizzare l'orologio del KDC master usando NTP o un altro meccanismo di sincronizzazione dell'ora.

    Non è necessario installare e usare NTP, ma è importante, perché l'autenticazione abbia successo, che tutti gli orologi rientrino nell'arco di tempo predefinito specificato nella sezione libdefaults del file krb5.conf. Per maggiori informazioni su NTP, vedere "Sincronizzazione degli orologi tra i KDC e i client SEAM".