Sécuriser le serveur FTP

Avec les serveurs FTP, il est aussi préférable de passer par une connection sécurisé. Dans les serveur FTP sous Debian comme sous Fedora, le mode tls (SSL pour FTP) est déjà installé. Il n’y a plus qu’à l’activer. Pour cela, rendez-vous dans le fichier proftpd.conf situé dans:

Sous Debian et ses dérivées: /etc/proftpd/proftpd.conf
Sous Fedora: /etc/proftpd.conf

Dans ce fichier, recherchez la ligne suivante:

Sous Debian: Include /etc/proftpd/tls.conf

Sous Fedora: Include /etc/proftpd/mod_tls.conf

Sous Debian, enlevez le dièse devant la ligne. Sous Fedora, il est préférable de laisser tel quel et de copier-coller cette ligne au dessus de <IfDefine TLS> tout en enlevant de # devant. Recherchez la ligne PassivePorts et enlevez le # devant. Sous Fedora, vous devez ajouter cette ligne. Ajoutez la ligne PassivePort 64000 65000 au début du fichier. Ouvront maintenant le fichier de configuration du mode TLS

Sous Debian: /etc/proftpd/tls.conf

Sous Fedora: /etc/proftpd/mod_tls.conf

Votre fichier doit contenir au minimum les lignes suivantes:

<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol TLSv1.3
TLSRSACertificateFile /etc/proftpd/ssl/certificat.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/certificat.key
#TLSCACertificateFile /etc/proftpd/ssl/certificat-intermediaire.pem
#TLSOptions NoSessionReuseRequired
</IfModule>

Avant de redémarrer le serveur, nous allons créer un dossier pour notre certificat avec la commande suivante:

sudo mkdir /etc/proftpd/ssl

Maintenant, créons notre certificat dans ce nouveau dossier:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/proftpd/ssl/certificat.key -out /etc/proftpd/ssl/certificat.pem

Sous Fedora, il faut ouvrir la plage de ports passif dans le firewall. Repronons l’exemple de la plage 64000 à 65000 et ajoutons ceux-ci à notre firewall:

sudo firewall-cmd --zone=public --add-port=64000-65000/tcp --permanent
sudo firewall-cmd --reload

Plus qu’à redemarrer notre serveur. Nous pouvons nous connecter à celui-ci.

Connection en locale:

Maintenant que notre serveur ftp est installé et parametré, nous allons nous connecter dessus. Pour nos essais nous allons nous connecter d’abord en locale. Sur un autre PC, installez un client FTP comme filezilla client par exemple. Dans le nom de l’hôte, rentrez l’adresse IP du PC où est installé le serveur FTP. Dans le nom d’utilisateur, rentrez celui-ci existant dans votre PC serveur. Et dans le mot de passe idem. La une fenêtre va vous afficher le certificat et vous prévenir que la provenance n’a pas pus être vérifié. C’est normale car nous avons créer des certificats auto-signé. Pour avoir un certificat vérifié, il faut passer par une CA (Certificate Autority) qui vous délivrera un certificat appelé intermédiaire. Ce certificat sera à déposer dans votre dossier ssl créer plus haut et vous devrez décommenter la ligne TLSCACertificateFile et le cas échéant changer le nom du fichier renseigné. Pour nos essais, nous allons nous contenter de notre certificat auto-signé. Cliquez sur « OK » pour accepter le certificat. Si vous avez une erreur 504, décommentez la ligne TLSOptions dans votre fichier tls.conf ou mod_tls.conf. Une fois la connection établie, essayez de créer un dossier dans cet espace et/ou copier un fichier dedans et regardez dans PC où est installé le serveur ce dossier crée et/ou fichier copié devrai être présent.

Connection depuis l’extérieur:

Maintenant que notre serveur ftp est fonctionnel même à distance, nous allons essayer de nous connecter depuis l’extérieur (depuis un autre réseau). Pour faire cela, il faut ouvrir le port qu’écoute ProFTPD (21 par défault) vers l’ip de votre PC ou est installé le serveur FTP dans votre routeur ou box. Il faut également ouvrir la plage de port du mode passif. Pour faire cela rendez-vous dans votre routeur ou box. La configuration peut dépendre de votre routeur ou box. Sur les Livebox (orange) allez dans Configuration avancée puis dans NAT/PAT Une fois dedans Céez une nouvelle règle. Dans la première la case, mettez le nom de la règle celui-ci n’a pas d’importance. Dans le port interne, mettez le port de départ de la plage des ports passif(dans notre exemple, 64000). Dans le port externe, renseignez la plage entière(dans notre exemple 64000-65000). Protocole: reseignez TCP Appareil: Maintenant, Votre PC ou est installé le serveur ProFTPD. Dans un routeur Linksys By CISCO, rendez-vous dans l’onglet Applications & jeux et dans le menu en dessous, allez dans Transfert de connexion. C’est quasiment le même principe. Le nom, mettez ce que vous souhaitez. Début: mettez le port de début de la plage (dans notre exemple, 64000) et le port de Fin mettez cette fois le dernier port de la plage(dans notre exemple, 65000). Le protocole: selectionnez TCP et dans la case suivante, renseignez l’adresse IP du PC ou est installé le serveur FTP. Enfin cliquez sur la case activer. Il faut connaitre l’IP publique du réseau où est connecté votre serveur FTP. Pour la connaitre allez sur mon-ip.com Connectons notre PC client sur un autre réseau. ATTENTION: Si vous utilisez le partage de connection de votre smartphone, la connection pourra peut-être ne pas aboutir car certains opérateurs tels que RedBysfr ou bouygues ont bloqué les connections FTPS. Chez certains comme Orange, la connection aboutira. Pour savoir si le problème vient de l’opérateur téléphonique, voyez l’erreur que vous retourne votre client FTP. Si Vous avez l’erreur: « La connection a été réinitalisée par un pair » juste après la « commande » AUTH SSL, c’est que vos données mobiles n’acceptent pas les connection SSL. Dans le client FTP, dans le nom d’hôte, saisisez l’adresse IP que vous avez trouvé sur mon-ip.com et le nom d’utilisateur ainsi que le mot de passe ne changent pas. Comme tout à l’heure, essayez de créer un dossier et/ou de copier un fichier dans votre serveur. Notez que à la place de l’adresse IP public vous pouvez mettre un nom de domaine si vous en avez un à condition que celui-ci pointe vers cette IP publique.