OpenSSH: differenze tra le versioni

nessun oggetto della modifica
Nessun oggetto della modifica
Riga 49: Riga 49:
* L'autenticazione tramite chiavi pubblica/privata permette, volendo, di stabilire connessioni senza dover digitare alcuna password o codice di sblocco.
* L'autenticazione tramite chiavi pubblica/privata permette, volendo, di stabilire connessioni senza dover digitare alcuna password o codice di sblocco.


== Utilizzo avanzato ==


{{Warningbox|Ogni qualvolta si apportano modifiche ai file di configurazione ''/etc/ssh/ssh_config'' e ''/etc/ssh/sshd_config'' è necessario riavviare il demone ssh per renderle operative.}}
{{Warningbox|Ogni qualvolta si apportano modifiche ai file di configurazione ''/etc/ssh/ssh_config'' e ''/etc/ssh/sshd_config'' è necessario riavviare il demone ssh per renderle operative.}}


=== Cambio del numero di porta ===
Una delle personalizzazioni più semplici che si può adottare è la modifica della porta predefinita, ovvero l'indicazione di un numero di porta differente dalla 22. Tale scelta può essere una necessità pratica, dovuta ad esempio alla necessità di collegarsi a più macchine tutte poste dietro uno stesso router/NAT, oppure un piccolo artificio per rendere un po' più difficili gli attacchi al proprio server SSH da parte di malintenzionati.
{{Box|Nota|Se si decide di cambiare numero di porta è bene ricordare che i numeri fino a 1024 sono riservati al sistema, pertanto '''l'utente dovrà scegliere sempre dei valori maggiori di 1024'''.}}
==== Client ====
Ci sono due strade per utilizzare un numero di porta differente:
# passare il numero direttamente da riga di comando usando l'opzione <code>-p</code>;
# modificare il file di configurazione <code>/etc/ssh/ssh_config</code>
Un esempio della prima opzione è il seguente:
<pre>$ ssh utente_remoto@host_remoto -p 13462</pre>
La riga da modificare nel file di configurazione è invece quella dove compare la voce <code>'''#  Port 22'''</code>:
<pre>
[...]
#  IdentityFile ~/.ssh/id_dsa
#  Port 22
#  Protocol 2,1
[...]
</pre>
È quindi sufficiente decommentare tale riga ed indicare il numero di porta desiderato, ad esempio:
<pre>
[...]
#  IdentityFile ~/.ssh/id_dsa
    Port 13462
#  Protocol 2,1
[...]
</pre>
{{Box|Note|
* Tutto quanto qui scritto presuppone che l'utente abbia già configurato il server SSH della macchina remota per comunicare su una porta diversa dalla 22.
* Se l'utente modifica il file <code>/etc/ssh/ssh_config</code> indicando la stessa porta contenuta nel file <code>/etc/ssh/sshd_config</code> presente sulla macchina remota chiaramente non è necessario usare l'opzione ''-p'' da riga di comando.}}


==== Server ====
== Metodi di autenticazione ==
 
Se si opta per l'utilizzo di una porta differente da quella standard è necessario specificare tale valore non solo nella configurazione del client, ma anche in quello del server operante sulla macchina remota.<br>
Si tratta cioè di editare il file <code>/etc/ssh/sshd_config</code> e modificare la voce <code>'''Port 22'''</code>:
<pre>
# Package generated configuration file
# See the sshd_config(5) manpage for details
 
# What ports, IPs and protocols we listen for
Port 22
[...]
</pre>
per esempio in:
<pre>
# Package generated configuration file
# See the sshd_config(5) manpage for details
 
# What ports, IPs and protocols we listen for
Port 13462
[...]
</pre>
 
=== Metodi di autenticazione ===


Come già scritto il metodo di autenticazione utilizzabile fin da subito, cioè l'inserimento della password relativa all'account remoto, non è il più sicuro poiché suscettibili di attacchi a forza bruta o in ogni caso di rivelare la stessa nel caso di collegamento a server fittizi gestiti da malintenzionati.<br/>
Come già scritto il metodo di autenticazione utilizzabile fin da subito, cioè l'inserimento della password relativa all'account remoto, non è il più sicuro poiché suscettibili di attacchi a forza bruta o in ogni caso di rivelare la stessa nel caso di collegamento a server fittizi gestiti da malintenzionati.<br/>
Riga 123: Riga 67:
{{Box|Nota|Dei due metodi ''hostbased'' e ''publickey'', solo il secondo può dirsi sicuramente più sicuro di quello basato su password.}}
{{Box|Nota|Dei due metodi ''hostbased'' e ''publickey'', solo il secondo può dirsi sicuramente più sicuro di quello basato su password.}}


==== hostbased ====
=== hostbased ===


Usando questa modalità non vengono autenticati i singoli utenti, ma la macchina stessa. In pratica la macchina remota controlla solo che la macchina client sia veramente chi dice di essere, ma non esegue alcun controllo sugli utenti. Superata tale verifica gli account della macchina client hanno immediatamente accesso all'account omonimo presente sulla macchina remota.
Usando questa modalità non vengono autenticati i singoli utenti, ma la macchina stessa. In pratica la macchina remota controlla solo che la macchina client sia veramente chi dice di essere, ma non esegue alcun controllo sugli utenti. Superata tale verifica gli account della macchina client hanno immediatamente accesso all'account omonimo presente sulla macchina remota.
Riga 133: Riga 77:
{{Box|Alternative|Il server SSH in modalità autenticazione ''hostbased'' può essere anche configurato per permettere ad un singolo utente della macchina client di accedere ad utenze multiple, o perfino tutte, della macchina remota. In questa guida ci si limiterà al caso ''utente client --> utente remoto omonimo''. Se il lettore fosse interessato alle altre possibilità veda il manuale relativamente ai file <code>/etc/hosts.equiv</code> e <code>~/shosts</code>}}
{{Box|Alternative|Il server SSH in modalità autenticazione ''hostbased'' può essere anche configurato per permettere ad un singolo utente della macchina client di accedere ad utenze multiple, o perfino tutte, della macchina remota. In questa guida ci si limiterà al caso ''utente client --> utente remoto omonimo''. Se il lettore fosse interessato alle altre possibilità veda il manuale relativamente ai file <code>/etc/hosts.equiv</code> e <code>~/shosts</code>}}


===== Generazione chiavi =====
==== Generazione chiavi ====


Normalmente in fase di installazione vengono già generate automaticamente una coppia di chiavi pubblica/privata per ogni tipo di algoritmo di cifratura. Tali chiavi sono conservate in <code>/etc/ssh/</code>, insieme ai file di configurazione, e condividono tutte la parte iniziale del loro nome, ovvero ''ssh_host_''.<br/>
Normalmente in fase di installazione vengono già generate automaticamente una coppia di chiavi pubblica/privata per ogni tipo di algoritmo di cifratura. Tali chiavi sono conservate in <code>/etc/ssh/</code>, insieme ai file di configurazione, e condividono tutte la parte iniziale del loro nome, ovvero ''ssh_host_''.<br/>
Riga 167: Riga 111:
{{Box|Nota|Per usare un numero di bit maggiore, ammesso che ciò sia possibile (rsa sì, ed25519 no), è necessario creare le chiavi manualmente, rinominarle correttamente e copiarle in <code>/etc/ssh/</code>. Per i dettagli si rimanda alla sezione dedicata alla modalità ''publickey'', avendo cura però di creare le chiavi usando l'utenza di ''root'' e di non specificare alcun codice di sblocco.}}
{{Box|Nota|Per usare un numero di bit maggiore, ammesso che ciò sia possibile (rsa sì, ed25519 no), è necessario creare le chiavi manualmente, rinominarle correttamente e copiarle in <code>/etc/ssh/</code>. Per i dettagli si rimanda alla sezione dedicata alla modalità ''publickey'', avendo cura però di creare le chiavi usando l'utenza di ''root'' e di non specificare alcun codice di sblocco.}}


===== Client =====
==== Client ====


È necessario modificare il file <code>/etc/ssh/ssh_config</code> decommentando <code>HostbasedAuthentication</code> e indicando ''yes'' come valore, oltre ad aggiungere <code>EnableSSHKeysign yes</code>:
È necessario modificare il file <code>/etc/ssh/ssh_config</code> decommentando <code>HostbasedAuthentication</code> e indicando ''yes'' come valore, oltre ad aggiungere <code>EnableSSHKeysign yes</code>:
Riga 181: Riga 125:
</pre>
</pre>


===== Server =====
==== Server ====


È necessario modificare il file <code>/etc/ssh/ssdh_config</code> decommentando <code>HostbasedAuthentication</code> e indicando ''yes'' come valore, oltre ad assicurarsi che lo siano anche i parametri <code>RSAAuthentication</code> e <code>PubkeyAuthentication</code>:
È necessario modificare il file <code>/etc/ssh/ssdh_config</code> decommentando <code>HostbasedAuthentication</code> e indicando ''yes'' come valore, oltre ad assicurarsi che lo siano anche i parametri <code>RSAAuthentication</code> e <code>PubkeyAuthentication</code>:
Riga 213: Riga 157:
* Controllare sempre di aver scritto correttamente il FQDN della macchina client.}}
* Controllare sempre di aver scritto correttamente il FQDN della macchina client.}}


==== publickey ====
=== publickey ===


Questa modalità si basa sull'autenticazione dell'utente esattamente come per la modalità ''password'', ma per l'appunto sfruttando l'accoppiata chiave pubblica/privata.
Questa modalità si basa sull'autenticazione dell'utente esattamente come per la modalità ''password'', ma per l'appunto sfruttando l'accoppiata chiave pubblica/privata.


===== Generazione chiavi =====
==== Generazione chiavi ====


Il primo passo è creare le chiavi col solito <code>ssh-keygen</code>, tuttavia la procedura è leggermente diversa da quella descritta per il caso ''hostbased''. In questo caso l'utente avrà infatti facoltà di scegliere l'algoritmo di cifratura (''rsa'' è quello predefinito), il numero di bit quando permesso dall'algoritmo scelto, la directory dove salvare la coppia di chiavi (la destinazione predefinita è <code>~/.ssh/</code>) e se inserire o meno un codice di sblocco della chiave.
Il primo passo è creare le chiavi col solito <code>ssh-keygen</code>, tuttavia la procedura è leggermente diversa da quella descritta per il caso ''hostbased''. In questo caso l'utente avrà infatti facoltà di scegliere l'algoritmo di cifratura (''rsa'' è quello predefinito), il numero di bit quando permesso dall'algoritmo scelto, la directory dove salvare la coppia di chiavi (la destinazione predefinita è <code>~/.ssh/</code>) e se inserire o meno un codice di sblocco della chiave.
Riga 238: Riga 182:
Si noti che i permessi della chiave privata sono impostati a 600, cioè solo l'utente proprietario del file può accedervi.
Si noti che i permessi della chiave privata sono impostati a 600, cioè solo l'utente proprietario del file può accedervi.


===== Client =====
==== Client ====


Nessuna modifica da apportare al file <code>/etc/ssh/ssh_config</code> poiché i valori predefiniti delle variabili <code>RSAAuthentication</code> e <code>PubkeyAuthentication</code> risultano già essere impostati a ''yes''.
Nessuna modifica da apportare al file <code>/etc/ssh/ssh_config</code> poiché i valori predefiniti delle variabili <code>RSAAuthentication</code> e <code>PubkeyAuthentication</code> risultano già essere impostati a ''yes''.


===== Server =====
==== Server ====


Nessuna modifica da apportare al file <code>/etc/ssh/sshd_config</code> poiché i valori predefiniti delle variabili <code>RSAAuthentication</code> e <code>PubkeyAuthentication</code> risultano già essere impostati a ''yes''.
Nessuna modifica da apportare al file <code>/etc/ssh/sshd_config</code> poiché i valori predefiniti delle variabili <code>RSAAuthentication</code> e <code>PubkeyAuthentication</code> risultano già essere impostati a ''yes''.
Riga 322: Riga 266:


Al login inserire la password impostata nella chiave.
Al login inserire la password impostata nella chiave.
== Esempi ==
=== Cambio del numero di porta ===
Una delle personalizzazioni più semplici che si può adottare è la modifica della porta predefinita, ovvero l'indicazione di un numero di porta differente dalla 22. Tale scelta può essere una necessità pratica, dovuta ad esempio alla necessità di collegarsi a più macchine tutte poste dietro uno stesso router/NAT, oppure un piccolo artificio per rendere un po' più difficili gli attacchi al proprio server SSH da parte di malintenzionati.
{{Box|Nota|Se si decide di cambiare numero di porta è bene ricordare che i numeri fino a 1024 sono riservati al sistema, pertanto '''l'utente dovrà scegliere sempre dei valori maggiori di 1024'''.}}
==== Client ====
Ci sono due strade per utilizzare un numero di porta differente:
# passare il numero direttamente da riga di comando usando l'opzione <code>-p</code>;
# modificare il file di configurazione <code>/etc/ssh/ssh_config</code>
Un esempio della prima opzione è il seguente:
<pre>$ ssh utente_remoto@host_remoto -p 13462</pre>
La riga da modificare nel file di configurazione è invece quella dove compare la voce <code>'''#  Port 22'''</code>:
<pre>
[...]
#  IdentityFile ~/.ssh/id_dsa
#  Port 22
#  Protocol 2,1
[...]
</pre>
È quindi sufficiente decommentare tale riga ed indicare il numero di porta desiderato, ad esempio:
<pre>
[...]
#  IdentityFile ~/.ssh/id_dsa
    Port 13462
#  Protocol 2,1
[...]
</pre>
{{Box|Note|
* Tutto quanto qui scritto presuppone che l'utente abbia già configurato il server SSH della macchina remota per comunicare su una porta diversa dalla 22.
* Se l'utente modifica il file <code>/etc/ssh/ssh_config</code> indicando la stessa porta contenuta nel file <code>/etc/ssh/sshd_config</code> presente sulla macchina remota chiaramente non è necessario usare l'opzione ''-p'' da riga di comando.}}
==== Server ====
Se si opta per l'utilizzo di una porta differente da quella standard è necessario specificare tale valore non solo nella configurazione del client, ma anche in quello del server operante sulla macchina remota.<br>
Si tratta cioè di editare il file <code>/etc/ssh/sshd_config</code> e modificare la voce <code>'''Port 22'''</code>:
<pre>
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
Port 22
[...]
</pre>
per esempio in:
<pre>
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
Port 13462
[...]
</pre>


== Approfondimenti ==
== Approfondimenti ==
2 853

contributi