• 0510217318
  • [email protected]
SqueezeMindSqueezeMindSqueezeMindSqueezeMind
  • Home
  • Servizi
  • Collaborazioni b2b
  • Ci hanno scelto
  • Blog
Contattaci Adesso
✕

Home » Blog » Guide tecniche » Come configurare SFTP su un server web

Come configurare SFTP su un server web

13 Giugno 2019
sftp per web server

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.

Questo articolo ti è tornato utile? Condividilo su

Ti consigliamo di leggere anche:

come creare una macchina virtuale
26 Novembre 2019

Come creare una macchina virtuale


Leggi l'articolo
come fare un backup
29 Luglio 2019

Come fare un backup: guida definitiva


Leggi l'articolo
convertire da kindle a pdf o epub
20 Luglio 2019

Come convertire online libri Kindle in pdf o epub


Leggi l'articolo
Come scegliere un hosting web
15 Luglio 2019

Web Hosting: guida alla scelta di un hosting per siti web


Leggi l'articolo
Abbinamento colori sito web
8 Luglio 2019

Guida all’abbinamento dei colori per un sito web


Leggi l'articolo
fail2ban per Wordpress
1 Luglio 2019

Proteggere WordPress da attacchi bruteforce con Fail2ban


Leggi l'articolo

Cerca sul sito

✕

Iscriviti alla Newsletter

Ricevi i prossimi articoli comodamente via email. Non riceverai mail pubblicità o spam.

La nostra web agency

SqueezeMind è un’agenzia web specializzata nella realizzazione di siti web professionali ed in strategie di web marketing. Il nostro obiettivo è portare le aziende online con strumenti in grado di aumentare i fatturati analiticamente. Per farlo ci serviamo solo dei migliori professionisti in grado di offrire un servizio di eccellente qualità e risultati garantiti.

Entra in contatto con noi

Hai un progetto web e vuoi parlarne con noi? Contattaci ad uno dei seguenti recapiti:
  • 0510217318
  • [email protected]

Categorie del blog

  • Guide Web Marketing
  • Guide SEO
  • Guide E-commerce
  • Guide tecniche
  • Marketing Ristorazione
  • Guide Social Media Marketing

Le nostre certificazioni

google-partner
© SqueezeMind srl - P. IVA 06334160824
capitale sociale € 10.000 i.v. - Tutti i diritti riservati
  • Lavora con noi
  • Mappa del sito
  • Dove siamo
  • Contatti
  • Informativa Privacy
  • Cookie Policy
Contattaci Adesso
Gestisci Consenso
Per fornire le migliori esperienze, utilizziamo tecnologie come i cookie per memorizzare e/o accedere alle informazioni del dispositivo. Il consenso a queste tecnologie ci permetterà di elaborare dati come il comportamento di navigazione o ID unici su questo sito. Non acconsentire o ritirare il consenso può influire negativamente su alcune caratteristiche e funzioni.
Funzionale Sempre attivo
L'archiviazione tecnica o l'accesso sono strettamente necessari al fine legittimo di consentire l'uso di un servizio specifico esplicitamente richiesto dall'abbonato o dall'utente, o al solo scopo di effettuare la trasmissione di una comunicazione su una rete di comunicazione elettronica.
Preferenze
L'archiviazione tecnica o l'accesso sono necessari per lo scopo legittimo di memorizzare le preferenze che non sono richieste dall'abbonato o dall'utente.
Statistiche
L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici. L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici anonimi. Senza un mandato di comparizione, una conformità volontaria da parte del vostro Fornitore di Servizi Internet, o ulteriori registrazioni da parte di terzi, le informazioni memorizzate o recuperate per questo scopo da sole non possono di solito essere utilizzate per l'identificazione.
Marketing
L'archiviazione tecnica o l'accesso sono necessari per creare profili di utenti per inviare pubblicità, o per tracciare l'utente su un sito web o su diversi siti web per scopi di marketing simili.
  • Gestisci opzioni
  • Gestisci servizi
  • Gestisci {vendor_count} fornitori
  • Per saperne di più su questi scopi
Visualizza le preferenze
  • {title}
  • {title}
  • {title}