Comment faire un serveur FTP avec connexion sécurisée sous LinuxMint?

Depuis décembre dernier, j’ai un serveur roulant LinuxMint 17.1 (Ubuntu 14.04 LTS) à la maison. Un des services les plus important pour moi était d’avoir un serveur FTP.

J’avais donc entrepris d’utiliser vsftpd, puis proftpd, mais je n’ai eu que problèmes par dessus problèmes avec eux.

Mes besoins étaient les suivant:

-Pouvoir choisir le dossier root de chacun des utilisateurs.
-Pouvoir créer des utilisateurs virtuels qui sont indépendant de mon système Linux.
-Pouvoir utiliser le FTPS ou sFTP.

L’un des deux logiciels ne pouvait pas créer d’utilisateurs virtuels. L’autre avait un bogue qui faisait que le FTP over SSH ne fonctionnait pas du tout. Ah, et que dire que l’un d’entre eux ne me permettait pas de mettre un dossier root par utilisateur.

Je suis finalement tombé sur pure-ftpd, et laissez-moi vous dire que ça été un charme à déployer.

Donc vous l’aurez compris, nous allons installer un serveur FTP avec pure-ftpd.

  1. sudo apt-get update
  2. sudo apt-get install pure-ftpd pureadmin openssl libssl0.9.8
  3. sudo groupadd ftpgroup
  4. sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser
  5. sudo mkdir /home/ftpusers
  6. sudo chown -R ftpuser:ftpgroup /home/ftpusers

Nous venons d’installer pure-ftpd ainsi que pureadmin et OpenSSL. Nous avons ensuite créé un groupe dans Linux « ftpgroup » ainsi qu’un utilisateur dans Linux « ftpuser ». Nous avons précisé que « ftpuser » ne pouvait pas se connecter en SSH ou physiquement ouvrir une session sur Linux en mettant /dev/null comme argument.

Nous avons aussi créé le dossier ftpusers dans /home/. Ce dernier pourrait se nommer n’importe quoi, et pourrait être n’importe où. Il s’agit du dossier ROOT de votre FTP. Tous les fichiers à partager devront être dans ce dernier. Évidement, vous pouvez mettre des liens symboliques dans votre dossier root, pour lié des dossiers qui sont à d’autres endroits. Finalement nous avons mit propriétaire du dossier le groupe et l’utilisateur ftpgroup et ftpuser.

Pure-FTPd va donc utiliser le groupe et l’utilisateur « ftpgroup » et « ftpuser » pour gérer les accès des utilisateurs virtuels. Au yeux de Linux, l’utilisateur ftpuser du groupe ftpgroup accèdera aux fichiers sur votre serveur.

Maintenant, vous allez créer des sous-dossiers dans /home/ftpusers. Ces sous-dossiers seront les root de vos utilisateurs. Vous pouvez mettre plusieurs utilisateurs dans le même dossier root si vous voulez, très utile pour des projets ayant plusieurs collaborateurs.

Maintenant nous allons lancer l’interface graphique pureadmin pour créer des utilisateurs virtuels et gérer les roots de ceux-ci.

  1. sudo pureadmin
  2. Cliquez sur Edit, puis Preferences.
  3. Cliquez sur l’onglet Virtual Users.
  4. Assurez-vous que le System UserID est bien ftpuser et que System GroupID est ftpgroup.

REMARQUE: J’ai eu un bogue étrange, si mon ftpuser et mon ftpgroup n’avaient pas le même ID dans les parenthèses, rien ne fonctionnait correctement. Ces IDs sont fournit automatiquement par Linux lorsque vous créé le nom d’utilisateur et le groupe. 1001 signifie que c’est le premier utilisateur créé après votre compte lors de l’installation (qui est 1000). Même chose pour le groupe. Je recommande donc de mettre un ID identique pour le groupe et l’utilisateur. Pour ce faire, veuillez suivre les quelques informations suivantes, sinon, descendez un peu plus bas pour continuer avec la configuration de pure-admin.

MARCHE À SUIVRE POUR CHANGER LES IDs DE L’UTILISATEUR « ftpuser » ET DU GROUPE « ftpgroup »

Nous allons devoir modifier deux fichiers, soit /etc/passwd et /etc/group. Le fichier « passwd » concerne les noms d’utilisateurs, et « group », bah… les groupes!

  1. Ouvrez Terminal
  2. sudo gedit /etc/group

Descendez complètement en bas du fichier, l’une des dernières lignes devrait être votre « ftpgroup » créé plus tôt. Vous devriez voir le ID entre deux « : », par exemple; ftpgroup:x:1001: .

Modifier le ID pour un ID non utilisé, entre 1001 et 9999. Sauvegardez et quitter.

  1. Ouvrez Terminal
  2. sudo gedit /etc/passwd

Descendez complètement en bas du fichier, l’une des dernières lignes devrait être votre « ftpuser » créé plus tôt. Vous devriez voir le ID entre deux « : » à deux reprise, par exemple; ftpuser:x:1001:1001::/dev/null:/etc .

Le premier ID est le ID d’utilisateur, puis le second, est le ID du groupe. Changez le ID du groupe et de l’utilisateur pour qu’ils matchent celui que vous avez choisi plus tôt dans le fichier /etc/group . Vérifier que le ID choisi n’est pas déjà utilisé par un autre utilisateur, car si c’est le cas, vous allez devoir retourner dans le fichier /etc/group changer le ID de nouveau. Sauvegardez et quitter.

Si vous n’aviez pas fermé pure-admin, faites-le, puis rouvrez-le.

DE RETOUR DANS LA CONFIGURATION DE pure-admin

Donc où étions-nous déjà? Ah oui, bien sûr, nous étions dans l’onglet Virtual Users dans les préférences de pure-admin.

Puisque nous avons le même ID entre les parenthèses de UserID et de GroupID, nous allons passez au champ Home directory. Ici, vous allez devoir spécifier le dossier que vous avez créé plus tôt, soit /home/ftpusers . Ceci précise que c’est le dossier root de tout le serveur FTP.

  1. Cliquez sur le bouton Close.
  2. Maintenant dans le menu, cliquez sur PureFTPd, puis Manage Users.
  3. Cliquez sur le bouton Add new user… et entrez le nom d’utilisateur et le mot de passe pour cet utilisateur.
  4. Sélectionnez dans la liste d’utilisateurs, votre nouvel utilisateur et cliquez sur le bouton Edit user.

Vous pouvez entrer le vrai nom de l’utilisateur dans le champ Real Name. Les champs Home Directory et Fake root doivent être identiques. Par défaut, ils seront toujours /home/ftpusers, puisque c’est le dossier du root absolu du serveur FTP. Si vous désirez que votre utilisateur est un root différent, vous devrez créer un dossier dans /home/ftpusers/ et inscrire ici l’emplacement exact.

Pour créer un dossier, utilisez ces deux commandes:

  1. sudo mkdir /home/ftpusers/dossierX
  2. sudo chown -R ftpuser:ftpgroup /home/ftpusers/dossierX

CONFIGURATION DE pure-ftpd

      1. sudo gedit /etc/pure-ftpd/conf/NoAnonymous
      2. Y inscrire « yes » sans guillemet et sauvegarder et quitter Gedit.
      3. sudo gedit /etc/pure-ftpd/conf/PassivePortRange
      4. Y inscrire le port de début ainsi que le port de fin pour le mode passif (derrière un pare-feu) en y laissant un espace entre les deux. (voir images ci-dessous).

ftpportrange

      1. sudo gedit /etc/pure-ftpd/conf/TLS
      2. Y inscrire « 2 » sans guillemet et sauvegarder et quitter Gedit.

CRÉATION D’UNE CLEF D’ENCRYPTION TLS

  1. sudo mkdir -p /etc/ssl/private/
  2. sudo openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
  3. sudo chmod 600 /etc/ssl/private/pure-ftpd.pem
  4. sudo service pure-ftpd restart

La configuration du FTP est terminée.

N’oubliez pas d’ouvrir les ports passifs, ainsi que le port 21 dans votre pare-feu.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *