GNU/Linux >> Linux Esercitazione >  >> Debian

Come configurare un server FTP sicuro su Debian 10 con Pure-FTPd

FTPd puro è un server FTP open source gratuito progettato pensando alla sicurezza. In questo tutorial impareremo come configurare un server FTP su Debian 10 con Pure-FTPd e come applicare la crittografia TLS.

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.

Fase 1:installa Pure-FTPd su Debian 10 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; generated)
   Active: active (running) since Wed 2021-06-16 13:15:52 UTC; 23s ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 1 (limit: 558)
   Memory: 972.0K
   CGroup: /system.slice/pure-ftpd.service
           └─9223 pure-ftpd (SERVER)

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 ss -lnpt | grep pure-ftpd

L'altra porta è la porta dati (porta TCP 20), che verrà utilizzata quando un utente trasferisce file su FTP.

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 normale 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 un messaggio di avviso 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 Debian 10 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 ci sono server web in esecuzione sul tuo server Debian 10, puoi usare il plugin standalone. 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 Debian 10 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.

sudo su -

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

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

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.

Fase 5:apri le porte FTP nel firewall

Se utilizzi il firewall UFW, esegui il comando seguente per aprire le porte TCP 20 e 21.

sudo ufw allow 20,21/tcp

Fase 6:connettiti al server FTP

Se usi Nautilus file manager per connettersi 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 di certificato sconosciuto FileZilla

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.


Debian
  1. Come configurare un firewall con UFW su Debian 10

  2. Come installare il server FTP vsftpd e proteggerlo con TLS su Debian 11

  3. Come configurare un server SFTP su Debian 11 Server

  4. Come configurare un server OpenVPN su Debian 10

  5. Configura un server di posta con PostfixAdmin su Debian 9

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

Come configurare LAMP con Debian 11

Come configurare Samba Server con Debian 11

Come installare il server vsftpd su Debian 11

Come installare il server FTP su Debian 10

Come configurare un server FTP con ProFTPD in Ubuntu 18.04