GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare FTP con TLS in Ubuntu

FTP (File Transfer Protocol) viene utilizzato principalmente per trasferire file tra computer. FTP funziona su un'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 tramite il browser. Per impostazione predefinita, FTP comunica su un canale non sicuro, 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 connetterti al server FTP.

Installa VSFTPD

VSFTPD (Very Secure FTP Daemon) è un programma software per la configurazione dell'FTP su un server. Questo tutorial usa VSFTPD per configurare il server FTP sul computer. Prima di installare VSFTPD, aggiorna i repository sul tuo server eseguendo il comando seguente.

[email protetta]:~$ sudo apt-get-update -and

Quindi, installa VSFTPD con il seguente comando.

[email protetta]:~$ sudo apt-get install vsftpd -and

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

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

Il comando precedente stampa la versione di vsftpd se l'installazione è andata a buon fine.

FTP in modalità attiva

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

Può verificarsi un problema quando il client è protetto da un firewall e la porta X è bloccata. In questo caso, il server non può stabilire una connessione dati al client. Il più delle volte, per evitare questo problema, il server FTP viene utilizzato in modalità passiva, di cui parleremo più avanti in questo articolo. Per impostazione predefinita, VSFTPD utilizza la modalità passiva, quindi è necessario cambiarla in modalità attiva.

Innanzitutto, apri il file di configurazione VSFTPD.

[protetto dalla posta elettronica]:~$ sudo Nano /etc/vsftpd.conf

Aggiungi la riga seguente alla fine del file.

pasv_enable=NO

Assicurati inoltre che l'opzione 'connect_from_port_20' sia impostata su 'YES'. Questa opzione garantisce 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 root per il server FTP.

[protetto dalla posta elettronica]:~$ sudo mkdir /home/ubuntu/ftp

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

radice_locale=/home/ubuntu/ftp

L'opzione 'write_enable' deve essere abilitata affinché gli utenti possano scrivere sul server FTP.

Riavvia sempre il server quando modifichi il file di configurazione.

[protetto dalla posta elettronica]:~$ sudo systemctl restart vsftpd

Imposta una password per un utente

Il client FTP si connette al server con un nome utente e una password. Imposta la password per il tuo utente sul dispositivo utilizzando il comando seguente.

[e-mail protetto]:~$ sudo passwd ubuntu

Il comando precedente richiede la password per l'utente 'ubuntu'.

Configura il firewall per la modalità attiva

Quando FTP viene utilizzato in modalità attiva, il server FTP utilizza due porte per comunicare con il client, la porta 21 e la 22. La porta 21 viene utilizzata per passare i comandi al client e la porta 20 viene utilizzata per inviare dati a qualsiasi porta di . per trasferire il cliente. Useremo ufw per configurare il firewall sul server. Installa ufw con il seguente comando.

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

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

[email protetta]:~$ sudo ufw consente proto tcp da chiunque a qualsiasi porta

Abilita e verifica lo stato di ufw con i seguenti comandi.

[email protetta]:~$ abilita sudo ufw

[e-mail protetto]:~$ sudo ufw status

NOTA: Se configuri il tuo server FTP nel cloud, devi consentire anche le porte 20, 21 e 22 nel gruppo di sicurezza.

AVVISO: Abilitare sempre la porta 22 insieme alle porte richieste prima di abilitare ufw sul sistema remoto. Per impostazione predefinita, se abiliti ufw senza consentire il traffico sulla porta 22, UFW bloccherà il traffico sulla porta 22, quindi non sarai in grado di accedere al tuo server remoto tramite SSH.

Installa client FTP

Ora il nostro server è configurato in modalità attiva e possiamo accedervi dal lato client. Per l'applicazione client utilizziamo FileZilla, un'applicazione client FTP. Installa FileZilla con il seguente comando.

[email protetta]:~$ sudo apt-get install filezilla -and

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

Quando fai clic su "Quickconnect", ti connetti al server FTP e vieni automaticamente indirizzato alla directory specificata nell'opzione "root_locale" nel file di configurazione "/home/ubuntu/ftp".

Problemi con la modalità attiva

L'utilizzo di FTP in modalità attiva causa problemi quando il client è dietro il firewall. Se, dopo aver immesso i comandi di controllo iniziali, il server stabilisce una connessione dati con il client su una porta casuale, la porta potrebbe essere bloccata dal firewall del client, causando il mancato 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 stabilisce 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 viene effettuata dal client anziché dal server. In risposta, il client ottiene l'IP del server e un numero di porta casuale (questo numero di porta è configurato sul server). Il client utilizza questo IP e questo numero di porta per stabilire una connessione dati con il server. In modalità passiva, sia i dati che le connessioni di controllo vengono stabilite dal client in modo che il firewall non interferisca con la comunicazione tra client e server.

Apri il file di configurazione FTP nel tuo editor preferito.

[protetto dalla posta elettronica]:~$ sudo Nano /etc/vsftpd.conf

Impostare l'opzione 'pasv_enable' nel file su 'YES' per consentire al server di comunicare con il client in modalità passiva. Imposta anche 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 accennato in precedenza, la connessione dati viene effettuata dal client e il server invia il proprio IP pubblico e una porta casuale al client per stabilire una connessione dati. Questa porta casuale sul server può essere specificata da un intervallo di porte nel file di configurazione.

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

[protetto dalla posta elettronica]:~$ sudo systemctl restart vsftpd

Configura il firewall in modalità passiva

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

[email protetta]:~$ sudo ufw consente proto tcp da chiunque a qualsiasi porta

Dopo aver consentito tutte le porte sul firewall, abilita ufw eseguendo il comando seguente.

[email protetta]:~$ abilita sudo ufw

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.

Test della connessione

Ora che abbiamo impostato il server FTP in modalità passiva, possiamo verificare la connessione FTP con l'applicazione client. Per fare ciò, apri FileZilla sul tuo sistema.

Dopo aver inserito host, nome utente, password e porta, ora puoi connetterti al tuo server. Ora che sei connesso al server FTP in esecuzione in modalità passiva, puoi caricare i file sul server.

Configura i certificati SSL con il server FTP

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

Generazione di certificati SSL

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

[protetto dalla posta elettronica]:~$ sudo openssl request -x509 -node -tag 365 -new key rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -aus /etc/ssl/private/vsftpd.pem

Quando esegui il comando precedente, ti verranno poste alcune domande. Dopo aver risposto a queste domande, verranno generati i certificati. Puoi cercare i certificati nel terminale.

[email protetta]:~$ sudo ls /etc/SSL/private/

Utilizzo dei certificati nel file di configurazione

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

[protetto dalla posta elettronica]:~$ sudo Nano /etc/vsftpd.conf

Aggiungi le seguenti righe alla fine dei file. Queste modifiche assicurano 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 proprietà /vsftpd.pem
rsa_private_key_file=/etc/SSL/Private/vsftpd.pem

Riavvia il server FTP per rendere effettive queste modifiche.

[protetto dalla posta elettronica]:~$ sudo systemctl restart vsftpd

Dopo il riavvio del server, prova a connetterti al tuo server utilizzando l'applicazione client FileZilla. Questa volta, l'applicazione client ti chiederà se dovresti fidarti di questi certificati.

Se disponi di certificati di un'autorità di certificazione attendibile, questo avviso non dovrebbe essere visualizzato. Abbiamo generato i nostri certificati utilizzando openssl, che non è una CA affidabile, 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. Quando 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 precedente imposta il percorso root per gli utenti anonimi su '/home/ubuntu/ftp/anon' e non richiede la password quando un utente anonimo effettua l'accesso.

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

Ora riavvia il server FTP.

[protetto dalla posta elettronica]:~$ sudo systemctl restart vsftpd

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

ftp://3.8.12.52

L'URL sopra ti porta alla radice del server FTP come specificato nel file di configurazione. Se l'accesso anonimo è disabilitato, il tentativo di connessione al server FTP da un browser ti chiederà prima l'autenticazione e poi ti reindirizzerà alla radice 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.

[protetto dalla posta elettronica]:~$ sudo systemctl restart vsftpd

Dopo il riavvio del server, provare ad accedere al server FTP in locale utilizzando l'interfaccia della riga di comando. Accedi al tuo server remoto utilizzando SSH.

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

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

[e-mail protetto]:~$ ftp localhost

L'esecuzione del comando precedente genererà un errore 500.

Completamento

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

https://vsftpd.beasts.org/vsftpd_conf.html


Ubuntu
  1. Come installare Visual Studio Code - Server IDE su Ubuntu 20.04 LTS

  2. Come installare Webmin su Ubuntu 18.04 e Ubuntu 16.04 Server

  3. Come installare e configurare Postgres 13 Ubuntu 20.04

  4. Come installare FFmpeg su Ubuntu 18.04 e 16.04

  5. Libera spazio su disco:cancella i registri del diario di Systemd in Ubuntu 20.04

Condivisione di rete Ubuntu 15.04 non funziona?

Comando Linux sed:come utilizzare l'editor di flusso

Come configurare osquery per monitorare la minaccia alla sicurezza su Ubuntu

Come utilizzare il software Photo Raw Darktable 2.0 su Ubuntu

Come installare server e client OpenVPN su CentOS 7

Errore "filtri di analisi non supportati" durante l'estrazione di file Rar?