GNU/Linux >> Tutoriels Linux >  >> Ubuntu

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

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

Remarque  :Ce didacticiel fonctionne sur toutes les versions actuelles d'Ubuntu, y compris Ubuntu 20.04, 18.04 et 21.04.

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 Ubuntu

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; 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 indique qu'il démarrera automatiquement au démarrage du système. 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 netstat -lnpt | grep pure-ftpd

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 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 Ubuntu 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 Ubuntu, 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 Ubuntu 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 à peu près 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.

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

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

sudo 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.

Si vous utilisez le gestionnaire de fichiers Nautilus pour vous 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 est nécessaire de recharger pure-ftpd pour qu'il récupère le nouveau certificat et la clé privée.


Ubuntu
  1. Comment configurer un serveur FTP sur votre Raspberry Pi

  2. Comment installer un serveur FTP sur Ubuntu avec vsftpd

  3. Comment configurer un serveur FTP avec VSFTPD sur Ubuntu 20.04

  4. Comment sécuriser Nginx avec Letsencrypt sur Ubuntu 20.04

  5. Comment installer le serveur FTP sur Ubuntu 20.04

Comment configurer rapidement un serveur de messagerie sur Ubuntu 20.04 avec Modoboa

Comment configurer la synchronisation de l'heure avec NTP sur Ubuntu 18.04

Comment configurer un serveur Seafile avec Nginx sur Ubuntu 18.04

Comment configurer un serveur FTP avec ProFTPD dans Ubuntu 18.04

Comment configurer un serveur de messagerie avec Modoboa sur Ubuntu 20.04

Comment sécuriser Nginx avec Let's Encrypt sur Ubuntu 20.04