OpenSSH: differenze tra le versioni

nessun oggetto della modifica
(Nuova pagina: =Premessa= Da diverso tempo i server dell'MM Team hanno raggiunto una buona stabilità, e gli uptime lunghi e le poche operazioni di mautenzione hanno portato fisicamente le macchine ...)
 
Nessun oggetto della modifica
Riga 1: Riga 1:
{{Versioni compatibili | Lenny | Squeeze}}
=Premessa=
=Premessa=


Da diverso tempo i server dell'MM Team hanno raggiunto una buona stabilità, e gli uptime lunghi e le poche operazioni di
Da diverso tempo i server dell'MM Team hanno raggiunto una buona stabilità, e gli uptime lunghi e le poche operazioni di
mautenzione hanno portato fisicamente le macchine fuori dai piedi, con l'avvio senza KDM.<br>
manutenzione hanno portato fisicamente le macchine fuori dai piedi, con l'avvio senza KDM.<br>
Ora però resta da risolvere come effettuare la periodiche sessioni di aggiornamento.<br>
Ora però resta da risolvere come effettuare la periodiche sessioni di aggiornamento.<br>
Da diverso tempo avevo pensato a SSH ma un per paura ho sempre tardato a provarlo, ora finalmente mi sono deciso ma
Da diverso tempo avevo pensato a SSH ma, un po' per paura, ho sempre tardato a provarlo; ora finalmente mi sono deciso ma
adottando alcune precauzioni.<br>
adottando alcune precauzioni.<br>
La seguente lettura porterà a ottenere una connessione SSH sicura, con l'autenticazione basata sul controllo della chiave pubblica.
La seguente lettura porterà a ottenere una connessione SSH sicura, con l'autenticazione basata sul controllo della chiave pubblica.
Riga 12: Riga 13:
tratto da Wikipedia : [[http://it.wikipedia.org/wiki/Secure_shell]]
tratto da Wikipedia : [[http://it.wikipedia.org/wiki/Secure_shell]]


'''SSH''' ('''Secure SHell''', shell sicura) è un Protocollo di rete che permette di stabilire una sessione remota cifrata ad interfaccia a riga di comando con un altro host.
'''SSH''' ('''Secure SHell''', shell sicura) è un protocollo di rete che permette di stabilire una sessione remota cifrata ad interfaccia a riga di comando con un altro host.


Il client SSH ha una interfaccia a riga di comando simile a quella di telnet e rlogin, ma l'intera comunicazione (ovvero sia l'autenticazione che la sessione di lavoro) avviene in maniera cifrata. Per questo motivo, SSH è diventato uno standard di fatto per l'amministrazione remota di sistemi unix e di dispositivi di rete, rendendo obsoleto il protocollo telnet, giudicato troppo pericoloso per la sua mancanza di protezione contro le intercettazioni.
Il client SSH ha una interfaccia a riga di comando simile a quella di telnet e rlogin, ma l'intera comunicazione (ovvero sia l'autenticazione che la sessione di lavoro) avviene in maniera cifrata. Per questo motivo, SSH è diventato uno standard di fatto per l'amministrazione remota di sistemi UNIX e di dispositivi di rete, rendendo obsoleto il protocollo telnet, giudicato troppo pericoloso per la sua mancanza di protezione contro le intercettazioni.


Il client ed il server SSH sono installati o installabili su molte versioni di UNIX, GNU/Linux, Mac OS X e Microsoft Windows. Inoltre è disponibile come strumento di amministrazione su alcuni .
Il client ed il server SSH sono installati o installabili su molte versioni di UNIX, GNU/Linux, Mac OS X e Microsoft Windows. Inoltre è disponibile come strumento di amministrazione su alcuni .


La sintassi su sistemi UNIX-like è la seguente:
La sintassi su sistemi UNIX-like è la seguente:
 
<pre>
  $ ssh [opzioni] nomeutente@host [comando]
  $ ssh [opzioni] nomeutente@host [comando]
</pre>


dove con "$" si intende il prompt della shell utilizzata.
dove con "$" si intende il prompt della shell utilizzata.
Riga 27: Riga 29:
La chiave pubblica è copiata sul server, tipicamente in un apposito file nella home directory dell'utente; la chiave privata deve essere conservata dall'utente, ed è bene che sia protetta con una parola chiave (passphrase).  
La chiave pubblica è copiata sul server, tipicamente in un apposito file nella home directory dell'utente; la chiave privata deve essere conservata dall'utente, ed è bene che sia protetta con una parola chiave (passphrase).  


Nella fase di accesso, il client ssh prova al server di essere in possesso della chiave privata, verrà quindi richiesta la passphase e in caso di successo viene consentito l'accesso.
Nella fase di accesso, il client SSH prova al server di essere in possesso della chiave privata, verrà quindi richiesta la passphase e in caso di successo viene consentito l'accesso.


=Configurazione Server=
=Configurazione Server=
In questa prima parte ci soffermeremo a parlare dell'installazione e della corretta configurazione secondo le richieste prima espresse .
In questa prima parte ci soffermeremo a parlare dell'installazione e della corretta configurazione secondo le richieste prima espresse.


==Installazione==
==Installazione==


L'installazione è molto semplice, basta impartire il solo comando indicato  
L'installazione è molto semplice, basta impartire il solo comando indicato:


<pre># aptitude install ssh</pre>
<pre># aptitude install ssh</pre>
Riga 40: Riga 42:
Oltre al pacchetto '''ssh''' verrà installato '''openssh-blacklist''','''openssh-client''' e '''openssh-server''' .
Oltre al pacchetto '''ssh''' verrà installato '''openssh-blacklist''','''openssh-client''' e '''openssh-server''' .


Dopo aver terminato l'installazione, è già possibile autenticarsi a ssh con le impostazioni di default che ora andremo a correggere .
Dopo aver terminato l'installazione, è già possibile autenticarsi a SSH con le impostazioni di default che ora andremo a correggere .


==Porta==
==Porta==


La predefinita porta 22 mi andava stretta perchè spesso rientra nelle scanlist , così mi prendo una porta a caso ( dopo la 1024).
La predefinita porta 22 mi andava stretta perché spesso rientra nelle scanlist, così mi prendo una porta a caso ( dopo la 1024).


A seconda del tipo di connessione è probabile sia necessario intervenire per aprirla a monte.
A seconda del tipo di connessione è probabile sia necessario intervenire per aprirla a monte.


Nel mio caso , dovrò Nattare la porta scelta sul router , e come esempio userò la porta : 2974
Nel mio caso dovrò nattare la porta scelta sul router e, come esempio, userò la porta : 2974


==Utente per la connessione==
==Utente per la connessione==
Riga 58: Riga 60:
<pre># adduser m3gac4mmell0</pre>
<pre># adduser m3gac4mmell0</pre>


basta seguire l'output e in pochi secondi avremo il nostro nuovo user con la sua home pulita .
basta seguire l'output e in pochi secondi avremo il nostro nuovo user con la sua home pulita.


Se l'utente non ci piace e vogliamo cambiarlo, occorrerà rimuoverlo e crearne un'altro .
Se l'utente non ci piace e vogliamo cambiarlo, occorrerà rimuoverlo e crearne un altro.


<pre># deluser m3gac4mmell0</pre>
<pre># deluser m3gac4mmell0</pre>
Riga 66: Riga 68:
==Inserire le chiavi pubbliche==
==Inserire le chiavi pubbliche==


Creare nella dir /home/m3gac4mmell0/.ssh il file authorized_keys , se la dir non esiste crearla con propietario l'user prescelto
Creare nella dir <code>/home/m3gac4mmell0/.ssh</code> il file <code>authorized_keys</code>. Se la directory non esiste, crearla con proprietario l'user prescelto:
 
<pre>
  $mkdir /home/user/.ssh
  $mkdir /home/user/.ssh
  $chmod 700 /home/user/.ssh
  $chmod 700 /home/user/.ssh
Riga 73: Riga 75:
  $touch authorized_keys
  $touch authorized_keys
  $chmod 600 authorized_keys
  $chmod 600 authorized_keys
</pre>


Prestiamo attenzione ai permessi attribuiti .
Prestiamo attenzione ai permessi attribuiti.


Ora inseriamo le chiavi pubbliche nel file authorized_keys .
Ora inseriamo le chiavi pubbliche nel file <code>authorized_keys</code>.


Come amante di MC e mcedit faccio la cosa maualmente , ma pare sia possibile usare un semplice comando :
Come amante di MC e mcedit faccio la cosa maualmente, ma pare sia possibile usare un semplice comando :


<pre>$ scp -P <porta> ~/.ssh/id_dsa.pub <username>@<ip del server>:~/.ssh/ authorized_keys</pre>
<pre>$ scp -P <porta> ~/.ssh/id_dsa.pub <username>@<ip del server>:~/.ssh/ authorized_keys</pre>
Riga 84: Riga 87:
Per maggiori informazioni consultare anche : ''ssh-copy-id'' e ''ssh-add''
Per maggiori informazioni consultare anche : ''ssh-copy-id'' e ''ssh-add''


Se la modifica viene fatta con un'editor di testo (''es. mcedit'') '''ATTENZIONE''' a inserire le chiavi in una singola riga.
Se la modifica viene fatta con un editor di testo (''es. mcedit'') '''ATTENZIONE''' a inserire le chiavi in una singola riga.


==Configurazione==
==Configurazione==


Quella che riporto ora è la configurazione di SSH inserita nel file ''/etc/ssh/sshd_config'' .
Quella che riporto ora è la configurazione di SSH inserita nel file <code>''/etc/ssh/sshd_config''</code> .


<pre># Package generated configuration file
<pre># Package generated configuration file
Riga 178: Riga 181:
</pre>
</pre>


La parte modificata per forzare l'accesso con le chiavi è di sole 3 righe
La parte modificata per forzare l'accesso con le chiavi è di sole 3 righe:
<pre>ChallengeResponseAuthentication no
<pre>ChallengeResponseAuthentication no
PasswordAuthentication no
PasswordAuthentication no
UsePAM no</pre>
UsePAM no</pre>
Se avete problemi basta riportare a yes le opzioni sopra indicate .
Se avete problemi basta riportare a 'yes' le opzioni sopra indicate.


Oltre alla porta cambiata come segnalato a priori , occorre decommentare la riga :
Oltre alla porta cambiata come segnalato a priori, occorre decommentare la riga:
<pre>AuthorizedKeysFile %h/.ssh/authorized_keys</pre>
<pre>AuthorizedKeysFile %h/.ssh/authorized_keys</pre>


In più ho preferito impostare a no questa :
In più ho preferito impostare a 'no' questa:
<pre>X11Forwarding no</pre>
<pre>X11Forwarding no</pre>


* Se la sessione che si blocca per inutilizzo, provare con ''TCPKeepAlive yes'' .
* Se la sessione si blocca per inutilizzo, provare con ''TCPKeepAlive yes'' .
* E' possibile porre alcune restrizioni aggiuntive quali ''AllowUsers'' e ''MaxAuthTries''.
* È possibile porre alcune restrizioni aggiuntive quali ''AllowUsers'' e ''MaxAuthTries''.


==Optional==
==Optional==


La seguente parte è da considerarsi opzionale anche se per la sicurezza , da parte mia resta consigliata
La seguente parte è da considerarsi opzionale anche se per la sicurezza, da parte mia, resta consigliata


===Fail2ban===
===Fail2ban===


Fail2ban serve per limitare gli accessi indesiderati, bannando per x secondi un IP che ha superato un numero di accessi impostato .
[[Fail2ban | Fail2ban]] serve per limitare gli accessi indesiderati, bannando per x secondi un IP che ha superato un numero di accessi impostato.


Attenzione perchè il ban riguarda solo la posta interessata .
Attenzione perché il ban riguarda solo la posta interessata.


Installare fail2ban è semplice :
Installare fail2ban è semplice :
<pre>#aptitude install fail2ban</pre>
<pre>#aptitude install fail2ban</pre>


Per maggiori info visitate la documentazione ufficiale, mentre per utilizzarlo come nel nostro caso interverremo operando alcune modifiche al file ''/etc/fail2ban/jail.conf'' .
Per maggiori info visitate la documentazione ufficiale, mentre per utilizzarlo come nel nostro caso interverremo operando alcune modifiche al file <code>''/etc/fail2ban/jail.conf''</code>.
<pre>#tempo di ban espresso in secondi es: 3600 = 1 ora
<pre>#tempo di ban espresso in secondi es: 3600 = 1 ora
#un tempo corto ferma ugualmente i robot e facilità il vostro ingresso in tempi brevi in caso di errore  
#un tempo corto ferma ugualmente i robot e facilità il vostro ingresso in tempi brevi in caso di errore  
Riga 222: Riga 225:
maxretry = 3</pre>
maxretry = 3</pre>


L'opzione maxretry risulta doppia dato che è possibile diversificare l'uso a seconda dei servizi utilizzati, la prima opzione è generale, la seconda sottostante al servizio indicato personalizza la singola applicazione.
L'opzione <code>maxretry</code> risulta doppia dato che è possibile diversificare l'uso a seconda dei servizi utilizzati: la prima opzione è generale, la seconda sottostante al servizio indicato personalizza la singola applicazione.


Per fare una prova e verificare subito se tutto funziona generiamo alcuni accessi con user sbagliato sul nostro server SSH e con il comando sotto riportato saremo subito in grado di verificare la presenza di errori.
Per fare una prova e verificare subito se tutto funziona, generiamo alcuni accessi con user sbagliato sul nostro server SSH e con il comando sotto riportato saremo subito in grado di verificare la presenza di errori.
<pre># fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf</pre>
<pre># fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf</pre>


Se avete abilitato il servizio di avviso a mezzo mail, questa sotto è una parte del messaggio che vi arriverà :
Se avete abilitato il servizio di avviso a mezzo mail, questa sotto è una parte del messaggio che vi arriverà:


<pre>Hi,
<pre>Hi,
Riga 243: Riga 246:
===Blockcontrol===
===Blockcontrol===


L'uso di blockcontrol è spiegato nell'e-zine n°4, detto ciò mi limiterò ad alcune considerazioni .
L'uso di <code>blockcontrol</code> è spiegato [http://e-zine.debianizzati.org/web-zine/numero_4/?page=82 nell'e-zine n°4], detto ciò mi limiterò ad alcune considerazioni.


L'unica eccezzione che si aggiunge alla guida sull'e-zine riguarda l'apartura delle porte per la connessione all'interno del file di configurazione ''/etc/blockcontrol/blockcontrol.conf'', dove inseriremo in TCP-in e TCP-out la porta impostata per SSH .
L'unica eccezione che si aggiunge alla guida sull'e-zine riguarda l'apertura delle porte per la connessione all'interno del file di configurazione <code>''/etc/blockcontrol/blockcontrol.conf''</code>, dove inseriremo in TCP-in e TCP-out la porta impostata per SSH.


<pre># Do a "blockcontrol restart" (sometimes even "reload" is enough) when you have
<pre># Do a "blockcontrol restart" (sometimes even "reload" is enough) when you have
Riga 253: Riga 256:
WHITE_TCP_IN="2974"</pre>
WHITE_TCP_IN="2974"</pre>


Grazie all'aggiunta di filtri, possiamo chiude l'accesso a diversi range di IP , per un server consiglio il filtro proxy per ovviare al cambio IP se uno viene bannato .
Grazie all'aggiunta di filtri, possiamo chiudere l'accesso a diversi range di IP. Per un server consiglio il filtro proxy per ovviare al cambio IP se uno viene bannato.


Poi considero validi anche i filtri nazioni in cui non andrò mai e dalle quali non aspetto connessioni, come Cina,Taiwan, Korea e Russia dalle quali è più probabile ricevere connessioni malevole .
Poi considero validi anche i filtri nazioni in cui non andrò mai e dalle quali non aspetto connessioni, come Cina, Taiwan, Korea e Russia dalle quali è più probabile ricevere connessioni malevole.


Per maggiori informazioni sulle liste disponibili verificare : http://www.iblocklist.com/lists.php
Per maggiori informazioni sulle liste disponibili, visitare: http://www.iblocklist.com/lists.php


=Configurazione Client=
=Configurazione Client=
Per la connessione illustrerò in pochi passaggi che servono per configurare il client in ambiente Win e Linux .
Per la connessione illustrerò in pochi passaggi ciò che serve per configurare il client in ambiente Win e Linux.


Resta da definire il tipo di chiave, infatti è possibile scegliere tra 2 tipi di criptazione , RSA o DSA .
Resta da definire il tipo di chiave, infatti è possibile scegliere tra 2 tipi di criptazione: RSA o DSA.


Da una semplice ricerca ho trovato poche differenze, e dai manuali ufficiali verrebbe consigliato di usare DSS (che sarebbe DSA).
Da una semplice ricerca ho trovato poche differenze, e dai manuali ufficiali verrebbe consigliato di usare DSS (che sarebbe DSA).
Riga 295: Riga 298:
LINK http://neubia.com/archives/000191.html
LINK http://neubia.com/archives/000191.html


DSA offre più o meno lo stesso grado di robustezza di RSA, ma ha contro il tempo: è un algoritmo giovane, molto più di RSA. RSA è stato crittanalizzato per anni e non si è mai trovato il modo di forzarlo. DSA essendo sulla piazza da molto meno tempo quindi è stato studiato molto meno, e questo mi autorizza a ritenerlo meno collaudato di RSA, motivo per cui scelgo di non usarlo.
DSA offre più o meno lo stesso grado di robustezza di RSA, ma ha contro il tempo: è un algoritmo giovane, molto più di RSA. RSA è stato crittanalizzato per anni e non si è mai trovato il modo di forzarlo. DSA, essendo sulla piazza da molto meno tempo, è stato quindi studiato molto meno, e questo mi autorizza a ritenerlo meno collaudato di RSA, motivo per cui scelgo di non usarlo.


Dal punto di vista delle prestazioni sono ancora una volta simili: si tratta sempre di operazioni di complessità elevatissima, ma è anche vero che con le macchine che abbiamo a disposizione oggi, considerazioni come queste, basate sulle prestazioni lasciano un po' il tempo che trovano .
Dal punto di vista delle prestazioni sono ancora una volta simili: si tratta sempre di operazioni di complessità elevatissima, ma è anche vero che con le macchine che abbiamo a disposizione oggi, considerazioni come queste, basate sulle prestazioni, lasciano un po' il tempo che trovano.


LINK https://forums.gentoo.org/viewtopic-t-486433-start-0.html
LINK https://forums.gentoo.org/viewtopic-t-486433-start-0.html
Riga 303: Riga 306:
==Linux==
==Linux==


Prepariamo la nostra chiave, che sarà composta da una chiave pubblica e una privata .
Prepariamo la nostra chiave, che sarà composta da una chiave pubblica e una privata:
 
<pre>
  $ssh-keygen -t rsa -b 1024
  $ssh-keygen -t rsa -b 1024
</pre>


Impostiamo una password robusta di almeno 6 caratteri alfa numerici se possibile.
Impostiamo una password robusta di almeno 6 caratteri alfa numerici se possibile.


Una volta creata la coppia di chiavi, dobbiamo andare a inserire la nostra chiave pubblica all'interno del file authorized_keys nella dir /home/user_SSH/.ssh/ dell'utente predefinito per la connessione SSH sul server .
Una volta creata la coppia di chiavi, dobbiamo andare a inserire la nostra chiave pubblica all'interno del file <code>authorized_keys</code> nella directory <code>/home/user_SSH/.ssh/</code> dell'utente predefinito per la connessione SSH sul server.


===openssh-client===
===openssh-client===


Fatto questo siamo pronti per provare la connessione, usando la shell dal nostro user al quale abbiamo generato la coppia di chiavi .
Fatto questo siamo pronti per provare la connessione, usando la shell dal nostro user per il quale abbiamo generato la coppia di chiavi .
<pre>$ ssh -p 2794 m3gac4mmell0@IP-server</pre>
<pre>$ ssh -p 2794 m3gac4mmell0@IP-server</pre>


Inseriamo quando richiesta la password usata per generare la chiave, e in pochi secondi ci troveremo all'interno del nostro server .
Inseriamo, quando richiesta, la password usata per generare la chiave, e in pochi secondi ci troveremo all'interno del nostro server.


===MC===
===Midnight Commander===


Con MC può essere utile quando si devono trasferire dei file, infatti è possibile tenere aperta una delle due tab su SSH e l'altra in locale sulla nostra macchina.
[[Midnight Commander | Midnight Commander]] può essere utile quando si devono trasferire dei file, infatti è possibile tenere aperta una delle due tab su SSH e l'altra in locale sulla nostra macchina.


Per il collegamento spostiamoci con F9 nella tab desiderata e scegliamo ''connessione Shell''
Per il collegamento spostiamoci con F9 nella tab desiderata e scegliamo ''connessione Shell''
Riga 327: Riga 331:


Al prompt inseriamo: ''nome_user@indirizzo_server:porta''
Al prompt inseriamo: ''nome_user@indirizzo_server:porta''
 
<pre>
  m3gac4mm3llo@IP_server:2794
  m3gac4mm3llo@IP_server:2794
</pre>


et volià dopo ver inserito la password saremo dentro.
et voilà, dopo aver inserito la password saremo dentro.


==Win==
==Windows==


Consiglio putty che ho provato e uso ancora in ufficio dove sono costretto all'uso di winXP, forse perchè in una vita precedente sono stato cattivo .
Consiglio putty che ho provato e uso ancora in ufficio dove sono costretto all'uso di WinXP, forse perché in una vita precedente sono stato cattivo.


Prestiamo attenzione oltre alla generazione delle chiavi a come viene esportata la chiave in modo che sia compatibile con openssh .
Prestiamo attenzione oltre alla generazione delle chiavi a come viene esportata la chiave in modo che sia compatibile con openssh.


Finché avete aperta la finestra del generatore di chiave vi sarà possibile copiarla, altrimenti se la salvate dovrete eliminare le prime 2 righe e inserire ssh-rsa per rsa oppure ssh-dss per dsa, lasciate uno spazio vuoto e inserite in un'unica riga il testo della chiave.
Finché avete aperta la finestra del generatore di chiave vi sarà possibile copiarla, altrimenti se la salvate dovrete eliminare le prime 2 righe e inserire ssh-rsa per rsa oppure ssh-dss per dsa, lasciate uno spazio vuoto e inserite in un'unica riga il testo della chiave.
Riga 342: Riga 347:
[[Immagine:MmteamPutty001.JPG |320px | center]]
[[Immagine:MmteamPutty001.JPG |320px | center]]


Alla fine ci deve essere il simbolo =, la parte seguente è opzionale e potete ometterla senza problemi .
Alla fine ci deve essere il simbolo =, la parte seguente è opzionale e potete ometterla senza problemi.


Salvate ora la chiave privata in un luogo sicuro.
Salvate ora la chiave privata in un luogo sicuro.
Riga 354: Riga 359:
[[Immagine:MmteamPutty003.JPG |320px | center]]
[[Immagine:MmteamPutty003.JPG |320px | center]]


Al login dovrete inserire la password impostata nella chiave .
Al login dovrete inserire la password impostata nella chiave.


=Conclusioni=
=Conclusioni=


Per ora mi ritengo soddisfatto anche se la sicurezza non è mai troppa .
Per ora mi ritengo soddisfatto anche se la sicurezza non è mai troppa.


Dalla configurazione eseguita l'accesso deve essere fatto con il nome user corretto altrimenti fail2ban interviene bannando l'IP.
Dalla configurazione eseguita, l'accesso deve essere fatto con il nome user corretto altrimenti fail2ban interviene bannando l'IP.


Se il nome nella connessione è esatto, occorre avere una chiave privata che coincida con una delle chiavi pubbliche inserite sul server altrimenti la sessione vine chiusa immediatamente.
Se il nome nella connessione è esatto, occorre avere una chiave privata che coincida con una delle chiavi pubbliche inserite sul server altrimenti la sessione vine chiusa immediatamente.
Riga 369: Riga 374:
=Link Utili=
=Link Utili=
* http://lackof.org/taggart/hacking/ssh/
* http://lackof.org/taggart/hacking/ssh/
* [http://guide.debianizzati.org/index.php/Categoria:SSH_server_e_amministrazione_remota SSH_server_e_amministrazione_remota]


=Note=
=Note=
Riga 374: Riga 380:


--[[Utente:Mm-barabba|Mm-barabba]] 00:55, 20 nov 2010 (CET)
--[[Utente:Mm-barabba|Mm-barabba]] 00:55, 20 nov 2010 (CET)
[[Categoria:SSH_server_e_amministrazione_remota]]
6 999

contributi