SSH: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (Connessione SSH moved to SSH: Titolo più corretto per il glossario)
mNessun oggetto della modifica
 
(25 versioni intermedie di 7 utenti non mostrate)
Riga 1: Riga 1:
== Introduzione ==
== Descrizione ==
Il [[repository]] � a tutti gli effetti un archivio ordinato dove sono raccolti i pacchetti Debian (siano essi pacchetti binari o sorgenti) in modo ben organizzato e costantemente aggiornato. In ogni sistema debian i repository utilizzati vengono indicati nel file <tt>/etc/apt/sources.list</tt>. Vedi anche [[Faq#Repository|FAQ: Cos'� un '''repository'''?]].


== Lista repository ufficiali debian ==
'''SSH''' ('''S'''ecure '''SH'''ell, shell sicura) è un ''protocollo'' che permette di stabilire una connessione sicura tra due computer. SSH garantisce la segretezza e l'integrità dei dati scambiati tra due computer cifrando l'intera comunicazione, compresa la fase di autenticazione.
Di seguito troverete l'elenco repository ufficiali da inserire nel <tt>sources.list</tt> per le varie [[La struttura della Distribuzione|versioni di debian]]. Il mirror � quello italiano. I repository dei pacchetti sorgente sono commentati. per ulteriori informazioni leggere la sezione: [[I repository ed il loro utilizzo#Sources.list|Sources.list]].


=== Debian Sarge ===
Le connessioni SSH vengono instaurate tipicamente sulla ''porta 22'' e, di norma, il server risponde aprendo una [[shell]] di comando, tuttavia tramite il meccanismo del [http://en.wikipedia.org/wiki/Tunneling_protocol tunneling] è possibile instradare attraverso tale canale criptato anche il traffico di altre porte e persino le connessioni generate da applicazioni grafiche che risiedono sul computer remoto (ad es. una sessione vnc).<br/>
Questa importante caratteristica consente quindi di sottoporre a comunicazione criptata protocolli che in origine non prevedono questa possibilità, inoltre utilizzando una sola porta per la trasmissione di pacchetti che invece ne userebbero molte altre, è possibile collegarsi ad un [[host]] Linux posto dietro ad un firewall senza bisogno di modificarne le impostazioni.


  ## Debian Stable (sarge)
== Implementazioni ==
  deb http://ftp.it.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.it.debian.org/debian/ testing main contrib non-free
  ## Aggiornamenti della sicurezza
  deb http://security.debian.org/ sarge/updates main contrib
  #deb-src http://security.debian.org/ sarge/updates main contrib


Per l'uso di sarge in ambito desktop (ma non solo) sono molto utili i [[backports]]:
Gli strumenti più diffusi per utilizzare il protocollo SSH sono la [http://www.openssh.com/ suite OpenSSH] che è disponibile per OpenBSD, Linux, vari UNIX, Mac OS X, e MS Windows tramite Cygwin.<br/>
Nella suite sono inclusi diversi client, tra cui il più famoso è <code>ssh</code> che permette di aprire appunto una shell remota connettendosi al server. Altri client sono <code>scp</code> che emula il comportamento di <code>cp</code> e <code>sftp</code> che ha un'interfaccia molto simile a <code>ftp</code> (simula un server FTP).


* [http://backports.org/ Debian Backports]
Il client <code>ssh</code> ha un'interfaccia a linea di comando simile a quella di [[telnet]] e <code>rlogin</code>, ma, a differenza di questi ultimi, l'intera comunicazione (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 *nix e di molti dispositivi di rete, rendendo obsoleto il protocollo telnet, giudicato troppo pericoloso per la sua mancanza di protezione contro le intercettazioni.


=== Debian Etch ===
Altro client interessante, venuto recentemente alla ribalta è '''<code>[[SSHFS: montare una risorsa remota sfruttando FUSE ed SSH|SSHFS]]</code>''' che permette di montare directory remote ed usarle in tutto e per tutto come directory locali (grazie a [http://fuse.sourceforge.net/ FUSE]): tutti i programmi possono accedere alla cartella remota in maniera trasparente, ignorando del tutto che essa si trovi su un altro computer!


  ## Debian Testing (etch)
Su sistemi Debian è possibile installare separatamente un server SSH (sulla macchina a cui si vuole accedere) o un client SSH (sulla macchina da cui si vuole accedere a un server SSH).
  deb http://ftp.it.debian.org/debian/ testing main contrib non-free
  #deb-src http://ftp.it.debian.org/debian/ testing main contrib non-free
  ## Aggiornamenti della sicurezza
  deb http://security.debian.org/ etch/updates main contrib
  #deb-src http://security.debian.org/ etch/updates main contrib


=== Debian Sid ===
== Autenticazione e crittografia della connessione ==


  ## Debian Unstable (sid)
SSH implementa diversi metodi di autenticazione, dal comune metodo della coppia di credenziali utenza/password al più sicuro e sofisticato metodo della coppia di chiavi pubblica/privata. Tralasciando il metodo utenza/password assai noto, risulta più interessante spendere due parole sul secondo.
  deb http://ftp.it.debian.org/debian/ unstable main contrib non-free
  #deb-src http://ftp.it.debian.org/debian/ unstable main contrib non-free


Per '''Sid''' non c'il repository per la sicurezza dato che eventuali falle vengono corrette semplicemente con l'aggiornamento del pacchetto incriminato.
La [http://it.wikipedia.org/wiki/Crittografia_asimmetrica criptografia asimmetrica] detta anche '''crittografia a coppia di chiavi''' o, più semplicemente, '''a chiave pubblica/privata''' (o, semplicemente, '''a chiave pubblica''') consiste nella generazione di una coppia di chiavi (chiamate [http://it.wikipedia.org/wiki/Chiave_privata chiave privata] e [http://it.wikipedia.org/wiki/Chiave_pubblica chiave pubblica]): la '''chiave pubblica''' cripta la comunicazione, mentre la '''chiave privata''' è usata per decriptarla. Ogni coppia di chiavi viene generata usando degli algoritmi asimmetrici, per esempio [http://it.wikipedia.org/wiki/RSA RSA] e [https://en.wikipedia.org/wiki/EdDSA EdDSA (ed25519)]: le connessioni che usano tali coppie di chiavi sono dette '''connessioni SSH'''. Tali algoritmi, però, servono soltanto per instaurare una connessione criptata fra il client SSH e il server SSH in quanto, per il trasferimento vero e proprio dei dati, si usano degli algoritmi simmetrici, come AES o 3DES, che sono molto più efficienti per questo scopo ovvero per cifrare la comunicazione.


== Lista repository non ufficiali ==
Riassumendo una '''connessione SSH''' è una connessione cifrata che utilizza gli algoritmi asimmetrici RSA o DSA soltanto per verificare se una chiave pubblica, memorizzata sul server, derivi da una chiave privata salvata sul client (in modo da garantire la reciproca autenticità del server e del client) in modo da essere utilizzata, per l'intera sessione, per la [[Introduzione alla crittografia|cifratura simmetrica]] con algoritmi come AES o 3DES.
Per una lista dei repository non ufficiali pi� diffusi vedere: [[Repository non ufficiali]].


== La Struttura dei repository ==
Un repository suddivisibile, grossomodo, in due sezioni:
* '''dists''' in questo ramo sono contenuti i file di controllo, che permettono il funzionamento del sistema di pacchettizzazione. Infatti sono presenti i file che descrivono i pacchetti presenti nell'archivio (divisi per la release di appartenenza);
* '''doc''' raccoglie la documentazione di base per Debian (segnalazioni di Bug, Faq, il Contratto Sociale ed altro)
* '''indices''' contiene l'indice di tutti i file contenuti in tutti i pacchetti. Queste informazioni sono usate da [[Apt-file: ricerca all'interno dei pacchetti|<tt>apt-file</tt>]].
* '''non-US''' a causa di problemi legali dovuti al divieto di esportazione di matariale per la difesa (tra cui materiale crittografici, utilizzati anche in PGP e SSH). Per ovviare a questi problemi, i pacchetti sono stati posti in una sezione a parte, la cui distribuzione legata a server non Statunitensi.
* '''pool''' questo l'archivio vero e proprio, dove sono contenuti i pacchetti, raggruppati per lettera iniziale;
* '''project''' contiene materiale per sviluppatori. Degne di nota la direcotory experimetal, che contiene i pacchetti in fase di sviluppo e perfezionamento;<br/>
* '''tools''' contiene degli strumenti Dos per la creazione di dischetti di boot, partizionamento e lancio di Linux.


== La Suddivisione del repository ==
== Voci correlate sul wiki ==
Navigando un po' tra gli archivi Debian, si nota subito una particolare suddivisione: i repository, infatti, sono divisi in '''main''', '''contrib''' e '''non-free''', nel modo seguente:
* '''main''' � la sezione principale, che contiene il 90% dei pacchetti presenti in Debian
* '''contrib''' raccoglie i pacchetti coerenti con la DFSG5.6, ma che dipendono da pacchetti che non la rispettano
* '''non-free''' contiene dei pacchetti che possiedono delle limitazioni nella distribuzione (ad esempio perch� non utilizzabili in ambito commerciale o perch� dipendenti da applicazioni o pacchetti che non rispettano la Debian Free Software Guideline)


== Sources.list ==
* [[OpenSSH]]
=== Il ruolo fondamentale ===
** [[OpenSSH: file di configurazione | File di configurazione]]
Il file '''/etc/apt/sources.list''' � forse il pi� importante file di configurazione del sistema di gestione dei pacchetti Debian. Esso, infatti, contiene l'elenco e gli indirizzi dei repository a cui apt accede.
** [[OpenSSH: Windows | Connettere windows e linux]]
** [[SSHFS: montare una risorsa remota sfruttando FUSE ed SSH]]
* [[Fail2ban | Ostacolare attacchi ''brute-force'' al server SSH con fail2ban]]


=== Ordine di Inserimento ===
== Approfondimenti ==
� importante inserire i repository con un giusto ordine: i primi in elenco, infatti, sono i pi� importanti (o favoriti). Per migliorare le performance, � consigliabile ordinarli per velocit� (Es. prima il cdrom, poi la rete locale, poi internet, ...).


=== Sintassi ===
* [http://it.wikipedia.org/wiki/Ssh Ssh] su Wikipedia (it)
Ogni riga che descrive un repository ha una ben determinata sintassi:
* [http://en.wikipedia.org/wiki/Secure_Shell Secure Shell] su Wikipedia (en)
<pre>
* [http://en.wikipedia.org/wiki/Public-key_cryptography Public-key cryptography] su Wikipedia (en): spiega, molto meglio del corrispondente articolo italiano, in cosa consiste la crittografia a chiave pubblica.
deb uri distribution [component..]
* [https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process SSH encryption and connection process], pagina che spiega le basi di chiavi pubblica/privata e di come funziona il processo autenticativo di SSH.
</pre>


Analizziamo i singoli componenti:
[[Categoria:Glossario]]
* '''deb o deb-src''' serve ad indicare se il repository indicato contiene pacchetti binari o pacchetti sorgenti (se li contiene entrambi, � necessario specificarlo usando due righe diverse).
* '''uri''' indica l'indirizzo a cui � possibile trovare il repository; � possibile scegliere tra i seguenti metodi di accesso ai pacchetti:
** '''file''' permette di inserire un repository presente sull'Hard Disk del computer;
** '''cdrom''' permette di inserire un repository presente su un cd-rom;
** '''http''' permette di accedere ad un repository tramite il protocollo http (se � impostata una variabile di ambiente '''http_proxy''' col formato '''http://server:port/''' verranno usate queste opzioni per accedere al repository; in caso di necessit� di autenticazione, � possibile specificare l'inidirizzo del proxy, nella variabile d'ambiente '''http_proxy''', nel seguente modo: '''http://user:pass@server:port/''', anche se risulta non essere un modo sicuro di autenticazione);
** '''ftp''' permette di accedere ad un repository tramite il protocollo ftp; � possibile specificare un proxy nell stesso modo indicato per http al punto precedente, sostituendo alla variabile '''http_proxy''' '''ftp_proxy''';
** '''copy''' � idendico a file, ma i file utilizzati vengono salvati nella cache di apt; utile nel caso di supporti removibili quali Usb-drive, Floppy, Zip, ...;
** '''rsh, ssh''' permette di accedere ad un repository tramite il protocollo ssh. Non � possibile, per�, effettuare alcuna autenticazione interativa, ma solo tramite lo scambio di chiavi RSA.
* '''distribution''' indica la [[La struttura della Distribuzione|distribuzione (o release)]] utilizzata... � possibile usare il nome in codice (sarge, etch, sid) o il nome generico (stable, testing, unstable);
*'''component''' indica la sezione (non-free, main, contrib...) del repository da inserire; sono possibili scelte multiple.
 
=== Alcuni esempi ===
Non c'� niente di meglio, per capire la sintassi del file sources.list, si un po' di esempi.
 
I repository ufficiali (binari e sorgenti) presi da un mirror italiano:
<pre>
deb http://ftp.it.debian.org/debian/ stable main non-free contrib
deb-src http://ftp.it.debian.org/debian/ stable main non-free contrib
</pre>
 
Il repository di apt-build (Rif. 7.1 Pag. [*]):
<pre>
deb file:/var/cache/apt-build/repository apt-build main
</pre>
 
Un repository 'artigianale' accessibile tramite un webserver:
<pre>
deb http://repos.debianizzati.org ./
</pre>
 
Un repository situato nella home dell'utente maxer, creato con <code>dpkg-scanpackages</code>:
<pre>
deb file:/home/maxer/repos ./
</pre>
 
Per altri repository vedere: [[#Lista repository ufficiali debian|Lista repository ufficiali debian]] e [[Repository non ufficiali]].
 
----
[[User:MaXeR|MaXeR]]
[[Categoria:Apt]]
[[Categoria:Repository]]

Versione attuale delle 11:22, 27 nov 2015

Descrizione

SSH (Secure SHell, shell sicura) è un protocollo che permette di stabilire una connessione sicura tra due computer. SSH garantisce la segretezza e l'integrità dei dati scambiati tra due computer cifrando l'intera comunicazione, compresa la fase di autenticazione.

Le connessioni SSH vengono instaurate tipicamente sulla porta 22 e, di norma, il server risponde aprendo una shell di comando, tuttavia tramite il meccanismo del tunneling è possibile instradare attraverso tale canale criptato anche il traffico di altre porte e persino le connessioni generate da applicazioni grafiche che risiedono sul computer remoto (ad es. una sessione vnc).
Questa importante caratteristica consente quindi di sottoporre a comunicazione criptata protocolli che in origine non prevedono questa possibilità, inoltre utilizzando una sola porta per la trasmissione di pacchetti che invece ne userebbero molte altre, è possibile collegarsi ad un host Linux posto dietro ad un firewall senza bisogno di modificarne le impostazioni.

Implementazioni

Gli strumenti più diffusi per utilizzare il protocollo SSH sono la suite OpenSSH che è disponibile per OpenBSD, Linux, vari UNIX, Mac OS X, e MS Windows tramite Cygwin.
Nella suite sono inclusi diversi client, tra cui il più famoso è ssh che permette di aprire appunto una shell remota connettendosi al server. Altri client sono scp che emula il comportamento di cp e sftp che ha un'interfaccia molto simile a ftp (simula un server FTP).

Il client ssh ha un'interfaccia a linea di comando simile a quella di telnet e rlogin, ma, a differenza di questi ultimi, l'intera comunicazione (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 *nix e di molti dispositivi di rete, rendendo obsoleto il protocollo telnet, giudicato troppo pericoloso per la sua mancanza di protezione contro le intercettazioni.

Altro client interessante, venuto recentemente alla ribalta è SSHFS che permette di montare directory remote ed usarle in tutto e per tutto come directory locali (grazie a FUSE): tutti i programmi possono accedere alla cartella remota in maniera trasparente, ignorando del tutto che essa si trovi su un altro computer!

Su sistemi Debian è possibile installare separatamente un server SSH (sulla macchina a cui si vuole accedere) o un client SSH (sulla macchina da cui si vuole accedere a un server SSH).

Autenticazione e crittografia della connessione

SSH implementa diversi metodi di autenticazione, dal comune metodo della coppia di credenziali utenza/password al più sicuro e sofisticato metodo della coppia di chiavi pubblica/privata. Tralasciando il metodo utenza/password assai noto, risulta più interessante spendere due parole sul secondo.

La criptografia asimmetrica detta anche crittografia a coppia di chiavi o, più semplicemente, a chiave pubblica/privata (o, semplicemente, a chiave pubblica) consiste nella generazione di una coppia di chiavi (chiamate chiave privata e chiave pubblica): la chiave pubblica cripta la comunicazione, mentre la chiave privata è usata per decriptarla. Ogni coppia di chiavi viene generata usando degli algoritmi asimmetrici, per esempio RSA e EdDSA (ed25519): le connessioni che usano tali coppie di chiavi sono dette connessioni SSH. Tali algoritmi, però, servono soltanto per instaurare una connessione criptata fra il client SSH e il server SSH in quanto, per il trasferimento vero e proprio dei dati, si usano degli algoritmi simmetrici, come AES o 3DES, che sono molto più efficienti per questo scopo ovvero per cifrare la comunicazione.

Riassumendo una connessione SSH è una connessione cifrata che utilizza gli algoritmi asimmetrici RSA o DSA soltanto per verificare se una chiave pubblica, memorizzata sul server, derivi da una chiave privata salvata sul client (in modo da garantire la reciproca autenticità del server e del client) in modo da essere utilizzata, per l'intera sessione, per la cifratura simmetrica con algoritmi come AES o 3DES.


Voci correlate sul wiki

Approfondimenti