GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare il server FTP con VSFTPD

Hai mai dimenticato un documento importante sul tuo computer di casa e lavori in ufficio? O vuoi semplicemente condividere un file con qualcuno che è seduto accanto a te? Un server FTP come Very Secure FTP Daemon (VSFTPD) è la soluzione perfetta.

In questo tutorial imparerai come installare e configurare un server FPT utilizzando VSFTPD sul tuo server Linux in modo da poter condividere in modo sicuro file tra computer.

Continua a leggere e non lasciare mai più i tuoi file prigionieri sul tuo computer di casa!

Prerequisiti

Questo tutorial sarà una dimostrazione pratica. Se desideri seguire, assicurati di avere quanto segue.

  • Una macchina Linux:questo tutorial utilizza Ubuntu 20.04 LTS, ma qualsiasi distribuzione Linux funzionerà.
  • Un utente non root con privilegi sudo.

Installazione di VSFTPD su Ubuntu

VSFTPD è un server FTP per sistemi simili a Unix ma non è installato per impostazione predefinita. L'installazione di VSFTPD su Ubuntu è simile a come si installano altri pacchetti. Avvia questo tutorial aggiornando il tuo gestore di pacchetti APT prima di installare VSFTPD.

1. Esegui apt update comando per aggiornare APT. Questo comando recupera gli elenchi dei pacchetti dai repository configurati e aggiorna la cache dei pacchetti locale.

sudo apt update -y

2. Quindi, esegui apt install comando seguente per installare VSFTPD sulla tua macchina. Questo comando inserirà anche tutte le dipendenze richieste per il servizio FTP.

Per impostazione predefinita, il pacchetto VSFTPD è disponibile sulla maggior parte delle moderne distribuzioni basate su Debian. Quindi puoi installarlo senza alcun repository di pacchetti aggiuntivo e lasciare che APT si occupi del resto.

3. Infine, esegui systemctl comando seguente per verificare che il servizio VSFTPD sia in esecuzione e configurato correttamente.

sudo systemctl status vsftpd 

Vedrai un output simile a quello di seguito, che mostra che vsftpd.service è attivo (in esecuzione) e sta ascoltando le richieste.

Apertura delle porte per le connessioni client FTP

Ora che hai installato l'ultima versione di VSFTPD, puoi configurare il tuo firewall. Utilizzerai UFW, lo strumento di configurazione firewall predefinito per Ubuntu, per aggiungere regole firewall per aprire le porte per connessioni client FTP sicure.

1. Esegui ufw status comando per vedere quali regole del firewall sono attualmente attive.

sudo ufw status

Di seguito, puoi vedere che il firewall è attivo ma non ha regole per consentire connessioni per impostazione predefinita.

2. Quindi, esegui ufw allow comando seguente per consentire a tutte e tre le porte di attraversare il firewall. VSFTPD richiede connessioni FTP sulle porte 20 , 21 e 990 .

sudo ufw allow 20,21,990/tcp

3. Esegui ufw comando qui sotto per aprire il 40000:50000 intervallo di porte.

VSFTPD richiede l'apertura dell'intervallo di porte 40000:50000 in modo che i client FTP possano effettuare connessioni dati al server in modalità passiva.

sudo ufw allow 40000:50000/tcp

4. Infine, esegui ufw status verbose comando di seguito per verificare che le regole del firewall siano attive e verificare la presenza di errori.

sudo ufw status verbose

Configurazione del server VSFTDP

Hai consentito con successo il traffico attraverso il firewall, ma devi configurare il tuo server VSFTPD prima di usarlo.

Il /etc/vsftpd.conf file è il file di configurazione principale per VSFTPD. Ma puoi anche configurare il tuo server FTP tramite altri comandi se preferisci fare le cose in modo dinamico. O se preferisci specificare regole che non sono disponibili nel file di configurazione.

Durante la modifica del file /etc/vsftpd.conf, decommenta ogni direttiva per abilitarla rimuovendo il simbolo # davanti ad essa.

1. Esegui sudo cp comando seguente per eseguire il backup del file di configurazione originale (/etc/vsftpd.conf /etc/vsftpd.conf.bak ).

Dovresti sempre eseguire il backup di qualsiasi file di configurazione critico prima di andare in giro.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

2. Quindi, apri il /etc/vsftpd.conf file nel tuo editor di testo preferito. Questa demo utilizza nano per modificare il file di configurazione.

sudo nano /etc/vsftpd.conf

3. Cerca e modifica anonymous_enable valore della direttiva su NO. Gli utenti anonimi sono comunemente usati per la condivisione di file pubblici. Non vuoi quell'utente anonimo sul tuo server. Invece, vorrai che il tuo server FPT sia sicuro.

Imposta il valore della direttiva local_enable su YES per consentire alle persone con account sul tuo server di trasferire file tramite FTP. Con questa configurazione, solo gli utenti autorizzati possono accedere al tuo server FTP.

4. Ora cambia write_enable direttiva su SI in modo che i tuoi utenti possano caricare e salvare file sul tuo server FTP. Questa direttiva è la più importante, in quanto controlla l'accesso alla funzionalità di caricamento.

5. Modificare chroot_local_user direttiva su SI poiché il tuo utente FPT non dovrebbe essere eseguito come root. Creare un nuovo utente possibilmente privilegiato da utilizzare per il servizio FTP è molto più sicuro (imparerai come creare un utente dedicato in seguito).

Se questa direttiva non è abilitata, l'utente FPT avrà accesso a tutto sul server, anche alla directory principale. Questo comportamento può essere un ENORME problema di sicurezza.

Con questa configurazione, il tuo utente può accedere solo alle cartelle da te specificate (nella maggior parte dei casi la home directory dell'utente).

Ma quando il valore della direttiva chroot_local_user è impostato su YES, la direttiva write_enable (passaggio quattro) non funzionerà perché la syscall chroot() nega l'accesso in scrittura (se abilitata).

Come soluzione, aggiungi la direttiva seguente al tuo vsftpd.conf file, quindi la direttiva write_enable funzionerà indipendentemente dal valore della direttiva chroot_local_user.

allowed_writeable_chroot=YES

6. Successivamente, aggiungi le seguenti direttive al tuo vsftpd.conf per abilitare le connessioni FTP passive.

VSFTPD può utilizzare qualsiasi porta superiore a 1024 non occupata da un altro servizio per la connessione FTP passiva. Questa demo utilizza l'intervallo di porte impostato nella sezione "Apertura di porte per connessioni client FTP" (passaggio tre).

pasv_min_port=35000
pasv_max_port=40000

7. Aggiungi le seguenti righe in fondo a vsftpd.conf file per consentire solo agli utenti autorizzati di accedere al server FTP.

userlist_enable=YES
# Add the user to the vsftpd.userlist to allow a specific user 
# to use the system login account to access your FTP service.
userlist_file=/etc/vsftpd.userlist
# NO - anyone can log in with an anonymous account.
# YES - the user will be denied to login when their name exists in this file. 
userlist_deny=NO

8. Infine, salva e chiudi vsftpd.conf file ed esegui il comando seguente su restart il tuo vsftpd server per applicare le modifiche.

sudo service vsftpd restart

Creazione di un utente dedicato per utilizzare il servizio FTP

Ora hai configurato il tuo server VSFTPD, ma avrai bisogno di un utente dedicato per utilizzare il servizio FTP invece di un utente root. Creerai una directory all'interno della home directory dell'utente in modo che la directory sia facilmente accessibile.

1. Esegui adduser comando seguente per creare un nuovo utente. Puoi scegliere il nome utente che preferisci, ma questa demo crea un utente chiamato ata . Ma ricorda di non duplicare l'utente altrove sul tuo server.

sudo adduser ata

Fornisci una password sicura e prendine nota. Utilizzerai questa password per connetterti al tuo server FTP.

È inoltre necessario fornire alcuni dettagli per il nuovo utente o mantenere i dettagli predefiniti premendo INVIO. Digitare Y e premere INVIO per confermare le informazioni sull'utente.

2. Quindi, esegui il comando seguente per aggiungere il ata utente al vsftpd.userlist file.

Come ricorderete, questo file specifica a quali utenti è consentito accedere tramite FTP quando il valore della direttiva userlist_deny è impostato su NO. A questo punto, solo l'utente ata può accedere al tuo server FTP e a tutti gli altri utenti anonimi verrà negato l'accesso.

echo "ata" | sudo tee -a /etc/vsftpd.userlist

3. Esegui i seguenti comandi per impostare le autorizzazioni appropriate per il nuovo /home/ata/ftp directory.

I comandi seguenti assicurano che solo il tuo utente FTP dedicato abbia accesso alla directory /home/ata/ftp e consentono all'utente di trasferire file da/verso esso.

# Sets the owner of the /home/ata/ftp directory to be nobody.
sudo chown nobody:nogroup /home/ata/ftp
# Ensures that only the owner (your FTP user) 
# has write(w) access(a) to the /home/ata/ftp directory.
sudo chmod a-w /home/ata/ftp

4. Ora esegui chown comando per impostare il proprietario e il gruppo del /home/ata/ftp/upload directory al tuo utente FTP (ata ). Il comando imposta anche le autorizzazioni corrette per il /home/ata/ftp/upload directory.

sudo chown ata:ata /home/ata/ftp/upload

5. Esegui il echo comando seguente per creare un file di test di base denominato ata.txt .

Il comando seguente crea un nuovo file chiamato ata.txt nella tua directory FTP e include del testo (file di test vsftpd) nel file di testo.

echo "vsftpd test file" | sudo tee /home/ata/ftp/upload/ata.txt

A questo punto, hai completamente configurato il tuo server FPT e i tuoi utenti possono connettersi ad esso.

Connessione al server FTP

Dopo aver configurato un utente FTP dedicato, è finalmente giunto il momento di connettersi al tuo server FTP. Ma prima proverai a connetterti al tuo server FTP utilizzando un utente anonimo per verificare se il tuo server FTP è sicuro.

1. Esegui ftp -p comando seguente per connetterti al tuo server FTP. Sostituisci your-server-ip con il tuo indirizzo IP del server effettivo.

ftp -p your-server-ip

Prova ad accedere come utente anonimo e vedrai il seguente messaggio di errore. Questo output conferma che il tuo server FTP è sicuro poiché solo il tuo utente FTP dedicato può accedere al tuo server.

2. Esegui il bye comando per uscire dal client FTP.

bye

3. Riesegui il ftp comando di seguito come hai fatto nel passaggio uno. Ma questa volta, accedi come tuo utente FTP dedicato (ata).

ftp -p your-server-ip

Riceverai un messaggio 230 Accesso riuscito come mostrato di seguito, che conferma che il tuo server FTP funziona come previsto.

4. Ora, esegui ogni comando seguente per confermare ata.txt esiste in ftp/upload directory.

Il ata.txt è ciò che hai creato in precedenza nella sezione "Creazione di un utente dedicato per utilizzare il servizio FTP" (passaggio cinque).

# Change to the ftp/upload directory as the working directory.
cd ftp/upload
# List all files in the working directory.
ls

5. Esegui get comando seguente per scaricare il file (ata.txt ) dal tuo server FTP e salvalo sul tuo computer locale.

 get ata.txt

Di seguito, puoi vedere un messaggio di conferma che dice Trasferimento completato.

6. Quindi, esegui put comando qui sotto per caricare il ata.txt file dal tuo computer locale come un nuovo file denominato ata2.txt al tuo server FTP.

put ata.txt ata2.txt

7. Infine, riesegui il ls comando per elencare tutti i file nella directory corrente e verificare che ata2.txt è stato caricato con successo dal tuo utente.

ls

Se i precedenti trasferimenti di file (passaggi da sette a otto) sono riusciti, vedrai due file di testo:uno denominato ata.txt e un altro denominato ata2.txt, come mostrato di seguito.

Disabilitazione dell'accesso alla shell

Quando crei un nuovo utente FTP, il tuo server FTP consente automaticamente a quell'utente di accedere ed eseguire la shell. Di conseguenza, oltre a caricare e scaricare file, i tuoi utenti possono anche eseguire comandi di sistema potenzialmente pericolosi sul tuo server FTP.

Quando non utilizzi il server FTP, puoi disabilitare l'accesso alla shell per impedire agli utenti di accedere tramite SSH. Ciò è particolarmente importante se hai abilitato l'accesso senza password per il tuo utente FTP dedicato.

1. Apri un altro terminale sul tuo server ed esegui il comando seguente su ssh nel server FPT utilizzando l'utente FTP dedicato (ata ).

ssh [email protected]

Come mostrato di seguito, puoi accedere con successo utilizzando il nome utente ata con la password che hai creato in precedenza nella sezione "Creazione di un utente dedicato per utilizzare il servizio FTP".

Questo comportamento indica che l'utente ata può eseguire qualsiasi comando sul tuo server, inclusa la modifica delle configurazioni del server. Un utente FTP compromesso può fare molti più danni di uno anonimo.

2. Quindi, esegui il comando seguente per creare un nuovo script di shell chiamato ftponly.sh nel /bin directory del tuo server FPT. Questo script disabilita qualsiasi accesso FTP dal tuo utente FTP dedicato per il tuo server FTP. Lo script quindi stampa (echo ) un messaggio di avviso sullo schermo che dice This account is limited to FTP access only .

 echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a  /bin/ftponly .sh 

3. Esegui il seguente chmod comando per impostare i permessi corretti su questo nuovo script di shell (/bin/ftponly ). Questo comando rende eseguibile lo script e consente all'utente FTP (ata) di eseguirlo.

sudo chmod a+x /bin/ftponly

4. Ora, esegui il comando seguente per aggiungere il percorso del nuovo script della shell (ftponly ) nel tuo /etc/shells file. Questa azione garantisce che qualsiasi accesso che provi con il tuo utente ata venga rifiutato dal /bin/ftponly lo script verrà invece eseguito.

echo "/bin/ftponly" | sudo tee -a /etc/shells 

5. Esegui usermod comando seguente per cambiare la shell corrente del tuo utente FTP (ata) in /bin/ftponly guscio.

sudo usermod ata -s /bin/ftponly 

6. Infine, esegui il comando seguente in SSH sul tuo server FPT utilizzando il tuo utente FTP (ata ).

ssh [email protected]

Come mostrato di seguito, il tuo utente FTP dedicato non può inviare SSH al tuo server FTP. Questo comportamento è previsto dal momento che /bin/ftponly script di shell stampa un messaggio di avviso e chiude la connessione SSH (chiusa).

Conclusione

In questo tutorial, hai imparato come installare e configurare un server FTP in Ubuntu Linux usando VSFTPD. Hai anche imparato a configurare un utente FTP con accesso limitato e limitare l'accesso alla shell dell'utente FTP.

A questo punto dovresti avere un server FTP funzionante con accesso limitato.

Con questa nuova conoscenza, ora puoi configurare il tuo server FTP su AWS EC2, oppure puoi iniziare a configurare un server FTP sul tuo Raspberry Pi. Su quale sceglieresti di iniziare a lavorare?


Linux
  1. Come installare un server FTP su CentOS 7 con VSFTPD

  2. Come installare un server FTP su Ubuntu con vsftpd

  3. Come configurare il server di file FTP vsftpd su Redhat 7 Linux

  4. Come installare un server FTP su Rocky Linux 8 con VSFTPD

  5. Configurazione di un server FTP con vsFTPd su Raspberry Pi

Come impostare e configurare il server FTP su CentOS

Come installare il server FTP vsftpd con TLS su Debian 10

Come installare il server VsFTPD con TLS su Ubuntu 18.04 LTS

Come installare il server vsftpd su Debian 11

Come installare un server FTP?

Come configurare un server FTP con ProFTPD in Ubuntu 18.04