GNU/Linux >> Tutoriels Linux >  >> Debian

Comment configurer un serveur FTP sécurisé sur Debian 10 avec Pure-FTPd

Pur-FTPd est un serveur FTP open-source gratuit conçu dans un souci de sécurité. Dans ce didacticiel, nous allons apprendre à configurer un serveur FTP sur Debian 10 avec Pure-FTPd et à appliquer le cryptage TLS.

Fonctionnalités Pure-FTPd :

  • Il prend en charge le cryptage SSL/TLS et ainsi les mots de passe et les commandes peuvent être protégés.
  • Il peut fonctionner sur la plupart des systèmes de type Unix :Linux, BSD, Solaris, Darwin, HPUX, AIX et même iPhone.
  • Disponible en 21 langues
  • Vous permet de surveiller les sessions actives.
  • Prend en charge un système de quota virtuel.
  • Et bien plus encore

Pour une liste complète des fonctionnalités, rendez-vous sur le site officiel de Pure-FTPd.

Étape 1 :Installez Pure-FTPd sur le serveur Debian 10

Il se trouve dans le référentiel de logiciels, lancez donc la commande suivante pour installer le serveur FTP.

sudo apt install pure-ftpd

Une fois installé, Pure-FTPd sera automatiquement démarré, comme on peut le voir avec cette commande :

systemctl status pure-ftpd

Sortie :

 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)

S'il ne fonctionne pas, lancez-le avec :

sudo systemctl start pure-ftpd

Et il écoute sur le port TCP 21, qui est le port de contrôle , comme on peut le voir avec

sudo ss -lnpt | grep pure-ftpd

L'autre port est le port de données (port TCP 20), qui sera utilisé lorsqu'un utilisateur transfère des fichiers via FTP.

L'accès anonyme est désactivé par défaut. À partir de maintenant, vous pouvez utiliser votre compte système pour vous connecter, mais le FTP en texte brut n'est pas sécurisé et est fortement déconseillé. Pour avoir un serveur FTP sécurisé, nous devons chiffrer la communication avec TLS.

Étape 2 :Appliquer le chiffrement TLS

Pour activer à la fois le cryptage en texte brut et TLS, exécutez la commande suivante, qui crée le /etc/pure-ftpd/conf/TLS fichier et mettez le numéro 1 dans le fichier.

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

Mais il est recommandé de désactiver le texte brut et d'utiliser uniquement le cryptage TLS, alors mettez plutôt le numéro 2 dans le fichier.

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

Maintenant que nous avons appliqué TLS, nous devons obtenir un certificat TLS valide. Un certificat auto-signé n'est pas recommandé car les utilisateurs verront un message d'avertissement comme la capture d'écran ci-dessous.

Étape 3 :Obtenir un certificat TLS de confiance auprès de Let's Encrypt

Exécutez la commande suivante pour installer le client Let's Encrypt (certbot) à partir du référentiel Debian 10 par défaut.

sudo apt install certbot

Je recommande d'utiliser le standalone ou webroot plugin pour obtenir le certificat TLS pour Pure-FTPd.

Plug-in autonome

S'il n'y a pas de serveur Web en cours d'exécution sur votre serveur Debian 10, vous pouvez utiliser le plugin autonome. Exécutez la commande suivante. N'oubliez pas de définir un enregistrement DNS A pour votre sous-domaine.

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

Où :

  • certonly  :obtenez un certificat, mais ne l'installez pas.
  • --standalone :Utilisez le plugin autonome pour obtenir un certificat
  • --preferred-challenges http  :Effectuez le défi http-01 pour valider notre domaine, qui utilisera le port 80.
  • --agree-tos  :Acceptez les conditions d'utilisation de Let's Encrypt.
  • --email  :L'adresse e-mail est utilisée pour l'enregistrement et la récupération du compte.
  • -d :Spécifiez votre nom de domaine.

Comme vous pouvez le voir sur la capture d'écran suivante, j'ai réussi à obtenir le certificat.

Utilisation du plug-in Webroot

Si votre serveur Debian 10 a un serveur Web, c'est une bonne idée d'utiliser le plugin webroot pour obtenir un certificat car le plugin webroot fonctionne avec pratiquement tous les serveurs web et nous n'avons pas besoin d'installer le certificat sur le serveur web.

Tout d'abord, vous devez créer un hôte virtuel pour ftp.example.com .

Apache

Si vous utilisez Apache, alors

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

Et collez les lignes suivantes dans le fichier.

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

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

Enregistrez et fermez le fichier. Créez ensuite le répertoire racine Web.

sudo mkdir /var/www/Pure-FTPd

Définissez www-data (utilisateur Apache) comme propriétaire de la racine Web.

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

Activez cet hôte virtuel.

sudo a2ensite ftp.example.com

Rechargez Apache pour que les modifications prennent effet.

sudo systemctl reload apache2

Une fois l'hôte virtuel créé et activé, exécutez la commande suivante pour obtenir le certificat Let's Encrypt à l'aide du plug-in Webroot.

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

Nginx

Si vous utilisez Nginx, alors

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

Collez les lignes suivantes dans le fichier.

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

      root /var/www/Pure-FTPd/;

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

Enregistrez et fermez le fichier. Créez ensuite le répertoire racine Web.

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

Définissez www-data (utilisateur Nginx) comme propriétaire de la racine Web.

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

Rechargez Nginx pour que les modifications prennent effet.

sudo systemctl reload nginx

Une fois l'hôte virtuel créé et activé, exécutez la commande suivante pour obtenir le certificat Let's Encrypt à l'aide du plug-in Webroot.

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

Étape 4 :Installez le certificat

Pure-FTPd nécessite que le certificat et la clé privée soient combinés dans un seul fichier nommé pure-ftpd.pem et stocké sous /etc/ssl/private/ répertoire.

Passez au /etc/letsencrypt/live/ftp.example.com/ répertoire.

sudo su -

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

Vous pouvez utiliser cat commande pour combiner deux fichiers en un seul comme ci-dessous.

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

Assurez-vous que seul l'utilisateur root peut lire le fichier.

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

Nous devons générer le paramètre Diffie-Hellman avec :

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

Si votre serveur a un seul cœur de processeur, cela va prendre beaucoup de temps (environ 10 minutes).

Une fois cela fait, redémarrez Pure-FTPd.

sudo systemctl restart pure-ftpd

Vérifiez l'état pour voir s'il est en cours d'exécution.

systemctl status pure-ftpd

Vous pouvez maintenant vous connecter à votre serveur FTP via TLS.

Étape 5 :Ouvrir les ports FTP dans le pare-feu

Si vous utilisez le pare-feu UFW, exécutez la commande suivante pour ouvrir les ports TCP 20 et 21.

sudo ufw allow 20,21/tcp

Étape 6 :Connectez-vous au serveur FTP

Si vous utilisez Nautilus gestionnaire de fichiers pour se connecter au serveur FTP via le texte brut ftp:// protocole

La connexion sera refusée.

Au lieu de ftp:// , vous devez utiliser ftps:// .

Par défaut, les utilisateurs FTP seront amenés au / répertoire racine sur le serveur.

Veuillez noter que Filezilla ne fait confiance à aucun certificat (auto-signé ou signé par une autorité de certification) par défaut. Les utilisateurs doivent choisir de faire confiance au certificat pour eux-mêmes.

Avertissement de certificat inconnu de FileZilla

Et vous devez utiliser le protocole FTP explicite TLS (ftpes://ftp.example.com ) dans Filezilla.

Certificat TLS à renouvellement automatique

Vous pouvez créer une tâche Cron pour renouveler automatiquement le certificat TLS. Ouvrez simplement le fichier crontab de l'utilisateur root.

sudo crontab -e

Ajoutez la ligne suivante au bas du fichier.

@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

Il faut recharger pure-ftpd pour lui faire récupérer le nouveau certificat et la clé privée.


Debian
  1. Comment configurer un pare-feu avec UFW sur Debian 10

  2. Comment installer le serveur FTP vsftpd et le sécuriser avec TLS sur Debian 11

  3. Comment configurer un serveur SFTP sur le serveur Debian 11

  4. Comment configurer un serveur OpenVPN sur Debian 10

  5. Configurer un serveur de messagerie avec PostfixAdmin sur Debian 9

Comment configurer un serveur FTP sécurisé avec Pure-FTPd sur Ubuntu

Comment configurer LAMP avec Debian 11

Comment configurer le serveur Samba avec Debian 11

Comment installer le serveur vsftpd sur Debian 11

Comment installer un serveur FTP sur Debian 10

Comment configurer un serveur FTP avec ProFTPD dans Ubuntu 18.04