Créer un espace FTP sécurisé sur un serveur Ubuntu

Retour aux articles Dans #blog le 15/04/2016 par Emmanuel BALLERY

Créer un espace FTP sécurisé sur un serveur Ubuntu

Dans le cadre d'un échange de fichiers volumineux avec des clients, nous avons besoin de mettre en place un serveur de stockage de fichiers. Pour déplacer les fichiers sur ce serveur, nous utiliserons le protocole FTP, destiné à l'échange informatique de fichiers sur un réseau TCP/IP. Il permet, depuis un ordinateur, de copier des fichiers vers un autre ordinateur (en l'occurence mon serveur), ou encore de supprimer ou de modifier des fichiers sur cet ordinateur.

L'installation va se dérouler en plusieurs étapes :

  1. Installer un serveur FTP sur un serveur Linux ;
  2. Créer un utilisateur pouvant accéder à ce serveur ;
  3. Empêcher l'utilisateur d'utiliser SSH pour accéder à ce serveur ;
  4. Enfermer l'utilisateur dans un répertoire pour qu'il ne puisse pas accéder à tous nos dossiers sur ce serveur ;

Installer un serveur FTP sur un serveur Linux

J'ai choisi vsftpd qui s'installe très simplement avec aptitude sur Linux :

La documentation complète se trouve ici : https://security.appspot.com/vsftpd/vsftpd_conf.html

Installlation de VSFTP

Cet outil expose un service sur votre machine nommé vsftpd que vous pouvez démarrer, redémarrer, recharger et arrêter de la façon suivante :

Statut de VSFTP

Toute la documentation de cet outil se trouve ici :

https://security.appspot.com/vsftpd/vsftpd_conf.html

Il expose par défaut le port 21 de votre machine (qui est le port FTP par défaut). Vous pouvez vérifier vos ports ouverts avec la commande nmap :

Connaître les ports ouverts sur son serveur

Exposition du port 22 par VSFTP

Créer un utilisateur pouvant accéder à ce serveur

Pour donner l'accès à ce service, il va falloir créer un utilisateur sur votre machine Linux. Dans notre cas nous créerons le compte jdoe. C'est la commande adduser qui nous permet d'enregistrer ce nouvel utilisateur. Cette commande est interactive. Elle va vous demander le mot de passe et les informations de l'utilisateur associé à ce compte.

Création de l'utilisateur jdoe

C'est suffisant pour vous connecter à votre serveur FTP ! Depuis votre poste de travail, vous pouvez désormais vous connecter à votre serveur en FTP avec le compte de cet utilisateur. En configurant Filezilla (ou un autre client FTP), vous pouvez enfin vous connecter :

Configuration de Filezilla

Liste des dossiers sur Filezilla

Empêcher l'utilisateur d'utiliser SSH pour accéder à ce serveur

Comme nous avons pu le voir lorsque nous avons listé les ports ouverts sur notre machine, SSH est aussi actif. Nous n e voulons pas que l'utilisateur jdoe utilise ce service. Pour cela, nous éditons le fichier de configuration /etc/ssh/sshd_config de SSH avec nano par exemple :

Et nous ajoutons la directive DenyUsers suivi des identifiants des utilisateurs à bloquer (jdoe dans notre cas) puis nous sauvegardons.

Configuration de SSH

Enfermer l'utilisateur dans un répertoire pour qu'il ne puisse pas accéder à tous nos dossiers sur ce serveur

Pour être certain que l'utilisateur n'accède et ne visualise que son répertoire, nous souhaitons l'enfermer dedans. Dans notre cas, nous voulons l'enfermer dans son répertoire $HOME soit /home/jdoe. Avec sftpd, cette prison se met en place relativement simplement en prenant en considération que l'utilisateur ne doit pas pouvoir écrire à la racine de sa prison. Nous lui supprimons donc le droit d'écriture :

Pour activer la prison, modifiez la configuration de vsftpd qui se trouve dans le fichier /etc/vsftpd.conf en activant la directive chroot_local_user (il faut décommenter la ligne en supprimant le # qui la précède) :

Créez un répertoire accessible en écriture dans lequel jdoe pourra écrire des fichiers :

Redémarrez le service pour prendre en compte les changements :

Désormais, en se connectant, jdoe accède à son répertoire $HOME comme si c'était la racine du serveur FTP, et il ne peut écrire que dans le répertoire writable.

Prison FTP

 

Retour aux articles