Come configurare FTP con TLS in Ubuntu

Come configurare FTP con TLS in Ubuntu
FTP (protocollo di trasferimento di file) viene utilizzato principalmente per trasferire i file tra i computer. FTP funziona nell'architettura client-server, in cui il client chiede un file dal server e il server restituisce il file richiesto al client. Sul macchina client, l'applicazione client FTP viene utilizzata per comunicare con il server. È anche possibile accedere al server FTP sul browser. Per impostazione predefinita, FTP comunica su un canale insicuro, ma è possibile configurare FTP per trasferire i dati su un canale sicuro. In questo tutorial, imparerai come configurare un server FTP con TLS e quindi utilizzare FileZilla come applicazione client per connettersi con il server FTP.

Installazione di VSFTPD

VSFTPD (Daemon FTP molto sicuro) è un programma software utilizzato per configurare FTP su un server. In questo tutorial, VSFTPD verrà utilizzato per configurare il server FTP sulla macchina. Prima di installare VSFTPD, aggiorna i repository nel server emettendo il seguente comando.

ubuntu@ubuntu: ~ $ sudo apt -get update -y

Successivamente, installa VSFTPD utilizzando il comando seguente.

ubuntu@ubuntu: ~ $ sudo apt -get install vsftpd -y

Infine, verifica l'installazione controllando la versione di VSFTPD con il seguente comando.

ubuntu@ubuntu: ~ $ vsftpd -v

Il comando sopra emetterà la versione di vsftpd se l'installazione ha esito positivo.

FTP in modalità attiva

In modalità attiva, il client FTP avvia la sessione stabilendo la connessione di controllo TCP da qualsiasi porta casuale sulla macchina client alla porta 21 del server. Quindi, il client inizia ad ascoltare su una porta casuale X per una connessione dati e informa il server tramite la connessione di controllo TCP che il client è in attesa della connessione dati sulla porta x. Successivamente, il server stabilisce una connessione dati dalla sua porta 20 alla porta X sul computer client.

Può sorgere un problema in cui il cliente è dietro un firewall e la porta X viene bloccata. In questo caso, il server non è in grado di stabilire una connessione dati con il client. Per evitare questo problema, il server FTP viene utilizzato principalmente in modalità passiva, di cui discuteremo più avanti in questo articolo. Per impostazione predefinita, VSFTPD utilizza la modalità passiva, quindi dovremo cambiarlo in modalità attiva.

Innanzitutto, aprire il file di configurazione VSFTPD.

ubuntu@ubuntu: ~ $ sudo nano /etc /vsftpd.conf

Aggiungi la riga seguente alla fine del file.

PASV_ENABLE = NO

Inoltre, assicurati che l'opzione "Connect_from_port_20" sia impostata su "Sì.'Questa opzione garantisce che la connessione dati sia stabilita sulla porta 20 del server.

Successivamente, crea una directory che il server FTP utilizzerà per archiviare i file. Per questo tutorial, configureremo '/home/ubuntu/ftp/' come percorso di root per il server FTP.

ubuntu@ubuntu: ~ $ sudo mkdir/home/ubuntu/ftp

Ora, specifica questa directory nel file di configurazione modificando l'opzione "local_root". Il seguente parametro configurerà il percorso principale del server.

local_root =/home/ubuntu/ftp

L'opzione "write_enable" deve essere abilitata per consentire agli utenti di scrivere sul server FTP.

Ogni volta che si modifica il file di configurazione, riavvia sempre il server.

ubuntu@ubuntu: ~ $ sudo systemctl riavvio vsftpd

Impostazione di una password per un utente

Il client FTP si collega al server utilizzando un nome utente e una password. Imposta la password per l'utente sulla macchina utilizzando il comando seguente.

ubuntu@ubuntu: ~ $ sudo passwd ubuntu

Il comando sopra richiederà la password per l'utente "Ubuntu".

Configurazione del firewall per la modalità attiva

Se FTP viene utilizzato in modalità attiva, il server FTP utilizzerà due porte per comunicare con il client, le porte 21 e 22. La porta 21 viene utilizzata per passare i comandi al client e la porta 20 viene utilizzata per trasferire i dati su qualsiasi porta casuale del client. Useremo UFW per configurare il firewall sul server. Installa UFW utilizzando il seguente comando.

ubuntu@ubuntu: ~ $ sudo apt-get install ufw

Ora, sul lato server, apriremo le porte 20, 21 e 22 (per la connessione SSH).

ubuntu@ubuntu: ~ $ sudo ufw Consenti da qualsiasi a qualsiasi Port Proto TCP

Abilita e controlla lo stato di UFW utilizzando i seguenti comandi.

ubuntu@ubuntu: ~ $ sudo ufw abilita
ubuntu@ubuntu: ~ $ sudo ufw status

NOTA: Se stai configurando il tuo server FTP sul cloud, dovrai anche consentire le porte 20, 21 e 22 nel gruppo di sicurezza.

AVVERTIMENTO: Abilita sempre la porta 22, insieme alle porte richieste, prima di abilitare UFW sul sistema remoto. Per impostazione predefinita, UFW blocca il traffico dalla porta 22, quindi non sarai in grado di accedere al server remoto utilizzando SSH se si abilita UFW senza consentire il traffico dalla porta 22.

Installazione del client FTP

Ora, il nostro server è configurato in modalità attiva e possiamo accedervi dal lato client. Per l'applicazione client, utilizzeremo Filezilla, un'applicazione client FTP. Installa filezilla utilizzando il comando seguente.

ubuntu@ubuntu: ~ $ sudo apt -get installa filezilla -y

Apri l'applicazione client FTP e inserisci l'indirizzo IP pubblico e altre credenziali del server FTP.

Quando si fa clic su "QuickConnect", ti connetterai al server FTP e verrà automaticamente portato alla directory specificata nell'opzione "Local_root" nel file di configurazione "/home/ubuntu/ftp".

Problemi in modalità attiva

L'uso di FTP in modalità attiva solleva problemi quando il client è dietro il firewall. Dopo aver inserito i comandi di controllo iniziali, quando il server crea una connessione dati con il client su una porta casuale, la porta può essere bloccata dal firewall sul client, causando il trasferimento dei dati di fallimento. FTP può essere utilizzato in modalità passiva per risolvere questi problemi di firewall.

FTP in modalità passiva

In modalità passiva, il client crea una connessione di controllo con il server sulla porta 21 del server. Il client invia quindi il comando speciale "PASV" per informare il server che la connessione dati sarà stabilita dal client anziché dal server. In risposta, il client riceve il server IP e il numero di porta casuale (questo numero di porta verrà configurato sul server). Il client utilizza questo numero IP e porta per creare una connessione dati con il server. In modalità passiva, sia le connessioni di dati che di controllo sono stabilite dal client, in modo che il firewall non disturbi la comunicazione tra il client e il server.

Apri il file di configurazione FTP nel tuo editor preferito.

ubuntu@ubuntu: ~ $ sudo nano /etc /vsftpd.conf

Imposta l'opzione "PASV_ENABLE" su "Sì" nel file in modo che il server possa comunicare con il client in modalità passiva. Inoltre, imposta l'opzione "Local_root" per specificare la directory root del server e impostare l'opzione "write_enable" su "Sì" per consentire agli utenti di caricare file sul server.

Come discusso in precedenza, la connessione dati è stabilita dal client e il server invia il proprio IP pubblico e una porta casuale al client per creare una connessione dati. Questa porta casuale sul server può essere specificata da una gamma di porte nel file di configurazione.

La connessione dati tra il server e il client verrà stabilita su una porta tra 1024 e 1048. Riavvia il server FTP dopo aver modificato il file di configurazione.

ubuntu@ubuntu: ~ $ sudo systemctl riavvio vsftpd

Configurazione del firewall in modalità passiva

Se utilizziamo FTP in modalità passiva, la connessione dati verrà stabilita su qualsiasi porta da 1024 a 1048, quindi è necessario consentire tutte queste porte sul server FTP.

ubuntu@ubuntu: ~ $ sudo ufw Consenti da qualsiasi a qualsiasi Port Proto TCP

Dopo aver concesso tutte le porte sul firewall, attiva l'UFW eseguendo il comando seguente.

ubuntu@ubuntu: ~ $ sudo ufw abilita

Consenti sempre le porte sul server prima di abilitare il firewall; Altrimenti, non sarai in grado di accedere al tuo server tramite SSH come UFW, che blocca la porta 22 per impostazione predefinita.

Testare la connessione

Ora, abbiamo impostato il server FTP in modalità passiva e possiamo controllare la connessione FTP con l'applicazione client. Apri Filezilla nel tuo sistema per farlo.

Dopo aver inserito l'host, il nome utente, la password e la porta, ora puoi connetterti con il tuo server. Ora che sei connesso al server FTP in esecuzione in modalità passiva, è possibile caricare file sul server.

Configurazione dei certificati SSL con il server FTP

Per impostazione predefinita, il server FTP stabilisce la connessione tra il client e il server su un canale non garantito. Questo tipo di comunicazione non deve essere utilizzato se si desidera condividere dati sensibili tra il client e il server. Per comunicare su un canale sicuro, è necessario utilizzare i certificati SSL.

Generazione di certificati SSL

Utilizzeremo i certificati SSL per impostare la comunicazione sicura tra il client e il server. Genereremo questi certificati utilizzando OpenSSL. Il seguente comando genererà certificati SSL per il tuo server.

ubuntu@ubuntu: ~ $ sudo openssl req -x509 -nodes -day 365 -newkey RSA: 2048 -Keyout/etc/ssl/private/vsftpd.PEM -out/etc/ssl/private/vsftpd.PEM

Quando esegui il comando sopra, ti verranno poste alcune domande. Dopo aver risposto a queste domande, i certificati verranno generati. È possibile verificare i certificati nel terminale.

ubuntu@ubuntu: ~ $ sudo ls/etc/ssl/private/

Utilizzo dei certificati nel file di configurazione

Ora, i nostri certificati sono pronti per l'uso. Configureremo il 'vsftpd.File conf 'per utilizzare i certificati SSL per la comunicazione. Apri il file di configurazione con il seguente comando.

ubuntu@ubuntu: ~ $ sudo nano /etc /vsftpd.conf

Aggiungi le seguenti righe alla fine dei file. Queste modifiche assicureranno che il server FTP utilizzi i certificati SSL di recente generazione per comunicare in modo sicuro con il client.

ssl_enable = sì
force_local_data_ssl = n
force_local_logins_ssl = n
ssl_tlsv1 = sì
SSL_SSLV2 = NO
SSL_SSLV3 = NO
rsA_cert_file =/etc/ssl/private/vsftpd.PEM
RSA_PRIVATE_KEY_FILE =/etc/ssl/private/vsftpd.PEM

Riavvia il server FTP per applicare queste modifiche.

ubuntu@ubuntu: ~ $ sudo systemctl riavvio vsftpd

Dopo aver riavviato il server, prova a connetterti con il server utilizzando l'applicazione client filezilla. Questa volta, l'applicazione client ti chiederà se fidarsi di questi certificati.

Se si dispone di certificati da un'autorità di certificazione di fiducia, questo avviso non dovrebbe apparire. Abbiamo generato i nostri certificati utilizzando OpenSSL, che non è un'autorità di certificazione di fiducia, motivo per cui ha chiesto l'autenticazione del certificato nel nostro caso. Ora possiamo comunicare tra il client e il server su un canale sicuro.

Configurazione anonima

Puoi anche abilitare l'accesso anonimo sul tuo server FTP. Con questa configurazione abilitata, qualsiasi utente può accedere al server FTP con qualsiasi nome utente e password. I seguenti parametri nel file di configurazione rendono il server FTP accessibile in modo anonimo.

La configurazione sopra imposta il percorso principale per gli utenti anonimi per essere '/home/ubuntu/ftp/anon' e non richiederà la password quando un utente anonimo accede.

NOTA: Assicurarsi che il percorso '/home/ubuntu/ftp/anon' esistasse sul server FTP.

Ora riavvia il server FTP.

ubuntu@ubuntu: ~ $ sudo systemctl riavvio vsftpd

Dopo aver riavviato il server, proveremo a connetterci al server tramite il browser Google Chrome. Vai al seguente URL.

ftp: // 3.8.12.52

L'URL di cui sopra ti porterà alla directory principale del server FTP, come specificato nel file di configurazione. Con l'accesso anonimo disabilitato, quando si tenta di connetterti al server FTP utilizzando un browser, ti verrà prima chiesto l'autenticazione, quindi verrai portato alla directory principale del server.

Configurare l'accesso locale

Possiamo anche consentire o bloccare l'accesso locale al server FTP modificando il file di configurazione. Attualmente, possiamo accedere al nostro server FTP a livello locale senza utilizzare l'applicazione client FTP, ma possiamo bloccare questo accesso. Per fare ciò, dobbiamo modificare il parametro "local_enable".

Innanzitutto, riavviare il server FTP.

ubuntu@ubuntu: ~ $ sudo systemctl riavvio vsftpd

Dopo aver riavviato il server, prova ad accedere al server FTP localmente utilizzando l'interfaccia della riga di comando. Accedi al tuo server remoto utilizzando SSH.

ubuntu@ubuntu: ~ $ ssh [email protected] -I

Ora, emetti il ​​seguente comando per accedere a FTP Server a livello locale utilizzando l'interfaccia della riga di comando.

ubuntu@ubuntu: ~ $ ftp localhost

Quando esegui il comando sopra, lancerà un errore 500.

Conclusione

Il protocollo di trasferimento di file è stato utilizzato per molti anni per trasferire file e documenti su Internet. VSFTPD è uno dei pacchetti utilizzati come server FTP sulla macchina. VSFTPD contiene varie configurazioni che è possibile utilizzare per personalizzare il server FTP. Questo tutorial ha mostrato come configurare un server FTP con TLS per una sicurezza avanzata. Per saperne di più sulle configurazioni FTP, visitare il seguente link.

http: // vsftpd.bestie.org/vsftpd_conf.html