Connessione remota al server FTP FileZilla e regola Firewall
Sommario:
- Prerequisiti
- Installazione di vsftpd su Ubuntu 18.04
- Configurazione di vsftpd
- 1. Accesso FTP
- 2. Abilitazione dei caricamenti
- 3. Prigione di Chroot
- 4. Connessioni FTP passive
- 5. Limitazione dell'accesso utente
- 6. Protezione delle trasmissioni con SSL / TLS
- Riavvia il servizio vsftpd
- Apertura del firewall
- Creazione dell'utente FTP
- Disabilitazione dell'accesso alla shell
- Conclusione
FTP (File Transfer Protocol) è un protocollo di rete standard utilizzato per trasferire file da e verso una rete remota. Per trasferimenti di dati più sicuri e veloci, utilizzare SCP o SFTP.
Esistono molti server FTP open source disponibili per Linux. I più popolari e ampiamente utilizzati sono PureFTPd, ProFTPD e vsftpd. In questo tutorial, installeremo vsftpd (Very Secure Ftp Daemon). È un server FTP stabile, sicuro e veloce. Ti mostreremo anche come configurare vsftpd per limitare gli utenti alla loro home directory e crittografare l'intera trasmissione con SSL / TLS.
Sebbene questo tutorial sia scritto per Ubuntu 18.04, le stesse istruzioni valgono per Ubuntu 16.04 e qualsiasi distribuzione basata su Debian, inclusi Debian, Linux Mint e SO elementare.
Prerequisiti
Prima di continuare con questo tutorial, assicurati di aver effettuato l'accesso come utente con privilegi sudo.
Installazione di vsftpd su Ubuntu 18.04
Il pacchetto vsftpd è disponibile nei repository Ubuntu. Per installarlo, esegui semplicemente i seguenti comandi:
sudo apt update
sudo apt install vsftpd
Il servizio vsftpd si avvierà automaticamente al termine del processo di installazione. Verifica stampando lo stato del servizio:
sudo systemctl status vsftpd
L'output sarà simile al seguente, a dimostrazione 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 Mon 2018-10-15 03:38:52 PDT; 10min ago Main PID: 2616 (vsftpd) Tasks: 1 (limit: 2319) CGroup: /system.slice/vsftpd.service `-2616 /usr/sbin/vsftpd /etc/vsftpd.conf
Configurazione di vsftpd
Il server vsftpd può essere configurato modificando il file
/etc/vsftpd.conf
. La maggior parte delle impostazioni sono ben documentate all'interno del file di configurazione. Per tutte le opzioni disponibili, visita la pagina ufficiale vsftpd.
Nelle sezioni seguenti verranno esaminate alcune importanti impostazioni necessarie per configurare un'installazione vsftpd sicura.
Inizia aprendo il file di configurazione vsftpd:
1. Accesso FTP
Consentiremo l'accesso al server FTP solo agli utenti locali, troveremo le direttive
anonymous_enable
e
local_enable
e verificheremo che la configurazione corrisponda alle righe seguenti:
anonymous_enable=NO local_enable=YES
2. Abilitazione dei caricamenti
write_enable
impostazione
write_enable
per consentire modifiche al filesystem come il caricamento e l'eliminazione di file.
3. Prigione di Chroot
Per impedire agli utenti FTP di accedere a tutti i file al di fuori delle loro home directory rimuovere il commento dall'impostazione
chroot
.
chroot_local_user=YES
Per impostazione predefinita, per prevenire una vulnerabilità della sicurezza, quando chroot è abilitato vsftpd rifiuta di caricare file se la directory in cui sono bloccati gli utenti è scrivibile.
Utilizzare uno dei metodi seguenti per consentire i caricamenti quando è abilitato Chroot.
-
Metodo 1. - Il metodo consigliato per consentire il caricamento è mantenere chroot abilitato e configurare le directory FTP. In questo tutorial, creeremo una directory
/etc/vsftpd.confftp
all'interno della home dell'utente che fungerà da chroot e una directory diuploads
scrivibile per il caricamento dei file.user_sub_token=$USER local_root=/home/$USER/ftp
Metodo 2. - Un'altra opzione è quella di aggiungere la seguente direttiva nel file di configurazione vsftpd. Utilizzare questa opzione se è necessario concedere l'accesso scrivibile al proprio utente alla sua home directory.
/etc/vsftpd.confallow_writeable_chroot=YES
4. Connessioni FTP passive
vsftpd può usare qualsiasi porta per connessioni FTP passive. Specificheremo l'intervallo minimo e massimo di porte e successivamente apriremo l'intervallo nel nostro firewall.
Aggiungi le seguenti righe al file di configurazione:
/etc/vsftpd.conf
pasv_min_port=30000 pasv_max_port=31000
5. Limitazione dell'accesso utente
Per consentire solo a determinati utenti di accedere al server FTP aggiungere le seguenti righe alla fine del file:
userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO
Quando questa opzione è abilitata, è necessario specificare esplicitamente quali utenti sono in grado di accedere aggiungendo i nomi utente al file
/etc/vsftpd.user_list
(un utente per riga).
6. Protezione delle trasmissioni con SSL / TLS
Per crittografare le trasmissioni FTP con SSL / TLS, è necessario disporre di un certificato SSL e configurare il server FTP per utilizzarlo.
È possibile utilizzare un certificato SSL esistente firmato da un'autorità di certificazione attendibile o creare un certificato autofirmato.
Genereremo un certificato SSL autofirmato usando il comando
openssl
.
Il comando seguente creerà una chiave privata a 2048 bit e un certificato autofirmato valido per 10 anni. Sia la chiave privata che il certificato verranno salvati in uno stesso file:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Una volta creato il certificato SSL, apri il file di configurazione vsftpd:
sudo nano /etc/vsftpd.conf
Trova le direttive
rsa_cert_file
e
rsa_private_key_file
, modifica i loro valori nel percorso del file
pam
e imposta la direttiva
ssl_enable
su
YES
:
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 stabilire connessioni sicure.
Riavvia il servizio vsftpd
Una volta terminata la modifica, il file di configurazione di 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
Salvare il file e riavviare il servizio vsftpd per rendere effettive le modifiche:
Apertura del firewall
Per aprire la porta
21
(porta comando FTP), la porta
20
(porta dati FTP) e
30000-31000
(intervallo porte passive), eseguire i comandi seguenti:
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
Per evitare di essere bloccato, aprire la porta
22
:
sudo ufw allow OpenSSH
Ricarica le regole UFW disabilitando e riattivando UFW:
sudo ufw disable
sudo ufw enable
Per verificare le modifiche eseguite:
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 dell'utente FTP
Per testare il nostro server FTP creeremo un nuovo utente.
- Se hai già un utente a cui desideri concedere l'accesso FTP, salta il primo passaggio. Se imposti
allow_writeable_chroot=YES
nel tuo file di configurazione, salta il terzo passaggio.
-
Crea un nuovo utente chiamato
newftpuser
:sudo adduser newftpuser
Aggiungi l'utente all'elenco degli utenti FTP consentiti:
echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
Creare la struttura di directory FTP e impostare le autorizzazioni corrette:
sudo mkdir -p /home/newftpuser/ftp/upload
sudo chmod 550 /home/newftpuser/ftp
sudo chmod 750 /home/newftpuser/ftp/upload
sudo chown -R newftpuser: /home/newftpuser/ftp
Come discusso nella sezione precedente, l'utente sarà in grado di caricare i suoi file nella directory
ftp/upload
.
A questo punto, il tuo server FTP è perfettamente funzionante e dovresti essere in grado di connetterti al tuo server usando qualsiasi client FTP che può essere configurato per usare la crittografia TLS come FileZilla.
Disabilitazione dell'accesso alla shell
Per impostazione predefinita, quando si crea un utente, se non specificato esplicitamente, l'utente avrà accesso SSH al server.
Per disabilitare l'accesso alla shell, creeremo una nuova shell che stamperà semplicemente un messaggio che dice all'utente che il suo account è limitato solo all'accesso FTP.
Crea la shell
/bin/ftponly
e
/bin/ftponly
eseguibile:
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
Aggiungi la nuova shell all'elenco di shell valide nel
/etc/shells
:
echo "/bin/ftponly" | sudo tee -a /etc/shells
Cambia la shell dell'utente in
/bin/ftponly
:
sudo usermod newftpuser -s /bin/ftponly
Utilizzare lo stesso comando per modificare la shell di tutti gli utenti a cui si desidera dare solo l'accesso FTP.
Conclusione
In questo tutorial, hai imparato come installare e configurare un server FTP sicuro e veloce sul tuo sistema Ubuntu 18.04.
ftp ubuntuCome configurare e utilizzare il server ftp su Android
Vuoi trasferire file dal tuo dispositivo Android al PC senza cavo USB? Prova il metodo del server FTP per condividere file tra Android e PC in modalità wireless.
Come configurare il server ftp con vsftpd su centos 7
In questo tutorial installeremo vsftpd. È un server FTP stabile, sicuro e veloce. Ti mostreremo anche come configurare vsftpd per limitare gli utenti alla loro home directory e crittografare l'intera trasmissione con SSL / TLS.
Come configurare il server ftp con vsftpd su debian 9
In questo tutorial installeremo vsftpd. È un server FTP stabile, sicuro e veloce. Ti mostreremo anche come configurare vsftpd per limitare gli utenti alla loro home directory e crittografare l'intera trasmissione con SSL / TLS.