PROFTPD, configurer un serveur FTP orienté web sur son dédié, VPS

L’installation d’un serveur dédié ou VPS pour la gestion d’un ou plusieurs site web passe forcément par la gestion d’un serveur FTP. Cet outil indispensable permet une meilleur gestion des transferts de fichiers, son encadrement et sa sécurisation. Dans ce tuto nous allons mettre en place l’installation proftpd, mais il en existe d’autres comme vsftpd.

  1. Prérequis à l’installation de proftpd
  2. Configurer les utilisateurs FTP
  3. Blocage ssh des utilisateurs
  4. Blocage dans les répertoires
  5. Les utilisateurs virtuels
  6. Configuration de proftpd pour les utilisateurs virtuels

Prérequis à l’installation de proftpd

L’installation d’un serveur FTP est l’une des étape primordiale de votre configuration de serveur. Il n’y a pas de prérequis particulier à sa mise en place. Vous devez cependant avoir un accès ssh avec un compte ayant des droits de “Super User” à votre serveur pour toutes les manipulations à venir.

Comme avant toute installation de nouveau paquet, assurez vous que votre serveur (dédié ou VPS) soit à jour avec les habituelles commandes :

[pastacode lang=”markup” manual=”sudo%20apt-get%20update” message=”” highlight=”” provider=”manual”/]

et

[pastacode lang=”markup” manual=”sudo%20apt-get%20upgrade” message=”” highlight=”” provider=”manual”/]

Il est maintenant temps d’installer proftpd :

[pastacode lang=”markup” manual=”sudo%20apt-get%20install%20proftpd” message=”” highlight=”” provider=”manual”/]

Lors de l’installation, proftpd vous demandera si vous désirez une installation inetd ou standalone/indépendamment. Nous préférerons la version standalone, plus adaptée aux phases de développement pour votre dédié ou votre VPS.

  • Inetd : Le serveur gérera mal les connexions simultanées. Il ne consommera pas de ressources si personne n’y est connecté, mais prendra plus de temps au démarrage.
  • Standalone : Le serveur gérera sans problème les connexions simultanées. Tournant toujours, il consommera plus de ressources, mais sera plus rapide et réactif.

Méthodes de configuration des utilisateurs FTP

Proftpd propose plusieurs façon de gérer les utilisateurs. Nous allons utiliser la plus simple qui consiste à créer des utilisateurs sur votre système d’exploitation et de gérer leur droits. Cela permet d’avoir un contrôle direct sur chacun des utilisateurs, mais cela oblige une création et gestion de ces dernier en ssh. Sachez cependant qu’il est également possible de gérer les utilisateurs en créant des groupes et des comptes virtuels, voir même d’associer cette gestion à une base de donnée.

Nous allons donc avant tout créer un nouveau user que nous allons appeler Antoine:

[pastacode lang=”markup” manual=”sudo%20adduser%20antoine” message=”” highlight=”” provider=”manual”/]

Il vous sera alors demandé “Enter new UNIX password”, donc de choisir son mot de passe, puis des valeurs telles que le nom complet, numéro de téléphones, ces informations sont facultatives.

A l’aide d’un client FTP (ici filezilla) nous voyons qu’il est possible de se connecter au ftp avec notre utilisateur fraîchement créé. On observe également qu’il peut parfaitement se balader dans tout le serveur jusqu’à la racine. Cependant l’utilisateur ne pourra uploader des fichiers que dans son répertoire. En effet, à chaque création d’un utilisateur, un répertoire est automatiquement créé.

proftpd server

Bloquer les utilisateurs FTP en ssh

Le soucis, c’est que cet utilisateur peut également se connecter en ssh :

Un problème de sécurité majeur, car nous ne voulons pas que tous nos utilisateurs puisse librement modifier la configuration de notre serveur. Nous allons donc faire en sorte de n’accepter en ssh que les utilisateurs désirés.

[pastacode lang=”markup” manual=”sudo%20nano%20%20%2Fetc%2Fssh%2Fsshd_config” message=”” highlight=”” provider=”manual”/]

Dans ce fichier de configuration ssh, nous allons ajouter le code : “AllowUsers utilisateur” :

Dans notre exemple, nous autorisons les utilisateurs root et facemadmin à accéder au ssh. Aucun autre ne pourra alors se connecter en ssh. Faites donc bien attention à bien inclure dans ce code les utilisateurs que vous utilisez pour votre accès ssh sous peine de vous bloquer vous même les portes.

Une fois, le fichier sshd_config modifié redémarrons le service ssh pour rendre le changement effectif :

[pastacode lang=”markup” manual=”sudo%20%2Fetc%2Finit.d%2Fssh%20restart” message=”” highlight=”” provider=”manual”/]

Bloquer les utilisateurs de proftpd dans leur répertoire

Comme vu plus haut, nos utilisateurs peuvent se balader comme bon leur semble dans tous les répertoires du serveur. Il est possible de bloquer les utilisateurs dans leur répertoire.

[pastacode lang=”markup” manual=”sudo%20nano%20%2Fetc%2Fproftpd%2Fproftdp.conf” message=”” highlight=”” provider=”manual”/]

Dans ce fichier, nous allons chercher la ligne “DefaultRoot” qui devrait normalement être présente mais commentée (le # devant la ligne). Pour l’activer il suffit de supprimer le #. Il existe plusieurs paramètres pour DefaultRoot, ~ permet de  bloquer les utilisateurs dans leur répertoire.

Pour appliquer ce changement, redémarrons proftpd (chaque changement du fichier proftpd.conf doit faire l’objet d’un redémarrage).

[pastacode lang=”markup” manual=”sudo%20%2Fetc%2Finit.d%2Fproftpd%20restart” message=”” highlight=”” provider=”manual”/]

Création d’utilisateurs virtuels, gérer vos accès ftp comme bon vous semble

Nous arrivons donc à créer des utilisateurs ssh et de les bloquer aussi bien dans le ssh que dans la navigation. Il existe une seconde méthode de création d’utilisateurs qui permet une configuration plus profonde et un meilleurs contrôle des utilisateurs : la créations d’utilisateurs virtuels.

Cette méthode a pour principal intérêt de créer des utilisateurs qui seront uniquement assignés au FTP, plus besoin de contrôler leur accès au ssh puisque de toute manière, ils n’y auront pas accès. Cette méthode va également nous permettre de les bloquer dans un répertoire autre que leur home, très utile dans le cadre d’un développement web !

Dans un premier temps, nous allons créer deux nouveaux fichier dans proftpd, ces derniers contiendront les identifiants et les groupes :

[pastacode lang=”markup” manual=”sudo%20touch%20%2Fetc%2Fproftpd%2Fftpd.passwd%0A%0Asudo%20touch%20%2Fetc%2Fproftpd%2Fftpd.group” message=”” highlight=”” provider=”manual”/]

Passons maintenant à la création d’un nouvel utilisateur virtuel. La commande se présente sous la forme suivante :

sudo ftpasswd –passwd –name=nom_utilisateur  –uid=numéro_uid –file=/etc/proftpd/ftpd.passwd –home=emplacement_dossier_utilisateur –shell=/bin/false

Donc pour la création de l’utilisateur ayant pour uid 1002 nous allons faire. Durant cette création, vous devrez assigner un mot de passe :

[pastacode lang=”markup” manual=”sudo%20ftpasswd%20–passwd%20–name%3Dvirtual_ftp1%20–uid%3D1002%C2%A0–file%3D%2Fetc%2Fproftpd%2Fftpd.passwd%20–home%3D%2Fhome%2Fvirtual_ftp1%20–shell%3D%2Fbin%2Ffalse” message=”” highlight=”” provider=”manual”/]

Puis nous créons le dossier home qui lui correspond :

[pastacode lang=”markup” manual=”sudo%20mkdir%20%2Fhome%2Fvirtual_ftp1″ message=”” highlight=”” provider=”manual”/]

Maintenant, nous allons créer un groupe et allons lui assigner l’utilisateur virtual_ftp1 :

[pastacode lang=”markup” manual=”sudo%20ftpasswd%20–group%20–name%3Dgroupe_ftp%20–gid%3D1100%20–file%3D%2Fetc%2Fproftpd%2Fftpd.group%20–member%3Dvirtual_ftp1%0A” message=”” highlight=”” provider=”manual”/]

Pour vérifier que nous avons bien un utilisateur et son groupe effectuons un petit cat dans les 2 fichiers que nous avons créé plus tôt :

[pastacode lang=”markup” manual=”cat%20%2Fetc%2Fproftpd%2Fftpd.passwd” message=”” highlight=”” provider=”manual”/]

et

[pastacode lang=”markup” manual=”cat%20%2Fetc%2Fproftpd%2Fftpd.group” message=”” highlight=”” provider=”manual”/]

Cela devrait ressembler à ça (les données sont différentes de celles du tuto).

Nous voyons donc ici que j’ai trois utilisateurs : ftpuser1, antoine et benoit_facem, mais que seuls benoit_facem et ftpuser1 sont dans le groupe ftpgroup1.

Pour ajouter un utilisateur à un groupe déjà existant, il vous suffit d’éditer le fichier /etc/proftpd/ftpd.group et d’ajouter un utilisateur virtuel existant après une simple virgule.

Configuration de proftpd pour la prise en charge des utilisateurs virtuels

La dernière étape consiste à configurer proftpd pour que les utilisateurs virtuels aient le droit de se connecter en ftp.

  1. Il nous faut en premier aller dans le fichier /etc/shells pour ajouter /bin/false à la liste des shells autorisés par proftpd. En effet, si vous vous souvenez bien, lors de la création des utilisateurs virtuels, nous avons précisé le paramètre –shell=/bin/false.
  2. Maintenant, le gros de la configuration : le fichier proftpd.conf. En premier, il faut ajouter les lignes suivantes pour indiquer à proftpd d’aller vérifier la présences des utilisateurs virtuels et des groupes dans les bons fichiers :[pastacode lang=”markup” manual=”%23Emplacement%20du%20fichier%20contenant%20la%20liste%20des%20utilisateurs%20virtuels%2C%0AAuthUserFile%20%2Fetc%2Fproftpd%2Fftpd.passwd%0A%23Emplacement%20du%20fichier%20contenant%20la%20liste%20des%20groupes%20virtuels%2C%0AAuthGroupFile%20%2Fetc%2Fproftpd%2Fftpd.group” message=”” highlight=”” provider=”manual”/]
  3. Toujours dans proftpd.conf, nous allons préciser defaultroot pour obliger les utilisateurs du groupe ftp à rester dans le dossier de développement, en général /var/www :[pastacode lang=”markup” manual=”DefaultRoot%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Fvar%2Fwww%20groupe_ftp” message=”” highlight=”” provider=”manual”/]
  4. Petite configuration supplémentaire : le Umask. Ce paramètre gère les droits d’accès aux fichiers nouvellement uploadés par les utilisateurs. Si antoine upload un fichier dans /var/www, seul lui sera capable de le modifier avec le umask de base. L’astuce consiste à modifier Umask pour obtenir 000 000 au lieu de 022 022.[pastacode lang=”markup” manual=”Umask%20%20%20000%20%20%20000″ message=”” highlight=”” provider=”manual”/]

Une fois ces modifications apportées, enregistrez proftpd.conf et redémarrez proftpd en ssh.

Voilà, vos utilisateurs peuvent désormais accéder à votre dossier de développement y travailler sans limite et sans pouvoir se balader dans tout le serveur.

A propos de l'auteur(e)