Guide tecniche

Come configurare SFTP su un server web

SFTP è di gran lunga una soluzione più sicura del tradizionale protocollo di upload di file FTP. Nella sua configurazione di base, SFTP consente agli utenti di accedere un po’ dappertutto all’interno del server web.

In questa guida imparerai a configurare SFTP affinché gli utenti accedano alle sole directory di loro competenza, senza avere nemmeno la possibilità di utilizzare SSH.

Indice dei Contenuti

Analisi del web server

Quello che vogliamo è far si che ogni utente acceda alla sola directory del sito web di competenza, senza la possibilità di navigare altre directory del server web. Naturalmente ogni server è configurato a suo modo. Nel nostro caso abbiamo la directory /var/www/ che contiene tutte le root directory dei vari siti web:

  • /var/www/miosito.com
  • /var/www/staging.miosito.com

All’interno delle root directory abbiamo la directory public_html che contiene i file html del sito web:

  • /var/www/miosito.com/public_html
  • /var/www/staging.miosito.com/public_html

Quindi nel nostro caso andremo a creare un gruppo di utenti in grado di accedere solo a /var/www/miosito.com/ ed uno in grado di accedere solo a /var/www/staging.miosito.com/ con possibilità di scrivere solo sulle rispettive public_html.

Creazione dei gruppi di utenti

Dopo aver verificato con un semplice test di connessione che SFTP funziona correttamente, iniziamo con la creazione dei gruppi di utenti.

I gruppi sono molto comodi in quanto consentono di aggiungere nuovi utenti SFTP in futuro senza dover configurare autorizzazioni manualmente utente per utente. Iniziamo con la creazione dei due gruppi:

sudo groupadd staging

sudo groupadd live

Gli utenti del gruppo staging saranno quelli autorizzati ad accedere a staging.miosito.com mentre quelli del gruppo live a miosito.com. Naturalmente sentiti libero di cambiare le nomenclature come meglio preferisci.

Creazione utenti SFTP

A questo punto creiamo gli utenti. Per comodità ne creiamo uno per il primo gruppo e uno per il secondo, fermo restando che è possibile crearne quanti ne vuoi.

sudo adduser utentestaging

sudo adduser utentelive

Creati gli utenti non rimane che associarli ai rispettivi gruppi:

sudo usermod -a -G staging utentestaging

sudo usermod -a -G live utentelive

Configurazione di SFTP

Adesso occorre configurare SFTP per dare le giuste autorizzazioni ai gruppi creati al punto 2.

Come già detto vogliamo che gli utenti appartenenti a questi gruppi non siano in grado di fare il login via SSH. Dopodiché vogliamo che dopo il login con SFTP la loro home corrisponda a quella della root directory del sito web.

Per fare questo modifichiamo il file /etc/ssh/sshd_config, commentiamo la riga Subsystem sftp anteponendo un # e aggiungiamo la riga Subsystem sftp internal-sftp. Alla fine dovrà venir fuori qualcosa di simile:

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

A questo punto in fondo al file occorre aggiungere un Match Group con un ChrootDirectory. La directory di chroot è quella immediatamente precedente la public_html, ovvero la root directory, e corrisponde alla directory che gli utenti vedranno dopo il login via SFTP.

Aggiungere le seguenti righe in fondo a sshd_config:

Match Group staging
ChrootDirectory /var/www/staging.miosito.com/
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
PasswordAuthentication yes

Match Group live
ChrootDirectory /var/www/miosito.com/
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
PasswordAuthentication yes

Praticamente stiamo dicendo ad SSH di inibire l’accesso via terminale agli utenti che fanno parte dei gruppi live e staging grazie alla direttiva ForceCommand internal-sftp. Dopodiché di forzare la home directory a quella di chroot.

Per ovvi motivi è molto importante non aggiungere utenti amministratori ai gruppi appena creati altrimenti non riuscirebbero ad effettuare più alcun accesso via SSH.

Non rimane che salvare il file e riavviare SSH:

sudo service ssh restart

Configurazione dei permessi

Questo passo è importantissimo in quanto se non fatto correttamente SFTP rifiuterà i tentativi di connessione. Come prima cosa la directory che ingloba tutte le directory di chroot deve avere root come owner. Nel nostro caso la directory è /var/www/. Quindi:

sudo chown root:root /var/www/

Per consentire agli utenti di effettuare l’accesso occorre settare alle directory di chroot il permesso 755 ed associare i rispettivi gruppi. Quindi:

sudo chown -R root:live /var/www/miosito.com/

sudo chown -R root:staging /var/www/staging.miosito.com/

sudo chmod 755 /var/www/miosito.com/

sudo chmod 755 /var/www/staging.miosito.com/

Infine facciamo in modo che eventuali nuovi file creati all’interno delle directory di chroot ereditino lo stesso gruppo:

sudo find /var/www/miosito.com/ -type d -exec chmod g+s {} \;

sudo find /var/www/staging.miosito.com/ -type d -exec chmod g+s {} \;

Per consentire gli utenti dei gruppi di scrivere all’interno delle directory di chroot, occorre impostare a file e sottodirectory il permesso 775:

sudo chmod -R 775 /var/www/miosito.com/*

sudo chmod -R 775 /var/www/staging.miosito.com/*

ATTENZIONE: L’asterisco seguito dallo slash è importante altrimenti il permesso viene cambiato anche alla stessa directory di chroot!

Alla fine avremo qualcosa del tipo:

ls -l /var/www/

drwxr-sr-x 3 root root 4096 Jun 13 09:09 miosito.com
drwxr-sr-x 4 root root 4096 Jun 13 09:05 staging.miosito.com

ls -l /var/www/staging.miosito.com

drwxrwsr-x 10 root staging 4096 Jun 13 09:07 public_html

ls -l /var/www/miosito.com

drwxrwsr-x 2 root live 4096 Jun 13 09:09 public_html

Non rimane che effettuare un test di connessione per verificare che tutto funzioni correttamente.

Articoli pubblicati di recente

Come avere tanti Mi Piace su Facebook

Come aumentare i Mi Piace su Facebook? È uno dei bisogni primari di chi si…

15 Marzo 2020

Facebook Pixel: cos’è e come crearne uno

L'utilizzo del Pixel di Facebook è fondamentale per l'ottimizzazione di una campagna pubblicitaria Facebook ma…

17 Febbraio 2020

Social network più famosi: lista aggiornata al 2024

Quali sono i social network più famosi? Ormai i social network a disposizione del pubblico…

28 Gennaio 2020

Google BERT update: tutto quello che c’è da sapere

Google BERT è l'algoritmo di Google entrato in funzione il 25 Ottobre del 2019. A…

24 Gennaio 2020

Analisi SWOT: come si fa ed esempio pratico

L'analisi SWOT è parte integrante e importantissima di un piano marketing efficace. Grazie a questo…

22 Gennaio 2020

Come apparire su Google Maps

Apparire su Google Maps è estremamente importante per un'attività locale. Consente non solo di ottenere…

2 Gennaio 2020