Configurare un server SFTP per condividere contenuti

01 May 2021, Tags: ComputerScience

💻 Introduzione

In questo articolo voglio annotarmi quello che ho imparato configurando un server SFTP Linux per permettere l’accesso ad utenze diverse. So che non è qualcosa di entusiasmante però conoscendomi preferisco scrivere per non dimenticarmi.

Prerequisiti e assunzioni

Prima di iniziare utile fare delle assunzioni sull’ambiente e sui requisiti:

  • Avere a disposizione un server Linux
  • Avere installato un server SSH. Ad esempio il pacchetto openssh-server
  • Conoscere l’utenza di root
  • Assumiamo che la directory che conterrà i contenuti FTP sia /home/sftp
  • Assumiamo che il gruppo Linux per gli utenti che accederanno alla directory precedente sia chiamato ftpusers
  • Gli utenti non possono navigare in qualunque directory
  • Si vuole che un web server possa scrivere sulle directory degli utenti

Aggiungere il gruppo per gli utenti FTP

Aggiungiamo il gruppo con il comando:

groupadd sftpusers

e creaiamo la directory target:

mkdir -p /home/sftp

Configurare il server SSH

L’idea di base nella configurazione del server SSH è quello di attivare il sistema internal-sftp e aggiungere delle regole di accesso per gli uteni. La prima configurazione permette di forzare il comando impostato in ForceCommand, ignorando qualunque altro comando impostato dal client in connessione per questioni di sicurezza mentre la seconda configurazione isola l’utente a navigare solo nella sua directory principale che vedrà come la direcotry di root.

Per fare questo dobbiamo modificare le sezioni seguenti del file /etc/ssh/sshd_config :

#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp

...

Match Group sftpusers
        ChrootDirectory /home/sftp/%u
        ForceCommand internal-sftp
        X11Forwarding no
        AllowTcpForwarding no

Una volta modificato il file di configurazione del server SSH possiamo provare la sintatti del file con il comando :

sshd -t

NOTA: Se si applicano le modifiche senza controllare prima eventuali errori si rischia di essere disconnessi dal server senza potervi più accedere via SSH.

Bene, una volta controllato il tutto possiamo riavviare il servizio SSH.

service sshd restart

Aggiungere un utente SFTP

Una volta configurato il server SSH vediamo come aggiungere gli utenti che utilizzeranno il servizio SFTP.Per prima cosa aggiungiamo un nuovo utente chiamato nomeUtente senza il supporto alla login da terminale.

useradd -g ftpusers -d /incoming -s /sbin/nologin nomeUtente

Impostiamo una password

passwd nomeUtente

Controlliamo che tutto torni. Dovremmo vedere un risultato de genere al comando grep nomeUtente /etc/passwd:

nomeUtente❌500:500::/incoming:/sbin/nologin

Creaiamo la directory per nuovoUtente con i permessi di scrittura per il nostro web server che scriverà sulla directory incoming dell’utente appena creato.

mkdir -p /home/sftp/nomeUtente/incoming
chown nomeUtente:ftpusers /home/sftp/nomeUtente
chmod 766 /home/sftp/nomeUtente/incoming

Conclusione

Configurare un server SFTP può richiedere qualche accortezza ma permette di dare ai propri utenti un servizio largamente usato specialmente in mabito legacy e per comunicazioni di file M2M machine 2 machine.

Ho scoperto che imparo sempre più dai miei errori che dai miei successi. Se non fai degli sbagli, non stai cogliendo abbastanza opportunità. (John Sculley)


Profile picture

Scritto da Giuseppe Caliendo con amore 💖 dall'Italia. [Twitter] [LinkedIn][Github][Tutti i tag]

© 2019 - 2024, Built with Gatsby