Vous souhaitez installer un serveur FTP (ou SFTP) pour votre site internet ou simplement partager des fichiers ? Cet article vous permettra de créer un serveur FTP avec VSFTPD sous Linux.
Pourquoi choisir Linux pour l’installation, simplement parce qu’une grande partie des serveurs d’hébergement web tourne sous ce système d’exploitation. Il semblait donc plus logique de l’installer sur Linux. Si vous louez un serveur dédié (ou si vous souhaitez le faire en local), vous pourrez créer votre propre serveur FTP. Nous verrons à la fin comment chiffrer la connexion avec SFTP.
L’objectif de cet article est de vous présenter l’installation. Pour cela, la première partie portera sur cette installation à proprement parler, quand la seconde partie portera sur la connexion au serveur FTP depuis un ordinateur. Ainsi, nous pourrons nous assurer que ce dernier fonctionne.
- Qu’est-ce qu’un serveur FTP ?
- Comment installer un serveur FTP avec VSFTPD ?
- Installer le serveur FTP avec le paquet VSFTPD
- Créer le fichier de configuration
- Connexion au serveur FTP
- Créer un utilisateur FTP si besoin
- Configurer la connexion SFTP
Qu’est-ce qu’un serveur FTP ?
Lors de la création et la gestion d’un site internet, vous utiliserez constamment un serveur FTP. C’est pourquoi il est intéressant que vous puissiez comprendre le fonctionnement du protocole FTP (File Transfer Protocol). Il permet de stocker ou récupérer des fichiers sur le serveur. L’avantage est que vous pourrez ainsi manipuler vos fichiers depuis n’importe quel ordinateur à travers le monde. Vous avez simplement besoin d’une connexion internet.
Il permet donc le transfert de fichiers entre un client et un serveur. Un client FTP est une application qui s’utilise depuis un ordinateur. Elle est utilisée pour importer ou exporter des fichiers d’un serveur FTP. Un des logiciels les plus connus pour faire le rôle de client FTP est Filezilla. Vous pouvez le télécharger sur cette page.
Comment créer un serveur FTP avec VSFTPD ?
Dans cette partie nous allons voir les étapes pour créer un serveur FTP avec VSFTPD. Pour cela, vous pouvez découvrir une vidéo résumant l’installation :
Installer le serveur FTP avec le paquet VSFTPD
Vous allez devoir ouvrir un terminal. Vous devez passer en mode « superutilisateur » donc en root. Pour cela, vous devez utiliser la commande « sudo su » puis votre mot de passe.
Maintenant, nous allons dans un premier temps mettre à jour les sources de paquets et les paquets du serveur avant de lancer l’installation du serveur FTP VSFTPD.
apt-get update
apt-get upgrade
Nous pouvons maintenant lancer l’installation de VSFTPD, une fois que l’installation est terminé, on peut lancer la commande systemctl status pour nous assurer que le serveur est bien actif.
sudo apt-get install vsftpd
sudo systemctl status vsftpd
Créer le fichier de configuration
Le fichier de configuration est long et possède beaucoup d’informations que l’on ne va pas utiliser. Je vais donc écraser le fichier pour qu’il soit plus « propre ». Avant cela, je vais le copier pour le sauvegarder, on ne sait jamais si on doit le réinitialiser.
cp /etc/vsftpd.conf /etc/vsftpd.conf.save
Maintenant, je vais écraser le fichier vsftpd.conf puis utiliser le logiciel nano pour l’éditer, il doit être vide quand je le lance.
> /etc/vsftpd.conf
sudo nano /etc/vsftpd.conf
Je vais créer le fichier de configuration qui correspond à mes besoins pour mon serveur FTP Linux. je vous est indiqué le fichier ci-dessous que vous pouvez modifier avec les explications pour les paramètres. A la fin de cette article, nous allons le modifier pour permettre la connexion en SFTP.
### Activer écoute sur IPV4
listen=YES
listen_ipv6=NO
### Désactive l'accès anonyme
anonymous_enable=NO
### Permet aux utilisateurs locaux de se connecter
local_enable=YES
### Autorise les opérations d'écriture pour utilisateurs authentifié
write_enable=YES
### Activer la journalisation
xferlog_enable=YES
### Utilise les heures locales
use_localtime=YES
### Restreint les utilisateurs locaux à leur répertoires
chroot_local_user=YES
### Permet l'écriture de l'utilisateur dans le chroot
allow_writeable_chroot=YES
### Répertoire racine pour les utilisateurs locaux lorsqu'ils se connectent
### Vous n'êtes pas obligé de choisir un répertoire, par défaut, l'utilisateur se connectera dans son répertoire personnel, donc vous supprimer cette option si vous n'en avez pas besoin.
local_root=/var/www/
Maintenant, pour que nos paramètres soient pris en compte, on redémarre le serveur et vérifie le statut pour être certain qu’il fonctionne.
sudo systemctl restart vsftpd
sudo systemctl status vsftpd
Connexion au serveur FTP
Je vais utiliser le logiciel Filezilla Client pour me connecter au serveur et m’assurer qu’il fonctionne. Comme on peut le voir sur la capture ci-dessous
1- notre utilisateur se connecte dans le répertoire /var/www/ qui contient les sites internet. C’est le répertoire que j’ai déterminé dans la configuration. Si vous n’indiquez pas de répertoire, il va se connecter dans son répertoire utilisateur. Par exemple, pour srv, il se serait connecté dans /home/srv
2 – autre point important, avec le chrootage, il ne peut pas parcourir l’arborescence du serveur FTP en arrière, il ne peut pas remonter à la racine du serveur. Il est bloqué dans le répertoire que nous lui avons affecté (ou son répertoire si on a pas choisit de répertoire) et il ne peut parcourir que les éléments de ce dernier.
3 – s’il se trouve dans son répertoire, il peut créer des dossiers et fichiers, car il a les droits, par contre, ailleurs, il risque de ne pas pouvoir écrire. C’est le cas pour mon serveur web, mon utilisateur « srv » n’a pas les droits, donc soit je lui donne sur le dossier, soit je l’ajoute dans un groupe qui a les droits, soit je créer un utilisateur a qui je donne les droits. Voyons cela dans la prochaine étape.
Créer un utilisateur FTP si besoin
Comme je l’indiquais dans le point 3 de la partie précédente, mon utilisateur n’a pas les droits en dehors de son répertoire. Je vais créer un utilisateur et un groupe à qui je vais donner les droits par la suite.
Je vais ajouter mon utilisateur dans le groupe avec « usermod », j’aurais ainsi pu ajouter d’autres utilisateur dans le groupe, c’est pour la démonstration.
adduser ftpweb
groupadd web
usermod -a -G web ftpweb
Donner les droits à l’utilisateur FTP
Je vais donner les droits à mon utilisateur ftpweb et au groupe web sur le dossier de connexion du serveur FTP pour qu’il puisse modifier les éléments ou en ajouter. Je vérifie ensuite qu’il a bien les droits.
chown ftpweb:web /var/www
ls -l
Je peux désormais créer et modifier les éléments dans le répertoire.
Configurer la connexion SFTP
Si vous souhaitez vous connectez de manière sécurisé sur votre serveur FTP, c’est possible avec une connexion SFTP. Pour cela, on va dans un premier temps créer une clé de chiffrement RSA de 2048 bit pour la sécurité avec le paquet OpenSSL. A noter, j’utilise le chemin /etc/ssl/private mais vous pouvez placer votre clé dans le répertoire votre choix.
De même, je lui donne le nom vsftpd.pem, vous pouvez choisir un autre nom.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Vous avez une suite de question pour la génération de votre certificat, il s’agit d’un auto-signé, donc vous pouvez renseigner les informations de votre entreprise par exemple si c’est dans ce cadre là.
Il suffit ensuite de retourner dans le fichier de configuration de VSFTPD pour ajouter les lignes suivantes (attention au chemin de la clé RSA, il doit être le même que celui de la génération de la clé) :
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
Ensuite, il ne reste plus qu’a vous connecter en SFTP, la différence, c’est que j’indique que je souhaite me connecter sur le port 22. Le certificat que vous avez généré doit apparaître, il ne vous reste plus qu’à valider.
La connexion devrait être établi en TLS comme ci-dessous.
Bonjour, j’ai un disque dur interne dédié au stockage ftp, et lorsque je veux me connecter, il m’affiche une page vide. le problème doit venir du lien vers le disque autre que la config par défaut qui n’est pas bon. mais je n’ai pas d’idée, un p’tit coup de main ? merci d’avance pour votre aide. le disque que je veux mettre en ftp a pour chemin : /media/philippe/disk-2/ftp (et à l’intérieur il a un petit répertoire de test, qui n’apparaît pas lorsque je fais la commande ftp://ftp@192.168.*.*), les * sont mes N° de réseaux cachés pour des raisons de sécurité…