Heimdal-0.6.3

Introduzione a Heimdal

Heimdal è una implementazine libera di Kerberos 5 che vuole essere compatibile con il krb5 del MIT ed è retrocompatible con krb4. Kerberos è un protocollo di autenticazione di rete. Di base esso preserva l'integrità delle password in una rete untrusted (come Internet). Le applicazioni Kerberizzate lavorano a stretto contatto con i siti che supportano Kerberos per assicurare che le password non possano essere rubate. Un'installazione di Kerberos apporterà cambiamenti ai meccanismi di autenticazione della propria rete e sovrascriverà molti programmi e demoni dei pacchetti Coreutils, Inetutils, Qpopper e Shadow.

Informazioni sul pacchetto

Dipendenze di Heimdal

Opzionali

Linux-PAM-0.78, OpenLDAP-2.2.20, X (X.org-6.8.2 o XFree86-4.4.0), cracklib-2.7 e krb4

[Nota]

Nota

Alcuni tipi di servizi di sincronizzazione dell'ora sul proprio sistema (come NTP-4.2.0) sono necessari, poiché Kerberos non autentica se il differenziale orario tra un client kerberizzato e il server KDC è maggiore di 5 minuti.

Installazione di Heimdal

Prima dell'installazione del pacchetto si potrebbe voler preservare il programma ftp del pacchetto Inetutils. Ciò perché il programma ftp di Heimdal usato per la connessione a server ftp non kerberizzati potrebbe non funzionare correttamente. Esso permetterà la connesione (informando che la trasmissione della password è in chiaro), ma avrà problemi nel fare scritture e letture. Digitare il seguente comando come utente root.

mv /usr/bin/ftp /usr/bin/ftpn

Se si vuole che il pacchetto Heimdal sia collegato alla libreria cracklib si deve applicare una patch:

patch -Np1 -i ../heimdal-0.6.3-cracklib-1.patch

Installare Heimdal eseguendo i seguenti comandi:

patch -Np1 -i ../heimdal-0.6.3-fhs_compliance-1.patch &&
./configure --prefix=/usr --sysconfdir=/etc/heimdal \
    --datadir=/var/lib/heimdal --localstatedir=/var/lib/heimdal \
    --libexecdir=/usr/sbin --enable-shared \
    --with-openssl=/usr --with-readline=/usr &&
make

Ora, come utente root:

make install &&
mv /bin/login /bin/login.shadow &&
mv /bin/su /bin/su.shadow &&
mv /usr/bin/{login,su} /bin &&
ln -sf ../../bin/login /usr/bin &&
mv /usr/lib/lib{otp.so.0*,kafs.so.0*,krb5.so.17*,asn1.so.6*} \
   /usr/lib/lib{roken.so.16*,crypto.so.0*,db-4.3.so} /lib &&
ln -sf ../../lib/lib{otp.so.0{,.1.4},kafs.so.0{,.4.0},db-4.3.so} \
    /usr/lib &&
ln -sf ../../lib/lib{krb5.so.17{,.3.0},asn1.so.6{,.0.2}} \
    /usr/lib &&
ln -sf ../../lib/lib{roken.so.16{,.0.3},crypto.so.0{,.9.7}} \
    /usr/lib &&
ldconfig

Spiegazioni dei comandi

--libexecdir=/usr/sbin: questa opzione mette il programma demone in /usr/sbin.

[Nota]

Nota

Se si vogliono preservare tutti i demoni del proprio pacchetto Inetutils installare i demoni di Heimdal in /usr/sbin/heimdal (o ovunque si voglia). Poiché questi programmi verranno chiamati dagli script di (x)inetd o rc non è molto importante dove essi sono installati, una volta che essi sono correttamente specificati nel file /etc/(x)inetd.conf e negli script rc. Se si sceglie qualcosa di diverso da /usr/sbin si potrebber voler spostare manualmente alcuni dei programmi utente (come kadmin) in /usr/sbin così che essi siano nel path privilegiato di default dell'utente.

mv ... .shadow; mv ... /bin; ln -sf ../../bin...: i programmi login e su installati da Heimdal risiedono nella directory /bin. Sul programma login è creato un link simbolico, poiché Heimdal si aspetta di trovarlo in /usr/bin. I vecchi eseguibili sono preservati prima dello spostamento per mantenere le cose intatte in caso di interruzioni.

mv ... /lib; ln -sf ../../lib/lib... /usr/lib: i programmi login e su installati di Heimdal si collegano verso le librerie di Heimdal e verso le librerie fornite dai pacchetti OpenSSL e Berkeley DB. Queste librerie vengono spostate in /lib per essere conformi a FHS e anche nel caso che /usr si trovi su una partizione separata, che potrebbe non venire sempre montata.

Configurazione di Heimdal

File di configurazione

/etc/heimdal/*

Informazioni di configurazione

Configurazione principale del server KDC

Creare il file di configurazione di Kerberos con i seguenti comandi:

install -d /etc/heimdal &&
cat > /etc/heimdal/krb5.conf << "EOF"
# Begin /etc/heimdal/krb5.conf

[libdefaults]
    default_realm = [EXAMPLE.COM]
    encrypt = true

[realms]
    [EXAMPLE.COM] = {
        kdc = [hostname.example.com]
        admin_server = [hostname.example.com]
        kpasswd_server = [hostname.example.com]
    }

[domain_realm]
    .[example.com] = [EXAMPLE.COM]

[logging]
    kdc = FILE:/var/log/kdc.log
    admin_server = FILE:/var/log/kadmin.log
    default = FILE:/var/log/krb.log

# End /etc/heimdal/krb5.conf
EOF

Sarà necessario sostituire il proprio dominio e hostname per le occorrenze dei nomi [hostname] e [EXAMPLE.COM].

default_realm dovrebbe essere il nome del proprio dominio cambiato in ALL CAPS. Questo non è necessario, ma sia Heimdal che MIT krb5 lo raccomandano.

encrypt = true fornisce la cifratura di tutto il traffico tra client e server kerberizzati. Esso non è necessario e può essere omesso. Se lo si omette si può cifrare tutto il traffico dal client al server usando invece un'opzione nel programma client.

I parametri [realms] dicono ai programmi client dove cercare i servizi di autenticazione di KDC.

La sezione [domain_realm] mappa un dominio in un regno.

Archiviare la password principale in un file chiave usando i seguenti comandi:

install -d -m 755 /var/lib/heimdal &&
kstash

Creare il database KDC:

kadmin -l

Per ora scegliere i default. Ci si può tornare in seguito e cambiare i default, se se ne dovesse sentire il bisogno. Al prompt di kadmin> dare il seguente comando:

init [EXAMPLE.COM]

Il database ora deve essere popolato con almeno una regola (utente). Per ora usare semplicemente il login name o root. Si possono creare quante regole si vogliono usando la seguente dichiarazione:

add [loginname]

Il server KDC e ogni macchina che esegua un demone server kerberizzato deve avere una chiave host installata:

add --random-key host/[hostname.example.com]

Dopo aver scelto i default quando vengono proposti bisognerà esportare i dati in un file keytab:

ext host/[hostname.example.com]

Questo dovrebbe aver creato due file in /etc/heimdal: krb5.keytab (Kerberos 5) e srvtab (Kerberos 4). Entrambi i file devono avere i permessi 600 (root solo rw). Escludere i file keytab dall'accesso pubblico è cruciale per la sicurezza complessiva dell'installazione di Kerberos.

Eventualmente si potrebbero voler aggiungere le regole del demone server al database ed estrarle verso il file keytab. Questo lo si fa nello stesso modo in cui sono state create le regole dell'host. Di seguito c'è un esempio:

add --random-key ftp/[hostname.example.com]

(scegliere i default)

ext ftp/[hostname.example.com]

Uscire dal programma kadmin (usare quit o exit) e tornare al prompt della shell. Avviare manualmente il demone KDC per testare l'installazione:

/usr/sbin/kdc &

Provare ad ottenere un TGT (ticket granting ticket) con il seguente comando:

kinit [loginname]

Verrà richiesta la password che è stata creata. Dopo che si è ottenuto il proprio ticket esso può essere mostrato con il seguente comando:

klist

Sullo schermo possono essere visualizzatte informazioni sul ticket.

Per testare la funzionalità del file keytab digitare il seguente comando:

ktutil list

Questo dovrebbe fare il dump di un elenco dei principali host, assieme ai metodi di cifratura usati per accedere alle regole.

A questo punto se è andato tutto bene ci si può sentire piuttosto fiduciosi sull'installazione e configurazione del pacchetto.

Installare l'init script /etc/rc.d/init.d/heimdal incluso nel pacchetto blfs-bootscripts-6.0:

make install-heimdal
Uso dei programmi client kerberizzati

Per usare i programmi client kerberizzati (telnet, ftp, rsh, rxterm, rxtelnet, rcp, xnlock), bisogna prima ottenere un TGT. Usare il programma kinit per ottenere il ticket. Dopo che si è ottenuto il ticket si possono usare i programmi kerberizzati per connettersi ad ogni server kerberizzato sulla rete. Non verrà richiesta l'autenticazione fino alla scadenza del proprio ticket (il default è un giorno), a meno che non si specifichi un utente diverso al programma come argomento della linea di comando.

I programmi kerberizzati si connetteranno a demoni non kerberizzati, avvisando che l'autenticazione non è cifrata. Come citato in precedenza solo il programma ftp dà problemi alla connessione di demoni non kerberizzati.

Per usare i programmi X di Heimdal è necessario aggiungere un campo con la porta di servizio al file /etc/services per il server kxd. Non c'è un numero di porta standardizzato per il servizio 'kx' nel database IANA, perciò sarà necessario prendere un numero di porta inutilizzato. Aggiungere una voce al file services simile alla voce seguente (sostituire [49150] con il proprio numero di porta scelto):

kx              [49150]/tcp   # Heimdal kerberos X
kx              [49150]/udp   # Heimdal kerberos X

Per ulteriori informazioni consultare l'hint di Heimdal sul quale sono basate le precedenti istruzioni.

Contenuti

Programmi installati: afslog, dump_log, ftp, ftpd, hprop, hpropd, ipropd-master, ipropd-slave, kadmin, kadmind, kauth, kdc, kdestroy, kf, kfd, kgetcred, kinit, klist, kpasswd, kpasswdd, krb5-config, kstash, ktutil, kx, kxd, login, mk_cmds, otp, otpprint, pagsh, pfrom, popper, push, rcp, replay_log, rsh, rshd, rxtelnet, rxterm, string2key, su, telnet, telnetd, tenletxr, truncate-log, verify_krb5_conf e xnlock
Librerie installate: libasn1.[so,a], libeditline.a, libgssapi.[so,a], libhdb.[so,a], libkadm5clnt.[so,a], libkadm5srv.[so,a], libkafs.[so,a], libkrb5.[so,a], libotp.[so,a], libroken.[so,a], libsl.[so,a] and libss.[so,a]
Directory installate: /etc/heimdal, /usr/include/kadm5, /usr/include/ss e /var/lib/heimdal

Brevi descrizioni

afslog

ottiene gettoni AFS per un numero di celle.

ftp

è un client FTP kerberizzato.

ftpd

è un demone FTP kerberizzato.

hprop

prende un database primario in un formato specificato e lo converte in un flusso di record di database di Heimdal.

hpropd

è un server che riceve un database mandato da hprop e lo scrive come database locale.

ipropd-master

è un demone che funziona sul server KDC principale che propaga in modo incrementale cambiamenti al database KDC verso i server KDC.

ipropd-slave

è un demone che funziona sui server KDC slave che propagano in modo incrementale cambiamenti al database KDC dal server KDC principale.

kadmin

è un'utilità usata per fare modifiche al database di Kerberos.

kadmind

è un server per accesso amministrativo al database di Kerberos.

kauth

è un link simbolico al programma kinit.

kdc

è un server Kerberos 5.

kdestroy

Rimuove un set corrente di regole di ticket.

kf

è un programma che inoltra ticket a un host remoto attraverso un flusso autenticato e cifrato.

kfd

è un server usato per ricevere ticket inoltrati.

kgetcred

ottiene un ticket per un servizio.

kinit

è usato per autenticarsi al server Kerberos come principale e ottenere un ticket granting ticket che può essere usato in seguito per ottenere ticket per altri servizi.

klist

legge e visualizza i ticket correnti nella cache credenziale.

kpasswd

è un programma per cambiare le password di Kerberos 5.

kpasswdd

è un server di Kerberos 5 per il cambiamento delle password.

krb5-config

dà informazioni su come linkare programmi alle librerie di Heimdal.

kstash

memorizza in un file la password principale di KDC.

ktutil

è un programma per la gestione dei keytab di Kerberos.

kx

è un programma che inoltra connessioni X in sicurezza.

kxd

è il demone per kx.

login

è un programma di login kerberizzato.

otp

gestisce le password ad uso singolo.

otpprint

stampa un elenco delle password ad uso singolo.

pfrom

è uno script che esegue push --from.

popper

è un server POP-3 kerberizzato.

push

è un client di recupero posta POP kerberizzato.

rcp

è un programma client rcp kerberizzato.

rsh

è un programma client rsh kerberizzato.

rshd

è un programma server rsh kerberizzato.

rxtelnet

avvia una finestra sicura di xterm con telnet a un host dato e inoltra connessioni a X.

rxterm

avvia un xterm remoto sicuro.

string2key

mappa una password in una chiave.

su

è un programma client su kerberizzato.

telnet

è un programma client telnet kerberizzato.

telnetd

è un server telnet kerberizzato.

tenletxr

inoltra all'indietro connessioni a X.

verify_krb5_conf

verifica il file krb5.conf alla ricerca di errori ovvi.

xnlock

è un programma che agisce come uno screen saver sicuro per workstation che hanno in esecuzione X.

libasn1.[so,a]

fornisce le funzioni ASN.1 e DER per codificare e decodificare i TGT Kerberos.

libeditline.a

è una libreria di editing a linea di comando con history.

libgssapi.[so,a]

contiene le funzioni Generic Security Service Application Programming Interface (GSSAPI) che forniscono servizi di sicurezza a chiamanti in un modo generico, supportabile con un range di meccanismi e tecnologie sottostanti, e che quindi consente la portabilità a livello sorgente di applicazioni verso ambienti differenti.

libhdb.[so,a]

è una libreria di accesso al database di autenticazione/autorizzazione Kerberos 5 di Heimdal.

libkadm5clnt.[so,a]

contiene l'autenticazione amministrativa e le funzioni di verifica password richieste dai programmi lato client di Kerberos 5.

libkadm5srv.[so,a]

contiene le funzioni di autenticazione amministrativa e verifica password richieste dai server di Kerberos 5.

libkafs.[so,a]

contiene le funzioni richieste per autenticarsi a AFS.

libkrb5.[so,a]

è una libreria Kerberos 5 per tutti gli usi.

libotp.[so,a]

contiene le funzioni richieste per gestire l'autenticazione delle password ad uso singolo.

libroken.[so,a]

è una libreria contenente funzioni di compatibilità di Kerberos 5.

Last updated on