Nota: questo procedimento è stato realizzato su una Debian Lenny usando OpenSSH v5.1. Il solo pacchetto da scaricare è openssh-server (se state usando APT), altrimenti potrete trovarlo su http://openssh.com
Per far partire il server digitate sul terminale, da superutente
# /etc/init.d/sshd start
Per fermarlo o riavviarlo sostituire start rispettivamente con stop e restart.
Il file di configurazione si trova in /etc/ssh/sshd_config.
Ecco le opzioni più importanti che potreste voler cambiare:
Port N # qui specificherete la porta su cui ascoltare, di default la 22
AllowUsers user1 user2 … # gli utenti che potranno connettersi al vostro server
AllowGroups group1 group2 … # i gruppi di cui devono far parte per potersi connettere
PermitRootLogin no # decide se permettere ad un utente con privilegi di root di accedere direttamente. È consigliato scegliere no per la sicurezza.
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
AuthorizedKeysFile %h/.ssh/authorized_keys
Qui dovrete decidere quale tipo di autenticazione usare, se via password o via chiave pubblica. Nel caso della seconda dovete specificare il path del file con le chiavi pubbliche degli utenti (il suo uso sarà spiegato dopo). Il carattere %h indica la home dell'utente che si sta connettendo.
PermitEmptyPasswords no # possibilità di eseguire login anonimi
Banner /home/path/banner # un banner da visualizzare appena ci si connette (file di testo).
Dopo aver aggiustato il file siete praticamente pronti per far girare il vostro server.
Bene, ora che avete il server è ora di “aprirlo” ai vostri utenti. Ecco il procedimento per permettere ad un utente di connettersi.
Questo è possibile usando l'utility adduser. L'opzione –ingroup specifica il gruppo in cui va inserito (se mancante, il sistema creerà un nuovo gruppo con lo stesso nome utente). Altrimenti potrete crearlo a parte con addgroup.
Allo stesso modo esistono deluser e delgroup per l'operazione inversa.
Nota: se avete scelto l'autenticazione via password, questa che sceglierete voi sarà la password di accesso. Altrimenti servirà solo per eventuali usi di sudo o su.
Nel file di configurazione, aggiungere l'utente e il gruppo di cui fa parte ad AllowUsers e AllowGroups separandoli con uno spazio bianco. Notate che i valori di queste due entry sono necessari entrambi: se l'utente è presente in AllowUsers ma il gruppo di cui fa parte non è fra gli AllowGroups, l'accesso fallirà.
A questo punto l'utente è pronto per autenticarsi via password. Per le chiavi pubbliche invece, l'utente deve disporre di una coppia di chiavi RSA, del numero di bit specificati dall'opzione ServerKeyBits in sshd_config (in genere 1024). Una nuova coppia si può creare su Linux con
$ ssh-keygen -t rsa -b 1024
Il file id_rsa.pub conterrà la chiave pubblica.
Se i vostri utenti usano Windows possono usare l'utility puttygen per generare le chiavi.
Andate nella home dell'utente, alla directory dove avete posto authorized_keys. Create il file ed inserite le chiavi pubbliche delle persone che volete far connettere come quell'utente. Ad esempio, mettiamo di avere i tre utenti fire foo e bar, corrispondenti a Lucia Anna e Stefano. Voglio che sia Lucia e Anna possano connettersi come foo, mentre Stefano deve potersi connettere come fire e bar. Quindi nell'authorized_keys di foo metterò le chiavi pubbliche di Lucia e Anna, mentre nel file di bar e fire metterò la chiave pubblica di Stefano.
Ecco la sintassi per creare un tunnel ssh, utile per aggirare firewall e proxy aziendali:
ssh -L portalocale:hostremoto:portahost user@host
in questo modo connettendoci a localhost:portalocale il traffico verrà girato su hostremoto:portahost , ma ciò è valido solo per gli utenti locali, per rendere il tunnel accessibile anche da altri host aggiungere l'opzione -g
Se il server non accetta connessioni da nessuna macchina, controllare i files: /etc/hosts.allow e /etc/hosts.deny
Se voglio inibire l'accesso tramite password agli utenti (magari avendo abilitato l'autenticazione tramite chiave ssh) devo aggiungere nel file sshd_config (normalmente dentro /etc) la seguente linea:
PassworAuthentication no
Se voglio cambiare la RSA Fingerprint del server devo eliminare i 2 files in /etc/ssh/ssh_host_rsa_key e /etc/ssh/ssh_host_rsa_key.pub e riavviare il demone ssh.
Grazie a questo tool possiamo sapere se il nostro utente ha memorizzate delle chiavi COMPROMESSE, si lancia semplicemente con il comando:
ssh-vulnkey
normalmente verranno visualizzate solo le chiavi compromesse, se vogliamo le informazoni dettagliate su tutte le chiavi basta dare:
ssh-vulnkey -v
Per copiare la mia chiave pubblica su un server remoto (al quale ho un accesso):
ssh-copy-id -i ~/.ssh/id_rsa.pub username@macchina.remota
Si usa il comando:
ssh-keygen -t rsa
Verranno generati due files nella cartella ~/.ssh chiamati: id_rsa e id_rsa.pub. id_rsa e' la chiave privata, che quindi non andra' data a nessuno, mentre id_rsa.pub e' la chiave pubblica, e andra usata laddove viene richiesto un accesso tramite chiavi.