GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare FTPS VSFTPD con SSL/TLS su Ubuntu 18.04

FTP, acronimo di File Transfer Protocol, viene utilizzato per trasferire file tra computer e server in una determinata rete di computer. Il protocollo FTP utilizza un modo non sicuro di trasferimento dei dati e dovrebbe essere limitato alla rete di cui ti fidi. Invece, dovremmo avere FTPS (File Transfer Protocol with SSL) che usa una connessione sicura SSL tra le due estremità o usa SFTP (SSH File Transfer Protocol/Secure File Transfer Protocol).

Questo tutorial fornisce passaggi dettagliati su come configurare il server vsftpd protetto con SSL/TLS su Ubuntu 18.04 e connettersi al server utilizzando un terminale e strumenti GUI.

Installa il server VSFTPD

Ci sono diversi server FTP disponibili su Linux. Stiamo per installare vsftp. Per farlo su Ubuntu 18.04 digitiamo il seguente comando nel terminale:

sudo apt install vsftpd

Una volta installato vsftpd, il suo file di configurazione predefinito si trova in /etc/vsftpd.conf. Per apportare modifiche a quel file e testare le configurazioni personalizzate, creiamo inizialmente un backup di questo file. Per farlo puoi eseguire:

sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak

Quindi creiamo il file vsftpd.conf con il seguente comando:

sudo vim /etc/vsftpd.conf

e aggiungi le seguenti righe al file:vsftpsft

 listen=NO
 listen_ipv6=YES
 anonymous_enable=NO
 local_enable=YES
 write_enable=YES
 local_umask=022
 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
 pasv_enable=Yes
 pasv_min_port=10000
 pasv_max_port=11000
 user_sub_token=$USER
 local_root=/home/$USER/ftp
 userlist_enable=YES
 userlist_file=/etc/vsftpd.userlist
 userlist_deny=NO

Tieni presente che queste sono le configurazioni più utilizzate e sei libero di modificarle in base alle tue esigenze.

Ubuntu 18.04 è in arrivo con ufw (firewall semplice) preinstallato e abilitato. Puoi controllare se ufw è in esecuzione sulla tua macchina con questo comando:

sudo service ufw status

Se è in esecuzione e intendi lasciarlo in esecuzione, devi consentire il traffico in entrata verso le porte FTP (20,21 per le connessioni attive e 10000-10100 per quelle passive). Per farlo puoi eseguire:

sudo ufw allow from any to any port 20,21,10000:11000 proto tcp

In caso di successo, l'output sarà come quello seguente:

Rules updated
Rules updated (v6)

Dopo aver eseguito tutti questi passaggi, è necessario riavviare il server vsftpd con il seguente comando:

sudo service vsftpd restart

Creazione di un utente per la connessione al server FTP

Una volta installato e configurato il server vsftp in base alle nostre esigenze, non è necessario creare un utente (ad es. ftpsuer) per connettersi al server ftp. Per farlo puoi eseguire:

sudo useradd -m ftpuser

Crea la password per l'utente appena creato con il comando seguente:

sudo passwd ftpuser

Dopo ti verrà chiesto di inserire la nuova password UNIX e di ridigitarla per applicare le modifiche. L'output riuscito è simile a questo:

passwd: password updated successfully

Prepara la directory utente FTP

Una delle azioni più importanti che devono essere eseguite per proteggere la connessione FTP è limitare gli utenti alla loro home directory in modo che non abbiano alcun accesso ad altre directory. Per farlo in vsftpd dobbiamo abilitare chroot nel file di configurazione, cosa che abbiamo già fatto nelle configurazioni parte dell'articolo (chroot_local_user=YES ). Il modo in cui la sicurezza della directory di vsftpd presuppone che l'utente non abbia accesso in scrittura ad essa. Ma se stiamo concedendo l'accesso FTP agli utenti esistenti e stanno usando la shell per usare il server, potrebbe essere necessario che abbiano accesso in scrittura alla loro cartella home. Per evitare problemi di sicurezza e avere anche un accesso FTP appropriato per l'utente, creiamo una cartella ftp nella directory home dell'utente e la aggiungiamo alla configurazione di vsftpd come root locale durante la connessione tramite FTP. Inoltre, dobbiamo cambiare la proprietà della directory e rimuovere l'accesso in scrittura. Per farlo puoi eseguire:

sudo mkdir /home/ftpuser/ftp
sudo chown nobody:nogroup /home/ftpuser/ftp
sudo chmod a-w /home/ftpuser/ftp

quindi aggiungi/modifica le seguenti righe nel file di configurazione di vsftpd /etc/vsftpd.conf

user_sub_token=$USER 
local_root=/home/$USER/ftp

Dopo aver eseguito questi passaggi, dobbiamo creare un'altra cartella in /home/ftpuser/ftp e assegnarne la proprietà all'utente

sudo mkdir /home/ftpuser/ftp/files
sudo chown ftpuser:ftpuser/home/ftpuser/ftp/files

Per verificare che siamo in grado di visualizzare i file nella directory home dell'utente dopo la connessione al server FTP, creeremo un file di test in quella directory e aggiungeremo del testo al suo interno. Per farlo puoi eseguire:

echo "test file for vsftpd" | sudo tee /home/ftpuser/ftp/files/test.txt

Per consentire o negare l'accesso di utenti specifici a vsftpd possiamo utilizzare il file userlist e aggiungere il record appropriato nel file di configurazione vsftpd. Per farlo puoi eseguire quanto segue:

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

Se userlist_deny è impostato su NO, solo gli utenti aggiunti al file possono accedere al server FTP e se è impostato su YES, gli utenti elencati nel file non avranno accesso al server FTP e altri avranno accesso. Aggiungi nomi utente al file sopra menzionato con il comando seguente:

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

Configura SSL per VSFTPD

Poiché i dati (anche le credenziali) trasferiti tramite FTP non sono crittografati, possiamo abilitare TLS/SSL per fornire un altro livello di sicurezza al nostro server FTP. Per creare un certificato utilizzando openssl, esegui quanto segue:

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

dove -days 365 serve per aggiungere il certificato per un anno e aggiungere lo stesso valore per -out, -keyout flag per individuare la chiave privata e il certificato nello stesso file. Ti verrà chiesto di aggiungere tutte le informazioni necessarie per creare il certificato, come mostrato di seguito

Generating a 2048 bit RSA private key
.................+++
..............................................................................................+++
writing new private key to '/etc/ssl/private/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:AU
State or Province Name (full name) [Some-State]:SY
Locality Name (eg, city) []:Sydney
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linoxide
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:ubuntu
Email Address []:[email protected]

Dopo aver creato il certificato, dobbiamo aggiungerlo al file di configurazione vsftpd e abilitare SSL. Per fare ciò, aggiungi la seguente riga al file menzionato:

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

Dopo dobbiamo negare le connessioni anonime su SSL e richiedere SSL per il trasferimento dei dati e l'accesso. Per farlo, aggiungi le seguenti righe a /etc/vsftpd.conf file:

 allow_anon_ssl=NO
 force_local_data_ssl=YES
 force_local_logins_ssl=YES

Una volta aggiunte le righe precedenti, configureremo il server per utilizzare TLS, che è il successore preferito di SSL. Per fare ciò, aggiungi le seguenti righe nello stesso file:

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Dopo tutti i passaggi, il nostro file di configurazione vsftpd apparirà così:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
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
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=11000
user_sub_token=$USER
local_root=/home/$USER/ftp
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Dopo ogni modifica nel file di configurazione di vsftpd è necessario riavviare il servizio con il seguente comando:

sudo service vsftpd restart

Puoi anche configurare vsftpd per utilizzare il certificatoletsencrypt per sftp ma assicurati di avere un dominio da convalidare. Puoi aggiungere una variabile di percorso nella configurazione vsftpd in cui ssl cert e private sono le chiavi memorizzate.

rsa_cert_file=/ssl/letsencrypt/ftpdomain.com/chain-bundle.pem
rsa_private_key_file=/ssl/letsencrypt/ftpdomain.com/private-key.pem

Connessione al server FTP

Esistono due metodi per connettersi al server ftp:

  • utilizzando il terminale
  • utilizzo del client FTP con GUI

Connetti utilizzando il terminale

Per connettersi al server ftp tramite riga di comando, digitare il seguente comando nel terminale:

ftp ubuntu

Dove ubuntu è il nome host della macchina su cui è installato il server ftp. Assicurati che la macchina del server ftp sia accessibile tramite il suo nome host dalla macchina a cui stai tentando di connetterti.

Dopo la connessione ti verrà chiesto di inserire nome utente e password per la connessione al server ftp:

Connected to ubuntu.
220 (vsFTPd 3.0.3)
Name (ubuntu:ubuntu): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Digita ls per verificare se il file creato prima del test è presente:

ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 1001 1001 4096 May 21 13:39 files
226 Directory send OK.

Connetti tramite client FTP con GUI

Useremo Filezilla per connetterci al nostro server FTP installato su Linux. Per farlo, apri il client Filezilla sulla tua macchina e inserisci l'indirizzo IP del server FTP, le credenziali ftpuser per connetterti e premi il pulsante di connessione come mostrato nello screenshot qui sotto. Ti verrà chiesto di aggiungere il certificato a trusted, dopodiché sarai in grado di connetterti al server FTP.

Dopo la connessione possiamo vedere che il test.txt che abbiamo creato prima è lì.

Lettura correlata:

  • Come configurare il server SFTP MySecureShell su Ubuntu 18.04
  • 5 passaggi per installare e configurare ProFTPD su Debian 9 Stretch
  • 12 comandi lftp per gestire i file con esempi

Come puoi imparare dall'articolo, l'installazione del server vsftpd e la connessione ad esso è molto semplice e può essere eseguita in pochi passaggi. Il punto principale qui è proteggere il server ftp tramite il suo file di configurazione come eseguire il chroot dell'utente nella sua home directory, disabilitare l'accesso anonimo e aggiungere umask locale e autorizzazioni di lettura e scrittura dell'utente.


Ubuntu
  1. Come installare e configurare un server FTP (vsftpd) con SSL/TLS su Ubuntu 20.04

  2. Installa Vsftpd con SSL / TLS su Ubuntu 20.04 - Procedura migliore?

  3. Come proteggere vsFTPd con SSL/TLS

  4. Installa Vsftpd con SSL/TLS su Ubuntu 20.04

  5. Come configurare VSFTPD con connessione crittografata SSL/TLS?

Come installare il server VsFTPD con TLS su Ubuntu 18.04 LTS

Come installare ProFTPD con TLS su Ubuntu 20.04 LTS

Come installare e configurare Apache con Let's Encrypt TLS/SSL su Ubuntu 20.04

Come installare Nginx con Let's Encrypt TLS/SSL su Ubuntu 20.04

Come installare Vsftpd su Ubuntu 16.04

Come configurare vsftpd per utilizzare SSL/TLS su Ubuntu 20.04