Skip to content
 

Installer et sécuriser le serveur FTP

Un bon client ftp comme Filezilla peut utiliser quatre modes d’accès ftp pour le transfert des fichiers.

Le mode SFTP est le plus simple à utiliser avec un serveur dédié puisqu’il fonctionne out of the box, étant inclus dans le protocole SSH. Les échanges de données et surtout les informations de connexion sont cryptées puisqu’elles bénéficient du tunnel SSH.

A l’inverse le mode FTP de base expose vos informations de connexion (user et mot de passe) sur l’internet.

Il peut donc être utile de sécuriser les échanges avec les modes FTPS et FTPES : un logiciel de gestion de contenu comme WordPress peut utiliser ce mode sécurisé pour les téléchargements internes des extensions.

Cet article expose comment sécuriser les échanges de fichiers en mode FTP grâce au protocole SSL.

Je recommande proftpd comme serveur ftp : il fonctionne quasiment out of the box.

sudo apt-get install proftpd

Deux fichiers de configuration sont situés dans le répertoire /etc/proftpd.

Dans  le premier, proftpd.conf, je vous recommande de décommenter cette deuxième ligne.

# Use this to jail all users in their homes
DefaultRoot
~

Proftpd utilisera ainsi la commande chroot, qui permet de faire d’un répertoire la racine du système, pour empêcher les utilisateurs connectés en ftp de sortir de leur répertoire utilisateur.

Ensuite, il est prudent de  recharger proftpd avec sudo /etc/init.d/proftpd reload

Tel quel, proftpd devrait déjà fonctionner en mode normal et vous pouvez le vérifier avec votre client ftp préféré.

Pour activer la cryptographie SSL, vous aurez besoin du paquet openssl.

Ensuite, la commande sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out /etc/ssl/certs/proftpd.crt -keyout /etc/ssl/certs/proftpd.key vous générera le certificat SSL. Il suffit de répondre aux questions posée.

Le certificat est auto-signé et valable un an.

Il ne reste que deux étapes:

1 – décommenter la ligne suivante dans proftpd.conf pour charger le fichier de la configuration sécurisée de proftpd

#
# This is used for FTPS connections
#
Include /etc/proftpd/tls.conf

2 – décommenter les lignes du fichier tls.conf pour activer la connexion sécurisée

Enfin, ne pas oublier de relancer le serveur avec sudo /etc/init.d/proftpd reload

Dans fillezilla, utilisez le mode FTPES : un cadenas, en bas à droite, devrait vous confirmer que la connexion est cryptée.

Pour les distraits, je rappelle qu’il faut également que votre parefeu laisse passer les connections vers les port 20 et 21

Si vous utilisez iptables, voici les commandes

iptables -A INPUT -p tcp -i eth0 –dport ftp -j ACCEPT
iptables -A INPUT -p tcp -i eth0 –dport ftp-data -j ACCEPT

3 commentaires

  1. augur dit :

    Bonjour.

    Je viens de mettre ce site dans mes favoris (un site serveur dédié n’existe pas, j’espère que celui ci va bien se développer) ^^

    Aussi je dispose d’une Debian Lenny avec proFTPd en TLS/SSL derrière un IPCop ; port 20 – 21 et 1234 à 1492 ouvert & forwardé.
    .. et comme beaucoup sur le net, vu ce que Google me sort, j’ai le même problème : le passive mode avec proFTPd en TLS/SSL
    => rien à faire… en ACTIF ça fonctionne à peu près mais pas en PASSIF :(

    une idée ?

  2. Donald dit :

    bonjour et merci de m’avoir mis dans vos favoris

    essayer de charger ces deux modules en console root. Ils sont nécessaires pour les connexions FTP
    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe ip_nat_ftp

    Pour ma part, la connexion FTP/SSL active fonctionne mais je n’arrive pas à lister les répertoires ce qui une limite inhérent au protocole.

    merci de me faire un retour

    donald

  3. augur dit :

    Ah, pardon j’ai du mal m’exprimer et chez moi c’est le contraire ! ….
    => la connexion FTP/SSL passive fonctionne mais je n’arrive pas à lister les répertoires ce qui une limite inhérent au protocole.
    => la connexion FTP/SSL active fonctionne et c’est seulement ainsi que j’arrive à lister les répertoires.

    dans le répertoire /sbin, je n’ai ni modeprobe, ni ip_conntrack_ftp, ni ip_nat_ftp.

    d’autre part, si je les avais, quelle est la commande pour les charger ?

    ++

Laissez une réponse