Serveur FTP, configurer proftpd avec des utilisateurs virtuels

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 :

sudo apt-get update

et

sudo apt-get upgrade

Il est maintenant temps d’installer proftpd :

sudo apt-get install proftpd

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:

sudo adduser antoine

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.

sudo nano  /etc/ssh/sshd_config

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 :

sudo /etc/init.d/ssh restart

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.

sudo nano /etc/proftpd/proftdp.conf

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).

sudo /etc/init.d/proftpd restart

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 :

sudo touch /etc/proftpd/ftpd.passwd

sudo touch /etc/proftpd/ftpd.group

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 :

sudo ftpasswd --passwd --name=virtual_ftp1 --uid=1002 --file=/etc/proftpd/ftpd.passwd --home=/home/virtual_ftp1 --shell=/bin/false

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

sudo mkdir /home/virtual_ftp1

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

sudo ftpasswd --group --name=groupe_ftp --gid=1100 --file=/etc/proftpd/ftpd.group --member=virtual_ftp1

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 :

cat /etc/proftpd/ftpd.passwd

et

cat /etc/proftpd/ftpd.group

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 :
    #Emplacement du fichier contenant la liste des utilisateurs virtuels,
    AuthUserFile /etc/proftpd/ftpd.passwd
    #Emplacement du fichier contenant la liste des groupes virtuels,
    AuthGroupFile /etc/proftpd/ftpd.group
  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 :
    DefaultRoot                     /var/www groupe_ftp
  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.
    Umask   000   000

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.

[Total : 2    Moyenne : 5/5]

A propos de l'auteur(e)

Centre de préférences de confidentialité

Google Analytics

Google Analytics est un outil Google d'analyse d'audience Internet permettant aux propriétaires de sites Web et d'applications de mieux comprendre le comportement de leurs utilisateurs. Cet outil peut utiliser des cookies pour collecter des informations et générer des rapports sur les statistiques d'utilisation d'un site Web sans que les utilisateurs individuels soient identifiés personnellement par Google. Le cookie "__ga" est celui qui est le plus utilisé par Google Analytics.
En plus d’établir des rapports statistiques d’utilisation des sites web, Google Analytics peut également être utilisé, conjointement avec certains des cookies publicitaires décrits précédemment, pour proposer des publicités plus pertinentes sur les services Google (comme Google Search), sur l’ensemble d’Internet et pour mesurer votre interaction avec les publicités que nous affichons.

Google Analytics
_ga, _gid, _gat

Publicité Google

Google AdSense est un programme de monétisation proposé par Google aux éditeurs de sites web pour générer des revenus publicitaires à la performance. Un éditeur de site web peut adhérer gratuitement au programme et bénéficier d’affichages publicitaires sur son site en y plaçant des tags publicitaires correspondant aux formats de son choix par simple copier / coller d’un code fourni par le programme.
Google utilise des cookies pour rendre la publicité plus attractive pour les utilisateurs et plus rentable pour les éditeurs et les annonceurs. Les cookies servent ainsi également à sélectionner les publicités en fonction de leur pertinence pour l'utilisateur, à améliorer les rapports sur les performances des campagnes et à éviter la diffusion d'annonces que l'utilisateur a déjà vues.

Google AdSense
NID,SID,DSID, FLC, AID, TAID