SFTP (SSH/Secure File Transfer Protocol) è uno standard di trasmissione di rete utilizzato per trasferire, accedere e gestire file su una rete remota. Contiene SSH (Secure Shell), rendendolo molto più sicuro del protocollo FTP.
I file vengono trasferiti attraverso un unico canale di controllo in SFTP. Richiede l'autenticazione e funziona sulla porta 22. In SFTP, la shell SSH fornisce la crittografia che aiuta a proteggere nomi utente, password e altri dati personali trasferiti tramite SFTP.
In questa guida, impareremo a creare utenti SFTP per la root dei documenti del server web.
Passaggio 1:installazione di SSH (Secure Shell)
SFTP è un protocollo di trasferimento file molto sicuro grazie alla crittografia fornita da SSH per i dati mentre vengono trasferiti sulla rete. SSH è installato principalmente su distribuzioni Linux per impostazione predefinita, ma se non è preinstallato nel tuo sistema, puoi utilizzare il comando indicato di seguito per installarlo:
sudo apt install ssh
Se già installato, il comando aggiornerà i pacchetti OpenSSH.
Passaggio 2:configurazione di SSH per l'utilizzo del codice server SFTP
Ora apri il file di configurazione di SSH in un editor di testo per modificarlo per il codice del server SFTP. Qui useremo l'editor nano per modificare il file di configurazione.
sudo nano /etc/ssh/sshd_config
Individua la riga che inizia da “Subsystem sftp”.
Commenta la riga aggiungendo # all'inizio della riga e scrivi la riga seguente dopo questa riga come mostrato nello screenshot riportato di seguito:
Subsystem sftp internal-sftp
L'SSHD utilizzerà il codice del server SFTP invece di eseguire il server SFTP modificando la riga precedente.
Una volta modificato il file di configurazione, salva il file ed esci da esso utilizzando i tasti di scelta rapida da tastiera CTRL+S e CTRL+X.
Dopo le modifiche, è necessario riavviare il demone SSHD per far funzionare le modifiche.
sudo systemctl restart sshd
Fase 3 – Creazione di un utente (utente SFTP)
È una pratica eccellente creare un nuovo utente che dispone solo dell'accesso SFTP alla radice del documento. Non è consigliabile aggiungere un utente con privilegi Sudo alla radice dei documenti del server web. Crea un nuovo utente usando il comando adduser:
sudo adduser sftpuser
Il terminale chiederà un paio di cose come l'impostazione della password e le informazioni sull'utente. Richiederà anche alcuni altri dettagli, quindi lasciali vuoti o fornisci le informazioni corrette.
Un nuovo utente con il nome di sftpuser
è stato creato correttamente.
Fase 4 – Creazione della direttiva Match User nel file di configurazione SSH
Ora limiteremo questo utente alla root del documento e disabiliteremo anche l'accesso dell'utente a SSH in modo che l'utente acceda tramite SFTP.
Per limitare l'accesso dell'utente, apri il file di configurazione di SSH in qualsiasi editor di testo:
sudo nano /etc/ssh/sshd_config
Ora vai alla fine del file e aggiungi il seguente contenuto nel file di configurazione "sshd_config":
Match User sftpuser ForceCommand internal-sftp ChrootDirectory /var/www/ PasswordAuthentication yes X11Forwarding no AllowTcpForwarding no
Assicurati di sostituire il nome utente "sftpuser" con il nome utente che hai impostato.
Una volta che il contenuto di cui sopra è stato aggiunto al file di configurazione SSH, salva ed esci utilizzando i tasti di scelta rapida CTRL+S e CTRL+X.
Per controllare la sintassi e verificare se tutto è andato bene, puoi eseguire il comando:
sudo sshd -t
Se non si sono verificati errori, potremmo ricaricare il servizio SSH per far funzionare le modifiche.
sudo systemctl restart sshd
Fase 5 – Aggiunta dell'utente SFTP al gruppo www-data
Ora aggiungeremo l'utente al gruppo www-data eseguendo il seguente comando:
sudo usermod -a -G www-data sftpuser
In caso di esecuzione riuscita, non verrà visualizzato alcun output.
Passaggio 6 – Impostazione dell'autorizzazione alla directory principale del documento
Si prega di seguire le istruzioni successive con molta attenzione poiché SFTP è molto severo per quanto riguarda i permessi della directory chroot.
- Inizieremo controllando le autorizzazioni correnti e la proprietà di var:
sudo ls -ld /var/
- Le autorizzazioni dovrebbero essere 755 e il proprietario dovrebbe essere root per impostazione predefinita. In caso contrario, eseguire il comando riportato di seguito per impostare le autorizzazioni appropriate:
sudo chmod 755 /var/
- Ora usa questo comando per impostare la proprietà corretta:
sudo chown root:root /var/
- Poiché abbiamo impostato "/var/www/" nella directory chroot. Ora imposta la giusta proprietà della directory chroot:
sudo chown root:root /var/www/
- Per consentire a un gruppo di scrivere nella directory principale del documento, imposta il suo permesso su 755:
sudo chmod 755 /var/www/html/
- Per concedere la proprietà della radice del documento "/var/www/html" e delle sue ulteriori directory e file al gruppo www-data, utilizzare il comando indicato di seguito:
sudo chown -R www-data:www-data /var/www/html*
- Ora dai 755 permessi al contenuto inserito nella radice del documento “/var/www/html” usando il comando:
sudo find /var/www/html/ -type d -exec chmod 775 {} \;
- Il comando precedente garantirà all'utente SFTP le autorizzazioni di lettura, scrittura ed eseguibile delle directory.
Dobbiamo anche concedere i permessi 664 a tutti i file che sono presenti nella root del documento per consentire al proprietario e al gruppo di utenti SFTP di leggere e scrivere i file:
sudo find /var/www/html/ -type f -exec chmod 664 {} \;
- Ora per l'ultimo passaggio, assicurati che tutti i nuovi file e directory acquisiscano il gruppo www-data creato dall'utente SFTP appena creato:
sudo find /var/www/html -type d -exec chmod g+s {} \;
Allo stesso modo, applica le stesse autorizzazioni al chroot:
sudo chmod 755 /var/www/
Congratulazioni! il tuo nuovo utente SFTP è stato creato e aggiunto alla root dei documenti del server web. Ora puoi accedere a SFTP.
Conclusione
In questa guida pratica, abbiamo appreso come installare e configurare SSH per l'utilizzo del codice del server SFTP. Successivamente, abbiamo creato un nuovo utente, limitato alla root dei documenti e disabilitato l'accesso SSH. Quindi abbiamo aggiunto l'utente alla radice dei documenti del server web per consentire all'utente di leggere, scrivere ed eseguire file nella radice dei documenti.