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 SCP o SFTP .
Installazione di vsftpd su Ubuntu 20.04 #
Il pacchetto vsftpd è disponibile nei repository di Ubuntu. Per installarlo, esegui i seguenti comandi:
sudo apt update
sudo 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 - server FTP vsftpd Caricato: caricato (/lib/systemd/system/vsftpd.servizio; abilitato; preset del fornitore: abilitato) Attivo: attivo (in esecuzione) da Mar 2021-03-02 15:17:22 UTC; 3 secondi fa..
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 il abilitazione_anonima
e local_enable
direttive e verifica che la tua configurazione corrisponda alle righe seguenti:
Anonymous_enable=NO local_enable=SI
2. Abilitazione dei caricamenti #
Individua e decommenta il write_enable
direttiva per consentire modifiche al filesystem, come il caricamento e la rimozione di file:
write_enable=SI
3. Prigione di Chroot #
Per impedire agli utenti FTP locali di accedere ai file al di fuori delle loro home directory, rimuovere il commento dalla riga che inizia con chroot_local_user
:
chroot_local_user=SI
Per impostazione predefinita, per motivi di sicurezza, quando chroot è abilitato, vsftpd rifiuterà di caricare i file se la directory in cui gli utenti sono bloccati è scrivibile.
Usa una delle soluzioni seguenti per consentire i caricamenti quando chroot è abilitato:
Metodo 1. - L'opzione consigliata è quella di mantenere la funzionalità chroot abilitata e configurare le directory FTP. In questo esempio, creeremo un
/etc/vsftpd.confftp
directory all'interno della home dell'utente, che fungerà da chroot e scrivibilecaricamenti
directory per caricare i file:user_sub_token=$USER local_root=/home/$USER/ftp
Metodo 2. - Un'altra opzione è abilitare il enable
/etc/vsftpd.confallow_writeable_chroot
direttiva:allow_writeable_chroot=SI
Usa questa opzione solo se devi concedere l'accesso in scrittura al tuo utente alla sua home directory.
4. Connessioni FTP passive #
Per impostazione predefinita, vsftpd utilizza la modalità attiva. Per utilizzare la modalità passiva, impostare l'intervallo minimo e massimo di porte:
/etc/vsftpd.confpasv_min_port=30000 pasv_max_port=31000
Puoi usare qualsiasi porta per connessioni FTP passive passive. Quando la modalità passiva è abilitata, il client FTP apre una connessione al server su una porta casuale nell'intervallo che hai scelto.
5. Limitazione dell'accesso utente n
Puoi configurare vsftpd per consentire solo a determinati utenti di accedere. Per fare ciò, aggiungi le seguenti righe alla fine del file:
/etc/vsftpd.confuserlist_enable=S user userlist_file=/etc/vsftpd.user_list userlist_deny=NO
Quando questa opzione è abilitata, è necessario specificare esplicitamente quali utenti possono accedere aggiungendo i nomi utente al /etc/vsftpd.lista degli utenti
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 SSL gratuito Let's Encrypt.
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
Trovare la rsa_cert_file
e rsa_private_key_file
direttive, modificare i loro valori in pam
percorso del file e impostare il ssl_enable
direttiva a SÌ
:
rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=SI
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.conflisten=NO listen_ipv6=S anonymous_enable=NO local_enable=S write_enable=S dirmessage_enable=S use_localtime=S xferlog_enable=S connect_from_port_20=S chroot_local_user=S secure_chroot_dir=/var/run/vsftpd/empty_filec/pam_service_name=S privato/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=S user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=S 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), eseguire i seguenti comandi:
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
Per evitare di essere bloccato, assicurati che port 22
è aperto:
sudo ufw allow OpenSSH
Ricarica le regole UFW disabilitando e riabilitando UFW:
sudo ufw disabilita
sudo ufw enable
Per verificare l'esecuzione delle modifiche:
sudo ufw status
Stato: attivo A Azione da -- ------ ---- 20:21/tcp CONSENTI ovunque 30000:31000/tcp CONSENTI ovunque OpenSSH CONSENTI ovunque 20:21/tcp (v6) CONSENTI ovunque (v6) 30000: 31000/tcp (v6) CONSENTI ovunque (v6) OpenSSH (v6) CONSENTI ovunque (v6)
Creazione dell'utente FTP n
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=SI
nel file di configurazione, salta il 3° 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.lista degli utenti
Crea l'albero delle directory FTP e imposta i permessi corretti:
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 propri file nel
ftp/caricamento
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, durante la creazione di un utente, se non specificato esplicitamente, 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 solo all'accesso FTP.
Esegui i seguenti comandi per creare il /bin/ftponly
file e renderlo eseguibile:
echo -e '#!/bin/sh\necho "Questo account è limitato solo all'accesso FTP."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
Aggiungi la nuova shell all'elenco delle shell valide nel /etc/shells
file:
echo "/bin/ftponly" | sudo tee -a /etc/shells
Cambia la shell dell'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 l'accesso FTP.
Conclusione #
Ti abbiamo mostrato come installare e configurare un server FTP sicuro e veloce sul tuo Ubuntu 20.04 sistema.
Se hai domande o commenti, non esitare a lasciare un commento.