Unnikked - Esperienze personali in campo informatico

Impostare un server SFTP su Ubuntu

Cosa è un server SFTP? SSH File Transfer Protocol o SFTP è un protocollo di rete che prevede il trasferimento dei dati e funzionalità di manipolazione. Inoltre aggiunge la caratteristica di criptare i dati trasferiti tra i due server per rendere le operazioni più sicure.

In questo articolo vedremo come impostare un server SFTP su Ubuntu utilizzando il pacchetto openssh-server. E’ un insieme di programmi che rendono disponibili sessioni crittografate di comunicazione in una rete di computer usando il protocollo SSH. In particolare imposteremo il server in modo tale che ogni utente del sistema avrà la sua cartella personale che è “isolata” dal resto del sistema (chroot).

sftp

In questo articolo userò come nome utente fittizio “unnikked” per cui la home di questo utente sarà /home/unnikked. Inoltre supponiamo che l’utente appartenga al gruppo group. Cambieremo la cartella home dell’utente (chroot) in /home.

Se non avete già installato OpenSSH installiamolo dalla repository:

sudo apt-get install ssh openssh-server

Per abilitare il servizio SFTP apriamo il file sshd_config :

sudo vi /etc/ssh/sshd_config

e controlliamo che al suo interno sia contenuta la seguente linea:

[...]
Subsystem sftp internal-sftp
[...]

Ora per aggiungere un utente all’accesso SFTP aggiungiamo alla fine del file :

[...]
Match User unnikked
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

dove unnikked in questo caso è l’utente da impostare come sopra premesso.

Invece per impostare un gruppo basta aggiungere :

[...]
Match Group group
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Questo cambierà la cartella home a tutti gli utenti group nella cartella /home. Notiamo che tutte le cartelle del percorso relativo alla direttiva ChrootDirectory devono essere di proprietà di root che non devono essere scrivibili da nessun altro utente o gruppo. Questo è il motivo per cui non possiamo specificare /home/unnikked, per esempio, perché non è di proprietà dell’utente e gruppo root.

Ora riavviamo OpenSSH:

sudo /etc/init.d/ssh restart

Se aggiungi più di un utente nel file e non vuoi che i diversi utenti possano vedersi le cartelle a vicenda , puoi cambiare i permessi a ogni cartella utente così:

sudo chmod 700 /home/unnikked

In questo modo daremo solo libero accesso al proprietario della cartella.

Ora puoi collegarti alla macchina con qualsiasi software che supporti il protocollo SFTP come FileZilla.

Nota bene che con questa configurazione non abbiamo impostato in alcun modo l’accesso SSH all’utente. Lo vedremo in seguito in un altro articolo.