mini guida per l'autenticazione con chiavi di ssh by g3N!x [ genix@people.it ] Versione 0.1.2 22/05/2003 #-----------------------------------------------------------------------------# Questo testo e' liberamente distribuibile sotto qualsiasi forma, a patto che non venga modificato. Non mi assumo alcuna responsabilita' per eventuali danni provocati da quanto scritto. Per informazioni, scrivete all'autore. #-----------------------------------------------------------------------------# -- Sommario -- 1. Introduzione 1.1 Ringraziamenti 1.2 Versioni 1.3 Commenti 1.4 Aggiornamenti 2. Fondamenti 3. Openssh 4. Server sshd 4.1 Configurazione sshd 5. Creazione chiavi 6. Configurazione client -------------------- 1. Introduzione Questa guida non e' scritta per spiegare il funzionamento delle chiavi ne altre nozioni tecniche, ma per descrivere la procedura necessaria per configurare openssh per cui ci si possa connettere da un client su Windows (nel mio caso ho usato putty(terminale) e winscp2(traferimento)). La distribuzione usata è linux slackware 9. 1.1 Ringraziamenti Le informazioni che troverete in questa guida si basano sulla mia esperienza, in aggiunta alle esperienze che ho trovato in rete. Ringrazio quindi tutti quelli che, volontariamente o involontariamente, mi hanno aiutato. 1.2 Versioni <> Versione 0.1.0: Prima battitura veloce. <> Versione 0.1.1: Corretti i primi errori trovati e sistemata forma, sistemato il layout della pagina <> Versione 0.1.2: creato il formato HTML 1.3 Commenti Spero che questa mini guida sia chiara e soprattutto semplice da usare. Per migliorarla, ho bisogno di critiche e correzioni. Se trovate imprecisioni o errori scrivetemi a genix@people.it. 1.4 Aggiornamenti Per quanto riguarda gli aggiornamenti di questa guida, li potete trovare su http://bayzone.cjb.net. Per avere informazioni potete mandarmi un'email a genix@people.it. 2. Fondamenti Per dare un'idea a chi non ha mai sentito parlare di chiavi, daro' una semplice infarinatura su come funzionano a grandi linee le coppie di chiavi. La coppia di chiavi e' formata da due chiavi, una pubblica e una privata: la chiave pubblica si distribuisce (ci sono anche server appositi per la raccolta delle chiavi pubbliche) e la chiave privata (protetta da password) si conserva in luoghi sicuri. Quando due (A e B) vogliono scambiarsi informazioni criptate, nn devono fare altro che scambiarsi le chiavi pubbliche e criptare i dati con le chiavi private, attraverso un algoritmo particolare si riuscira', partendo dalla chiave pubblica di B e dalla chiave privata di A, a decriptare il messaggio di B verso A ed a risalire all'identita' con sicurezza. 3. Openssh Openssh e' un software open source si basa su su ssh (secure shell), che era un software proprietario. Openssh e' molto efficente e gratuito e non ha nulla da invidiare a ssh. Openssh puo' gestire due protocolli SECSH chiamati 1 e 2. Si consiglia vivamente l'utilizzo del protocollo 2, in quanto e' piu' sicuro, ma alcune applicazioni datate utilizzano ancora il protocollo 1. 4. Server sshd La prima cosa da fare e' ovviamente installare tutto il necessario (openssh) Bisogna creare poi una coppia di chiavi (non protette da password) per il server (dovrebbe crearvele automaticamente e porle in /etc/ssh/, ma se nn dovesse farlo potete crearvele voi) e una coppia di chiavi per ogni utente che si connette (e porle nella directory ~/.ssh/). Per creare le chiavi si utilizza il comando ssh-keygen. Ci sono tre tipi di chiavi, rsa, rsa2 e dsa (putty nn dovrebbe funzionare con dsa). Per creare le chiavi per il server (se ci sono gia', saltate questa parte, a meno che volete crearle con particolari opzioni, es. la differente lunghezza della chiave) date il comando: chiave rsa : ssh-keygen -t rsa1 -b 1024 -f /etc/ssh/ssh_host_key -N '' chiave rsa2 : ssh-keygen -t rsa -b 1024 -f /etc/ssh/ssh_host_rsa_key -N '' chiave dsa : ssh-keygen -t dsa -b 1024 -f /etc/ssh/ssh_host_dsa_key -N '' se vi chiede di sovrascrivere dite pure di si. NB: le chiavi del server devono essere create senza la password, altrimenti quando sshd si avvia e le cerca, nn riesce a riconoscerle. Ora bisogna creare una coppia di chiavi per ogni utente che si collega. Vi consiglio di loggarvi come utente e dare il comando: chiave rsa : ssh-keygen -t rsa1 chiave rsa2 : ssh-keygen -t rsa chiave dsa : ssh-keygen -t dsa il programma vi chiedera' la password per ogni chiave e mettera' la chiave nella directory ~/.sshd/ . Per i nomi dei file io vi consiglio di lasciare quelli che ci sono gia. Nel nostro caso il server non passa le chiavi pubbliche al client ma solo viceversa, in quanto il client nn deve autenticare niente, ma si deve far autenticare. Ora bisogna creare le chiavi dal client (vedi il paragrafo 5 di questa guida) e metterle sul server. Bisogna creare il file ~/.sshd/authorized_keys (come si puo' notare, se ne crea uno per ogni utente che si collega) e salvarci dentro le chiavi pubbliche del client di tipo rsa1 e rsa2, seguite da un indicazione della chiave; per il protocollo dsa si utilizza il file authorized_keys2 (la procedura e' la stessa di prima). es. di file authorized_keys (ogni chiave = 1 riga): 1024 37 13825414093127168995644772405396678728737435968301948707042039833615005 49851664958782962974889574071967932830553661942197631274981038774652408216779260 16562492576220968224068007654796752022992570636650578593278006163903584730185113 691834210317059154439807512108601456949245562120739866490730427379038231572243 rsa-key ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBkZI4M3LNHIuSHYiDhNbWXC4qd24sCpjbdgYwnn7HS sa0IIrFVY2vhNGYg1bYoy8u/lba882K+jKP64BWS27gvlT7t5mOYpgYXZtorH8+jkdPQTUG/uI+rdxg9 KnhfwXw0hi7+zIG8mKRTVQZDAwF+Ew8Rq7S8uVysB5HYg4H21w== rsa2-key 4.1 Configurazione sshd Sshd funziona con un file di configurazione chiamato sshd_config e posto nella /etc/ssh/, daro' una spiegazione veloce al mio file... -------------------------------INIZIO---------------------------------------- # Restrizione Accessi,possono connettersi solo gli utenti indicati AllowUsers Pino,Daniele # Porta sulla quale rimanere in ascolto...e' meglio lasciarla cosi' Port 22 #Accetta connessioni solo con il protocollo 2 (rsa2 e dsa), consigliato #perche' + sicuro Protocol 2 #L'indirizzo del server su cui gira sshd ListenAddress 192.168.0.1 #Sono indicate i percorsi delle varia chiavi del server (e non dell'utente) # HostKey for protocol version 1 HostKey /etc/ssh/ssh_host_key # HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key # Logging ... opzioni per il logging SyslogFacility AUTH #indica quanto deve essere particolare il Log. Le opzioni disponibili sono #INFO,DEBUG, ecce. + e' particolareggiato il log, maggiori risorse richiede. LogLevel DEBUG #Visualizza le informazioni riguardo all'ultimo login effettuato PrintLastLog no # Authenticatione: indica il tempo che si ha a disposizione per autenticarsi LoginGraceTime 120 #Non permette il login di root PermitRootLogin no #Abilita o meno il check dei permessi della home dell'utente prima del login StrictModes yes #indica se utilizzare l'autenticazione tramite chiavi (consigliato perche' + #sicuro, anche se leggermente piu' lento (dipende dalla configurazione della #chiave, es quanto e' lunga)) PubkeyAuthentication yes #Indica il file che ha al suo interno le chiavi pubbliche dei client #autorizzati ad accedere. AuthorizedKeysFile .ssh/authorized_keys #Indica se utilizzare l'autenticazione rhosts (e' obsoleta). RhostsAuthentication no #queste opzioni vanno cosi' se l'autenticazione rhosts e' disabilitata #------------------------------------------------------------------------------- #ignora i file ~/.rhosts e ~/.shosts IgnoreRhosts yes #Per utilizzare questa opzione bisogna usare il file /etc/ssh/ssh_known_hosts RhostsRSAAuthentication no #simile al protocollo versione 2 HostbasedAuthentication no #Mettere si se si vuole che non venga processato il file ~/.ssh/known_hosts per #l'autenticazione RhostsRSAAuthentication e HostbasedAuthentication IgnoreUserKnownHosts yes #------------------------------------------------------------------------------- #Permette di autenticarsi solo con l'uso della chiave, consiglio di lasciare #si, se si vuole stare + tranquilli PasswordAuthentication yes #Se l'autenticazione con le password e' consentita, permette le password vuote #(Vivamente consigliato di utilizzare la password) PermitEmptyPasswords no #Serve per attivare l'autenticazione PAM. Se attivato, questo bypassa l'opzione #PasswordAutentication PAMAuthenticationViaKbdInt no #Serve per indicare al server di non fare andare in timeout la connessione KeepAlive yes --------------------------------FINE----------------------------------------- 5. Creazione chiavi (client) Per la creazione delle chiavi si utilizza un programma che e' distribuito insieme a winscp2 e si chiama PuTTygen. Dopo averlo lanciato, si seleziona il tipo di chiave (rsa1, rsa2, dsa), la lunghezza (1024 va bene) e si clicca su generate, per creare una chiave casuale, il programma vi chiedera' di muovere il mouse all'interno della finestra di PuTTygen. Vi consiglio di crearvi tutte e 3 le chiavi e di salvarle in un posto sicuro (quelle private). Quelle pubbliche mettetele nel file nel server, come spiegato alla fine del paragrafo 3. 6. Configurazione client I client presi in esame sono di due tipi: Putty serve come client remoto, Winscp2 serve per il trasferimento sicuro dei file (puo' essere usato al posto di creare inutilmente un server ftp, che puo' aprire buchi di sicurezza). Entrambi questi programmi sono per windows dato che molti utilizzano windows e linux rispettivamente client e server (il primo per la semplicita' e il secondo per l'affidabilita'). Si possono scaricare al sito: -putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html -WinScp2: http://winscp.vse.cz/eng/download.php * Putty: descrivero' le opzioni piu' importanti, tengo a precisare che comunque e' molto intuitivo da configurare: - session: mettete ip e protocollo - SSH: selezionate il protocollo 2 ritornate nella sessione session, salvate e date un nome. Se volete modificare delle opzioni, dovete Caricare la sessione salvata, modificare le opzioni e salvare. Quando dovete collegarvi, basta fare 2 click sulla configurazione salvata, oppure selezionarla e cliccare su load e connect. WinScp2 ha le stesse opzioni di putty, dato che funzionano principalmente allo stesso modo, e' molto semplice da usare. Buon divertimento :-)