FTP

Come configurare FTP con TLS in Ubuntu

Come configurare FTP con TLS in Ubuntu
FTP (File Transfer Protocol) viene utilizzato principalmente per trasferire file tra computer. FTP funziona in architettura client-server, in cui il client richiede un file dal server e il server restituisce il file richiesto al client. Sulla 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 non sicuro, ma è possibile configurare FTP per trasferire dati su un canale sicuro. In questo tutorial imparerai come configurare un server FTP con TLS e quindi utilizzare FileZilla come applicazione client per connetterti con il server FTP.

Installazione di VSFTPD

VSFTPD (Very Secure FTP Daemon) è 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 tuo server emettendo il seguente comando.

[email protected]:~$ sudo apt-get update -y

Quindi, installa VSFTPD usando il seguente comando.

[email protected]:~$ sudo apt-get install vsftpd -y

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

[e-mail protetta]:~$ vsftpd -v

Il comando precedente restituirà 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 X casuale per una connessione dati e informa il server tramite connessione TCP Control 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 sulla macchina client.

Può sorgere un problema se il client si trova dietro un firewall e la porta X è 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 parleremo più avanti in questo articolo. Per impostazione predefinita, VSFTPD utilizza la modalità passiva, quindi dovremo cambiarla in modalità attiva.

Innanzitutto, apri il file di configurazione VSFTPD.

[email protected]:~$ sudo nano /etc/vsftpd.conf

Aggiungi la seguente riga alla fine del file.

pasv_enable=NO

Inoltre, assicurati che l'opzione "connect_from_port_20" sia impostata su "YES".' Questa opzione assicura che la connessione dati sia stabilita sulla porta 20 del server.

Quindi, 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.

[email protected]:~$ sudo mkdir /home/ubuntu/ftp

Ora, specifica questa directory nel file di configurazione cambiando l'opzione 'local_root'. Il seguente parametro configurerà il percorso root 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 modifichi il file di configurazione, riavvia sempre il server.

[email protected]:~$ sudo systemctl restart vsftpd

Impostazione di una password per un utente

Il client FTP si connette al server utilizzando un nome utente e una password. Imposta la password per il tuo utente sulla macchina usando il seguente comando.

[email protected]:~$ sudo passwd ubuntu

Il comando precedente chiederà 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 a qualsiasi porta casuale del client. Useremo ufw per configurare il firewall sul server. Installa ufw usando il seguente comando.

[email protected]:~$ sudo apt-get install ufw

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

[email protected]:~$ sudo ufw consenti da qualsiasi a qualsiasi porta proto tcp

Abilita e controlla lo stato di ufw usando i seguenti comandi.

[email protected]:~$ sudo ufw enable
[email protected]:~$ 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: Abilitare 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 tuo server remoto utilizzando SSH se abiliti 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 usando il seguente comando.

[email protected]:~$ sudo apt-get install filezilla -y

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

Quando fai clic su "Connessione rapida", ti connetterai al server FTP e verrai automaticamente portato alla directory specificata nell'opzione "local_root" nel file di configurazione "/home/ubuntu/ftp".

Problemi in modalità attiva

L'utilizzo di FTP in modalità attiva solleva problemi quando il client è dietro il firewall. Dopo aver immesso i comandi di controllo iniziali, quando il server crea una connessione dati con il client su una porta casuale, la porta potrebbe essere bloccata dal firewall sul client, causando il fallimento del trasferimento dei dati. FTP può essere utilizzato in modalità passiva per risolvere questi problemi del 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 verrà stabilita dal client anziché dal server. In risposta, il client riceve l'IP del server e il numero di porta casuale (questo numero di porta sarà configurato sul server). Il client utilizza questo IP e numero di porta per creare una connessione dati con il server. In modalità Passiva, sia i dati che le connessioni di controllo sono stabilite dal client, in modo che il firewall non disturbi la comunicazione tra client e server.

Apri il file di configurazione FTP nel tuo editor preferito.

[email protected]:~$ sudo nano /etc/vsftpd.conf

Impostare l'opzione 'pasv_enable' su 'YES' 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 principale del server e imposta l'opzione 'write_enable' su 'YES' per consentire agli utenti di caricare file sul server.

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

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

[email protected]:~$ sudo systemctl restart 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.

[email protected]:~$ sudo ufw consenti da qualsiasi a qualsiasi porta proto tcp

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

[email protected]:~$ sudo ufw enable

Consenti sempre le porte sul server prima di abilitare il firewall; in caso contrario, 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, puoi 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 protetto. Questo tipo di comunicazione non deve essere utilizzato se si desidera condividere dati sensibili tra client e server. Per comunicare su un canale sicuro è necessario utilizzare i certificati SSL.

Generazione di certificati SSL

Utilizzeremo i certificati SSL per impostare una comunicazione sicura tra il client e il server. Genereremo questi certificati usando openssl. Il seguente comando genererà certificati SSL per il tuo server.

[email protected]:~$ 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, verranno generati i certificati. Puoi controllare i certificati nel terminale.

[email protected]:~$ sudo ls /etc/ssl/private/

Utilizzo dei certificati nel file di configurazione

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

[email protected]:~$ sudo nano /etc/vsftpd.conf

Aggiungi le seguenti righe alla fine dei file. Queste modifiche garantiranno che il server FTP utilizzi i certificati SSL appena generati per comunicare in modo sicuro con il client.

ssl_enable=SI
force_local_data_ssl=NO
force_local_logins_ssl=NO
ssl_tlsv1=SI
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.

[email protected]:~$ sudo systemctl restart vsftpd

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

Se disponi di certificati di un'autorità di certificazione attendibile, questo avviso non dovrebbe apparire. Abbiamo generato i nostri certificati utilizzando openssl, che non è un'autorità di certificazione attendibile, motivo per cui nel nostro caso ha richiesto l'autenticazione del certificato. 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 renderanno il server FTP accessibile in modo anonimo.

La configurazione precedente imposta il percorso di root per gli utenti anonimi su "/home/ubuntu/ftp/anon" e non richiederà la password quando un utente anonimo accede.

NOTA: Assicurati che il percorso '/home/ubuntu/ftp/anon' esista sul server FTP.

Ora riavvia il server FTP.

[email protected]:~$ sudo systemctl restart 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 sopra ti porterà alla directory principale del server FTP, come specificato nel file di configurazione. Con l'accesso anonimo disabilitato, quando tenti di connetterti al server FTP utilizzando un browser, ti verrà prima richiesta l'autenticazione, quindi verrai indirizzato alla directory principale del server.

Configura 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 localmente senza utilizzare l'applicazione client FTP, ma possiamo bloccare questo accesso. Per fare ciò, dobbiamo modificare il parametro 'local_enable'.

Innanzitutto, riavvia il server FTP.

[email protected]:~$ sudo systemctl restart 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 usando SSH.

[email protected]:~$ ssh [email protected] -i

Ora, emetti il ​​seguente comando per accedere al server FTP localmente utilizzando l'interfaccia della riga di comando.

[email protected]:~$ ftp localhost

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

Conclusione

File Transfer Protocol è stato utilizzato per molti anni per trasferire file e documenti su Internet. VSFTPD è uno dei pacchetti utilizzati come server FTP sulla tua macchina. VSFTPD contiene varie configurazioni che puoi usare per personalizzare il tuo server FTP. Questo tutorial ti ha mostrato come configurare un server FTP con TLS per una maggiore sicurezza. Per saperne di più sulle configurazioni FTP, visita il seguente link.

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

Le migliori app di mappatura del gamepad per Linux
Se ti piace giocare su Linux con un gamepad invece di un tipico sistema di input di tastiera e mouse, ci sono alcune app utili per te. Molti giochi pe...
Strumenti utili per i giocatori Linux
Se ti piace giocare su Linux, è probabile che tu abbia utilizzato app e utilità come Wine, Lutris e OBS Studio per migliorare l'esperienza di gioco. O...
Giochi rimasterizzati in HD per Linux che non hanno mai avuto una versione Linux prima
Molti sviluppatori ed editori di giochi stanno realizzando remaster HD di vecchi giochi per prolungare la vita del franchise, per favore i fan richied...