Pourquoi chroot_local_user de vsftpd n'est-il pas sûr?

20

J'installe sur mon VPS un vsftpd, et je ne veux pas que les utilisateurs soient autorisés à quitter leur répertoire personnel ftp. J'utilise ftp local_user, pas anonyme, j'ai donc ajouté:

chroot_local_user = OUI

J'ai lu dans de nombreux messages sur le forum que ce n'était pas sûr.

  1. Pourquoi est-ce incertain?
  2. Si cela n'est pas sûr à cause de l'utilisation de ssh pour se connecter à mon VPS, je pourrais simplement verrouiller ces utilisateurs de sshd, non?
  3. Existe-t-il une autre option pour obtenir ce comportement de vsftpd? (Je ne veux pas supprimer les autorisations de lecture sur tous les dossiers / fichiers pour "world" sur mon système)
p1100i
la source

Réponses:

20

Consultez ici la FAQ de VSFTPD pour la réponse que vous cherchez. Vous trouverez ci-dessous l'extrait important qui, je pense, répondra à votre question.

Q) Aide! Quelles sont les implications de sécurité mentionnées dans l'option "chroot_local_user"?

A) Notez tout d'abord que d'autres démons ftp ont les mêmes implications. C'est un problème générique. Le problème n'est pas trop grave, mais il est le suivant: certaines personnes ont des comptes d'utilisateur FTP qui ne sont pas approuvés pour avoir un accès shell complet. Si ces comptes peuvent également télécharger des fichiers, il y a un petit risque. Un mauvais utilisateur a désormais le contrôle de la racine du système de fichiers, qui est son répertoire personnel. Le démon ftp peut entraîner la lecture de certains fichiers de configuration - par exemple / etc / some_file. Avec chroot (), ce fichier est désormais sous le contrôle de l'utilisateur. vsftpd est prudent dans ce domaine. Mais, la libc du système peut vouloir ouvrir des fichiers de configuration locale ou d'autres paramètres ...

Nic Young
la source
Merci pour ça, je ne savais pas tout ça moi-même. J'ai appris quelque chose! +1
Yanick Girouard
4
En fait, je suis venu ici après avoir lu la FAQ parce que je ne comprends pas cette déclaration inquiétante: "Le démon ftp peut provoquer la lecture d'un fichier de configuration - par exemple / etc / some_file. Avec chroot (), ce fichier est maintenant sous le contrôle de l'utilisateur.". Vraisemblablement, ce ne serait le cas que s'il y vsftpdavait une faille de sécurité (à la surverse du tampon) ??? Comment le fait de courir vsftpdavec des utilisateurs chrootés vers leur répertoire personnel rend-il ce scénario plus probable? Veuillez expliquer ...
sxc731
4

Le problème est que vous ne pouvez pas à la fois utiliser des comptes locaux et également désactiver ces comptes à partir de la connexion au shell. Si vous définissez leur shell de connexion sur / bin / nologin, cela ne vous permettra pas non plus de vous connecter avec vsftpd.

Un démon FTP meilleur et plus sécurisé serait Pure-ftpd. Cherchez-le, il est disponible à partir du référentiel EPEL, et il permet de créer des utilisateurs virtuels. Le serveur utilise un utilisateur / groupe commun pour définir toutes les autorisations pour les dossiers de départ des utilisateurs et "mappe" les utilisateurs virtuels à cet utilisateur lorsqu'il se connecte pour gérer les autorisations. C'est plus sûr et vous n'avez pas à vous soucier de la sécurité de connexion à openssh.

Pure-ftpd prend également en charge de nombreuses fonctionnalités telles que les quotas, les ratios, etc. Beaucoup mieux que vsftpd.

Voici un didacticiel simple sur la façon de l'installer et de configurer un utilisateur virtuel de base: http://blog.namran.net/2011/05/04/how-to-setup-virtual-ftp-server-using-pure-ftpd- in-centos /

Si vous lisez le document complet (que vous devriez), vous saurez que le commutateur -d lors de la création de l'utilisateur virtuel est un chroot automatique vers ce répertoire pour cet utilisateur.

Yanick Girouard
la source
J'utilise la AllowUsers user1 user2directive dans mon sshd_config, où je n'autorise pas ftp_user1 à se connecter avec ssh, mais l'utilisateur ftp_user1 peut toujours se connecter avec ftp. Donc, cela fonctionne comme prévu, mais ma question principale reste ouverte, pourquoi n'est-elle pas sécurisée?
p1100i
4
Oui, il sera! Vous avez juste besoin d'ajouter le "non-shell" à / etc / shells. Sur de nombreux systèmes, / bin / false ou / bin / nologin existe dans / etc / shells. Si le shell est là, vsftpd vous permettra en effet de vous connecter, également avec chroot_local_user activé.
Frands Hansen
1
Je me corrige alors. Merci de l'avoir signalé!
Yanick Girouard