GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare il server FTP con VSFTPD su Ubuntu 20.04

Questo articolo descrive come installare e configurare un server FTP su Ubuntu 20.04 che usi per condividere file tra i tuoi dispositivi.

FTP (File Transfer Protocol) è un protocollo di rete standard utilizzato per trasferire file da e verso una rete remota. Sono disponibili diversi server FTP open source per Linux. I più conosciuti e ampiamente utilizzati sono PureFTPd, ProFTPD e vsftpd. Installeremo vsftpd (Very Secure Ftp Daemon), un server FTP stabile, sicuro e veloce. Ti mostreremo anche come configurare il server per limitare gli utenti alla loro home directory e crittografare l'intera trasmissione con SSL/TLS.

Sebbene FTP sia un protocollo molto popolare, per trasferimenti di dati più sicuri e veloci, dovresti usare SCPor SFTP.

Installazione di vsftpd su Ubuntu 20.04 #

Il pacchetto vsftpd è disponibile nei repository di Ubuntu. Per installarlo, esegui i seguenti comandi:

sudo apt updatesudo apt install vsftpd

Il servizio ftp si avvierà automaticamente una volta completato il processo di installazione. Per verificarlo, stampa lo stato del servizio:

sudo systemctl status vsftpd

L'output dovrebbe mostrare che il servizio vsftpd è attivo e in esecuzione:

● vsftpd.service - vsftpd FTP server
     Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-03-02 15:17:22 UTC; 3s ago
...

Configurazione di vsftpd #

La configurazione del server vsftpd è memorizzata in /etc/vsftpd.conf file.

La maggior parte delle impostazioni del server sono ben documentate all'interno del file. Per tutte le opzioni disponibili, visita la pagina della documentazione di vsftpd.

Nelle sezioni seguenti esamineremo alcune importanti impostazioni necessarie per configurare un'installazione sicura di vsftpd.

Inizia aprendo il file di configurazione vsftpd:

sudo nano /etc/vsftpd.conf

1. Accesso FTP #

Consentiremo l'accesso al server FTP solo agli utenti locali. Cerca anonymous_enable e local_enable direttive e verifica che la tua configurazione corrisponda alle righe seguenti:

/etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES

2. Abilitazione dei caricamenti #

Individua e decommenta write_enable direttiva per consentire modifiche al filesystem, come il caricamento e la rimozione di file:

/etc/vsftpd.conf
write_enable=YES

3. Prigione di Chroot #

Per impedire agli utenti FTP locali di accedere ai file al di fuori delle loro directory home, decommentare la lne che inizia con chroot_local_user :

/etc/vsftpd.conf
chroot_local_user=YES

Per impostazione predefinita, per motivi di sicurezza, quando chroot è abilitato, vsftpd rifiuterà di caricare file se la directory in cui sono bloccati gli utenti è scrivibile.

Utilizza una delle soluzioni seguenti per consentire i caricamenti quando chroot è abilitato:

  • Metodo 1. - L'opzione consigliata è mantenere abilitata la funzione chroot e configurare le directory FTP. In questo esempio creeremo un ftp directory all'interno della home dell'utente, che fungerà da chroot e da uploads scrivibili directory per il caricamento dei file:

    /etc/vsftpd.conf
    user_sub_token=$USER
    local_root=/home/$USER/ftp
  • Metodo 2. - Un'altra opzione è abilitare allow_writeable_chroot direttiva:

    /etc/vsftpd.conf
    allow_writeable_chroot=YES

    Usa questa opzione solo se devi concedere l'accesso scrivibile al tuo utente alla sua home directory.

4. Connessioni FTP passive #

Per impostazione predefinita, vsftpd utilizza la modalità attiva. Per utilizzare la modalità passiva, imposta l'intervallo minimo e massimo di porte:

/etc/vsftpd.conf
pasv_min_port=30000
pasv_max_port=31000

È possibile utilizzare qualsiasi porta per connessioni FTP passive. Quando la modalità passiva è abilitata, il client FTP apre una connessione al server su una porta casuale nell'intervallo che hai scelto.

5. Limitare l'accesso degli utenti #

Puoi configurare vsftpd per consentire solo a determinati utenti di accedere. Per farlo, aggiungi le seguenti righe alla fine del file:

/etc/vsftpd.conf
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

Quando questa opzione è abilitata, è necessario specificare esplicitamente quali utenti possono accedere aggiungendo i nomi utente a /etc/vsftpd.user_list file (un utente per riga).

6. Protezione delle trasmissioni con SSL/TLS #

Per crittografare le trasmissioni FTP con SSL/TLS, dovrai disporre di un certificato SSL e configurare il server FTP per utilizzarlo.

Puoi utilizzare un certificato SSL esistente firmato da un'autorità di certificazione attendibile o creare un certificato autofirmato.

Se hai un dominio o un sottodominio che punta all'indirizzo IP del server FTP, puoi generare rapidamente un certificato Let's EncryptSSL gratuito.

Genereremo una chiave privata a 2048 bit e un certificato SSL autofirmato che sarà valido per dieci anni:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Sia la chiave privata che il certificato verranno salvati nello stesso file.

Una volta creato il certificato SSL, apri il file di configurazione vsftpd:

sudo nano /etc/vsftpd.conf

Trova il rsa_cert_file e rsa_private_key_file direttive, cambia i loro valori in pam percorso del file e imposta ssl_enable direttiva su YES :

/etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

Se non diversamente specificato, il server FTP utilizzerà solo TLS per effettuare connessioni sicure.

Riavvia il servizio vsftpd #

Una volta terminata la modifica, il file di configurazione vsftpd (esclusi i commenti) dovrebbe assomigliare a questo:

/etc/vsftpd.conf
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

Salva il file e riavvia il servizio vsftpd per rendere effettive le modifiche:

sudo systemctl restart vsftpd

Apertura del firewall #

Se stai eseguendo un firewall UFW, dovrai consentire il traffico FTP.

Per aprire la porta 21 (porta comando FTP), porta 20 (porta dati FTP) e 30000-31000 (Intervallo di porte passive), esegui i seguenti comandi:

sudo ufw allow 20:21/tcpsudo ufw allow 30000:31000/tcp

Per evitare di essere bloccato, assicurati di portare 22 è aperto:

sudo ufw allow OpenSSH

Ricarica le regole UFW disabilitando e riattivando UFW:

sudo ufw disablesudo ufw enable

Per verificare le modifiche esegui:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
20:21/tcp                  ALLOW       Anywhere
30000:31000/tcp            ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
20:21/tcp (v6)             ALLOW       Anywhere (v6)
30000:31000/tcp (v6)       ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)

Creazione utente FTP #

Per testare il server FTP, creeremo un nuovo utente.

  • Se l'utente a cui vuoi concedere l'accesso FTP esiste già, salta il primo passaggio.
  • Se imposti allow_writeable_chroot=YES nel tuo file di configurazione, salta il 3° passaggio.
  1. Crea un nuovo utente chiamato newftpuser :

    sudo adduser newftpuser
  2. Aggiungi l'utente all'elenco degli utenti FTP consentiti:

    echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
  3. Crea l'albero delle directory FTP e imposta le autorizzazioni corrette:

    sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftp

    Come discusso nella sezione precedente, l'utente potrà caricare i propri file su ftp/upload directory.

A questo punto, il tuo server FTP è completamente funzionante. Dovresti essere in grado di connetterti al server utilizzando qualsiasi client FTP che può essere configurato per utilizzare la crittografia TLS, come FileZilla.

Disabilitazione dell'accesso alla shell #

Per impostazione predefinita, quando si crea un utente, se non esplicitamente specificato, l'utente avrà accesso SSH al server. Per disabilitare l'accesso alla shell, crea una nuova shell che stamperà un messaggio che informa l'utente che il suo account è limitato al solo accesso FTP.

Esegui i seguenti comandi per creare il /bin/ftponly file e renderlo eseguibile:

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

Aggiungi la nuova shell all'elenco delle shell valide in /etc/shells file:

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

Cambia la shell utente in /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

Puoi usare lo stesso comando per cambiare la shell di tutti gli utenti a cui vuoi dare solo accesso FTP.


Ubuntu
  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 FTP su Ubuntu 20.04 Focal Fossa Linux

  4. Come configurare e utilizzare il server FTP in Ubuntu Linux

  5. Imposta il server Rsyslog su Ubuntu 20.04 - Come farlo?

Come installare il server VsFTPD con TLS su Ubuntu 18.04 LTS

Come configurare il server DHCP su Ubuntu

Come configurare un server FTP sicuro con Pure-FTPd su Ubuntu

Come installare Vsftpd su Ubuntu 16.04

Come installare un server FTP?

Come configurare il server FTP con VSFTPD