6 999
contributi
(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 ...) |
S3v (discussione | contributi) 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 | ||
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 | 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 | '''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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | * Se la sessione si blocca per inutilizzo, provare con ''TCPKeepAlive yes'' . | ||
* | * È 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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. | ||
=== | ===Midnight Commander=== | ||
[[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 | et voilà, dopo aver inserito la password saremo dentro. | ||
== | ==Windows== | ||
Consiglio putty che ho provato e uso ancora in ufficio dove sono costretto all'uso di | 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]] |
contributi