Configurazione di SSH con Kerberos

monitorSetup del server SSH

Ormai molti sistemi Unix hanno SSH, molti però non dispongono delle funzionalità Kerberos perchè non compilati con questa opzione. SSH con Solaris 9, ad esempio, dispone di un server OpenSSH già incluso nella distribuzione compilato con le estensioni GSSAPI, mentre in Debian Woody esistono due pacchetti ssh, di cui ssh-krb5 ha il supporto GSSAPI incluso. È necessario pertanto verificare che la versione del server e del client SSH incluso con la propria distribuzione Linux o Unix disponga del supporto GSSAPI. Qualora questo non fosse disponibile, è possibile scaricare i sorgenti del programma OpenSSH dal sito http://www.openssh.org e compilarli come segue:

# ./configure --prefix=/usr/local --with-tcp-wrappers \
--with-pam --with-privsep-user=sshd --with-dns \
--with-kerberos5=/usr/kerberos \
--with-privsep-path=/var/empty --with-4in6

L’abilitazione a kerberos è data dall’opzione –with-kerberos5 ed è necessario modificare il path /usr/kerberos con la directory base dell’installazione Kerberos. Non spiegheremo come configurare SSH al di fuori dell’integrazione con Kerberos, in quanto fuori dallo scopo di questo libro, consigliamo la lettura delle man page corrispondenti a sshd_config(5). SSH così modificato va installato sia sul server, nel nostro caso venere.azienda.it, che sul client. In particolare, sul server è necessario aggiungere le seguenti righe nel file di configurazione /usr/local/etc/sshd_config:

KerberosAuthentication yes
KerberosOrLocalPasswd yes
GssapiAuthentication yes

Prima di avviare il daemon sshd, è necessario creare ed importare la chiave di Kerberos nel keytab della macchina, analogamente a quanto fatto su kirk per l’accesso di login. Sul server zeus creare il principal ed esportare il keytab come segue:

# kadmin.local -q “addprinc -pw miapassword7 host/venere.azienda.it@AZIENDA.IT”
# kadmin.local -q “ktadd -k /tmp/venere.key host/venere.azienda.it@AZIENDA.IT”

A questo punto è necessario trasferire la chiave da zeus a venere e copiare la stessa sul file /etc/krb5.keytab. Avviare quindi il daemon sshd sul server venere e controllare che sia attivo e senza errori.

Collegamento da Linux

Il collegamento da Linux è piuttosto semplice. Prima di tutto è necessario aver copiato i file relativi ad SSH (i file binari installati in /usr/local), appena compilati nel server, anche nel client per permettere l’uso delle estensioni GSSAPI. Una volta copiati i file, ci si collega al sistema client (kirk) con l’utente mrossi e, dopo aver verificato di aver ricevuto il TGT dal KDC attraverso il comando klist, si procede ad usare il client SSH come segue:

$ ssh venere.azienda.it

Et voilà: se il setup dell’ambiente è stato effettuato correttamente, saremo collegati al server venere.azienda.it senza inserire né username né password. La “magia” di Kerberos è avvenuta!

Collegamento da Windows

Analogamente a Linux, ci collegheremo a Windows con l’utente mrossi, avendo cura di scegliere il logon al realm AZIENDA.IT. Windows non dispone di un client ssh nativo, pertanto è necessario scaricare un client SSH che dispone dell’autenticazione GSSAPI/SSPI: durante le prove è stato provato il programma shareware SecureCRT 4.1 (http://www.vandyke.com/products/securecrt/index.html), che dispone di tale autenticazione. Esiste una versione modificata del famoso client freeware Putty (http://www.certifiedsecuritysolutions.com/downloads.html) che consente l’autenticazione atttraverso GSSAPI, ma si è preferito il primo per le maggiori funzionalità.

Una volta installato, per configurare il client scegliere dal menu File, la voce Quick Connect. Questa opzione avvierà una dialog-box, scegliere nel pannello a sinistra come Protocol il valore SSH, come hostname il server di destinazione (nel nostro caso venere.azienda.it) e lasciare 22 come porta. Inserire l’utente di logon, nel nostro caso mrossi, e come authentication nella voce primary selezionare GSSAPI e come secondary il valore password, in modo tale che venga chiesta la password qualora l’autenticazione Kerberos dovesse fallire. Premere quindi il bottone Connect.

Anche in questo caso, Kerberos ci ha permesso il login al server venere.azienda.it senza richiedere di inserire le nostre credenziali.

Collegamento con MacOS X

Ancora più semplice è il collegamento con MacOS X: il sistema già dispone di una versione di SSH compilata con kerberos. Una volta verificato dalla riga di comando l’ottenimento del TGT con klist, sarà sufficiente collegarsi al sistema remoto con:

$ ssh venere.azienda.it
Limitazione degli account

In uno scenario quale quello presentato, appare immediatamente evidente come ogni account presente sul Realm e sul repository LDAP possa accedere in maniera interattiva indistintamente ad ogni server della nostra azienda. In molti casi è necessario limitare l’accesso interattivo a determinate categorie di utenti, ad esempio vogliamo che solo gli amministratori di sistema riescano ad accedere al Web server. A questo scopo ci aiutano i parametri di SSH AllowUsers e AllowGroups che limitano l’accesso rispettivamente ad una determinata lista di utenti il primo e a uno o più gruppi il secondo. Per maggiori informazioni, si invita a fare riferimento alle man page sshd_config(5).