GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare un server FTP sicuro con Pure-FTPd su Ubuntu

FTPd puro è un server FTP open source gratuito progettato pensando alla sicurezza. In questo tutorial, daremo un'occhiata a come configurare un server FTP sicuro su un server Ubuntu con Pure-FTPd e come applicare la crittografia TLS.

Nota :questo tutorial funziona su tutte le versioni correnti di Ubuntu, incluso Ubuntu 20.04, 18.04 e 21.04.

Funzionalità FTPd pure:

  • Supporta la crittografia SSL/TLS e quindi password e comandi possono essere protetti.
  • Può funzionare sulla maggior parte dei sistemi simili a Unix:Linux, BSD, Solaris, Darwin, HPUX, AIX e persino iPhone.
  • Disponibile in 21 lingue.
  • Ti permette di monitorare le sessioni attive.
  • Supporta un sistema di quote virtuali.
  • E molto altro

Per un elenco completo delle funzionalità, visitare il sito Web ufficiale di Pure-FTPd.

Passaggio 1:installa Pure-FTPd su Ubuntu Server

È nel repository del software, quindi emetti il ​​seguente comando per installare il server FTP.

sudo apt install pure-ftpd

Una volta installato, Pure-FTPd verrà avviato automaticamente, come si può vedere con questo comando:

systemctl status pure-ftpd

Uscita:

● pure-ftpd.service
   Loaded: loaded (/etc/init.d/pure-ftpd; bad; vendor preset: enabled)
   Active: active (running) since Mon 2016-12-12 21:51:46 EST; 23s ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/pure-ftpd.service
           └─3435 pure-ftpd (SERVER)

preset: enabled indica che si avvierà automaticamente all'avvio del sistema. Se non è in esecuzione, contrassegnalo con:

sudo systemctl start pure-ftpd

Ed è in ascolto sulla porta TCP 21, che è la porta di controllo, come si può vedere con

sudo netstat -lnpt | grep pure-ftpd

L'accesso anonimo è disabilitato per impostazione predefinita. D'ora in poi puoi utilizzare il tuo account di sistema per accedere, ma l'FTP in testo semplice non è sicuro e fortemente sconsigliato. Per avere un server FTP sicuro, dobbiamo crittografare la comunicazione con TLS.

Passaggio 2:applica la crittografia TLS

Per abilitare la crittografia sia in testo normale che TLS, esegui il comando seguente, che crea il /etc/pure-ftpd/conf/TLS file e inserisci il numero 1 nel file.

echo 1 | sudo tee /etc/pure-ftpd/conf/TLS

Tuttavia, ti consigliamo di disabilitare il testo normale e di utilizzare solo la crittografia TLS, quindi inserisci invece il numero 2 nel file.

echo 2 | sudo tee /etc/pure-ftpd/conf/TLS

Ora abbiamo applicato il TLS, dobbiamo ottenere un certificato TLS valido. Un certificato autofirmato non è consigliato perché gli utenti vedranno avvisi come lo screenshot qui sotto.

Fase 3:ottieni un certificato TLS affidabile da Let's Encrypt

Esegui il comando seguente per installare il client Let's Encrypt (certbot) dal repository Ubuntu predefinito.

sudo apt install certbot

Consiglio di utilizzare il standalone o webroot plug-in per ottenere il certificato TLS per Pure-FTPd.

Plugin autonomo

Se non è presente alcun server Web in esecuzione sul tuo server Ubuntu, puoi utilizzare il plug-in autonomo. Esegui il comando seguente. Non dimenticare di impostare il record DNS A per il tuo sottodominio.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email [email protected] -d ftp.example.com

Dove:

  • certonly :Ottieni un certificato ma non installarlo.
  • --standalone :usa il plugin standalone per ottenere un certificato
  • --preferred-challenges http :esegui la verifica http-01 per convalidare il nostro dominio, che utilizzerà la porta 80.
  • --agree-tos :Accetta i termini di servizio di Let's Encrypt.
  • --email :l'indirizzo e-mail viene utilizzato per la registrazione e il recupero dell'account.
  • -d :Specifica il tuo nome di dominio.

Come puoi vedere dallo screenshot seguente, ho ottenuto con successo il certificato.

Utilizzo del plug-in webroot

Se il tuo server Ubuntu ha un server web, è una buona idea usare il plugin webroot per ottenere un certificato perché il plugin webroot funziona praticamente con tutti i server web e non abbiamo bisogno di installare il certificato nel server web.

Innanzitutto, devi creare un host virtuale per ftp.example.com .

Apache

Se stai usando Apache, allora

sudo nano /etc/apache2/sites-available/ftp.example.com.conf

E incolla le seguenti righe nel file.

<VirtualHost *:80>        
        ServerName ftp.example.com

        DocumentRoot /var/www/Pure-FTPd
</VirtualHost>

Salva e chiudi il file. Quindi crea la directory principale web.

sudo mkdir /var/www/Pure-FTPd

Imposta www-data (utente Apache) come proprietario della radice web.

sudo chown www-data:www-data /var/www/Pure-FTPd -R

Abilita questo host virtuale.

sudo a2ensite ftp.example.com

Ricarica Apache per rendere effettive le modifiche.

sudo systemctl reload apache2

Una volta creato e abilitato l'host virtuale, esegui il comando seguente per ottenere il certificato Let's Encrypt utilizzando il plug-in webroot.

sudo certbot certonly --webroot --agree-tos --email [email protected] -d ftp.example.com -w /var/www/Pure-FTPd

Nginx

Se stai usando Nginx, allora

sudo nano /etc/nginx/conf.d/ftp.example.com.conf

Incolla le seguenti righe nel file.

server {
      listen 80;
      listen [::]:80;
      server_name ftp.example.com;

      root /var/www/Pure-FTPd/;

      location ~ /.well-known/acme-challenge {
         allow all;
      }
}

Salva e chiudi il file. Quindi crea la directory principale web.

sudo mkdir -p /var/www/Pure-FTPd

Imposta www-data (utente Nginx) come proprietario della radice web.

sudo chown www-data:www-data /var/www/Pure-FTPd -R

Ricarica Nginx per rendere effettive le modifiche.

sudo systemctl reload nginx

Una volta creato e abilitato l'host virtuale, esegui il comando seguente per ottenere il certificato Let's Encrypt utilizzando il plug-in webroot.

sudo certbot certonly --webroot --agree-tos --email [email protected] -d ftp.example.com -w /var/www/Pure-FTPd

Fase 4:installa il certificato

Pure-FTPd richiede che il certificato e la chiave privata siano combinati in un unico file denominato pure-ftpd.pem e archiviato in /etc/ssl/private/ directory.

Passa a /etc/letsencrypt/live/ftp.example.com/ directory.

cd /etc/letsencrypt/live/ftp.example.com/

Puoi usare cat comando per combinare due file in uno come di seguito.

sudo cat fullchain.pem privkey.pem | sudo tee /etc/ssl/private/pure-ftpd.pem

Assicurati che solo l'utente root possa leggere il file.

sudo chmod 600 /etc/ssl/private/pure-ftpd.pem

dobbiamo generare il parametro Diffie-Hellman con:

sudo openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 4096

Se il tuo server ha un singolo core della CPU, ci vorrà molto tempo (circa 10 minuti).

Una volta fatto, riavvia Pure-FTPd.

sudo systemctl restart pure-ftpd

Controlla lo stato per vedere se è in esecuzione.

systemctl status pure-ftpd

Ora puoi connetterti al tuo server FTP tramite TLS.

Se utilizzi il file manager Nautilus per connetterti al server FTP tramite testo normale ftp:// protocollo

La connessione verrà rifiutata.

Invece di ftp:// , devi usare ftps:// .

Per impostazione predefinita, gli utenti FTP verranno indirizzati a / directory principale sul server.

Tieni presente che Filezilla non considera attendibile alcun certificato (autofirmato o firmato da un'autorità di certificazione) per impostazione predefinita. Gli utenti devono scegliere di fidarsi del certificato per se stessi.

Avviso certificato FileZilla sconosciuto

E devi usare il protocollo FTP esplicito TLS (ftpes://ftp.example.com ) in Filezilla.

Rinnovo automatico del certificato TLS

Puoi creare un lavoro Cron per rinnovare automaticamente il certificato TLS. Basta aprire il file crontab dell'utente root.

sudo crontab -e

Aggiungi la seguente riga in fondo al file.

@daily certbot renew --quiet && cd /etc/letsencrypt/live/ftp.example.com/ && cat fullchain.pem privkey.pem | tee /etc/ssl/private/pure-ftpd.pem && systemctl reload pure-ftpd

È necessario ricaricare pure-ftpd per fargli prelevare il nuovo certificato e la chiave privata.


Ubuntu
  1. Come configurare il server FTP sul tuo Raspberry Pi

  2. Come installare un server FTP su Ubuntu con vsftpd

  3. Come configurare il server FTP con VSFTPD su Ubuntu 20.04

  4. Come proteggere Nginx con Letsencrypt su Ubuntu 20.04

  5. Come installare il server FTP su Ubuntu 20.04

Come configurare rapidamente un server di posta su Ubuntu 20.04 con Modoboa

Come impostare la sincronizzazione dell'ora con NTP su Ubuntu 18.04

Come configurare un server Seafile con Nginx su Ubuntu 18.04

Come configurare un server FTP con ProFTPD in Ubuntu 18.04

Come configurare un server di posta con Modoboa su Ubuntu 20.04

Come proteggere Nginx con Let's Encrypt su Ubuntu 20.04