Security
Difficulte: Intermediate
4 min de lecture

Chroot SFTP : Isoler les Utilisateurs SFTP

Guide étape par étape pour configurer un environnement SFTP sécurisé avec chroot, afin de restreindre les utilisateurs à leurs répertoires dédiés.

Retour aux tutoriels
Qu'est-ce qu'un chroot SFTP ?
"Chroot" signifie "changer la racine". Un chroot SFTP est une configuration de sécurité pour le service SSH qui limite les utilisateurs SFTP à un répertoire spécifique sur le serveur. Pour eux, ce répertoire devient la racine (/) du système, et ils ne peuvent pas naviguer ou voir les fichiers en dehors de cette "prison".

Pourquoi utiliser un chroot SFTP ?

  • Sécurité : C'est la raison principale. Vous donnez accès à un serveur pour le transfert de fichiers sans exposer toute l'arborescence de votre système.
  • Confidentialité : Isole les utilisateurs les uns des autres. Chaque utilisateur ne voit que son propre environnement.
  • Simplicité pour l'utilisateur : L'utilisateur n'est pas submergé par l'arborescence complexe du système de fichiers du serveur.

Prérequis

  • Un serveur Linux (Ubuntu/Debian, CentOS/RHEL, etc.).
  • Accès root ou privilèges sudo.
  • Le service OpenSSH Server est installé et fonctionnel.

Configuration

Étape 1 : Créer un groupe pour les utilisateurs SFTP

Il est recommandé de gérer les utilisateurs SFTP via un groupe dédié.

sudo groupadd sftp_users

Étape 2 : Créer un utilisateur et son répertoire

Nous allons créer un nouvel utilisateur, par exemple `laura`, qui sera limité au SFTP.

# Créer l'utilisateur sans shell interactif et l'ajouter au groupe sftp_users
sudo useradd -m -G sftp_users -s /sbin/nologin laura

# Définir un mot de passe pour cet utilisateur
sudo passwd laura

Étape 3 : Préparer l'arborescence du chroot

C'est l'étape la plus importante et la source de nombreuses erreurs. La structure des permissions est très stricte.

# Créer le répertoire qui servira de prison
sudo mkdir -p /sftp/laura

# Le répertoire racine de la prison DOIT appartenir à root
sudo chown root:root /sftp/laura

# Les permissions ne doivent PAS autoriser l'écriture pour le groupe ou les autres
sudo chmod 755 /sftp/laura

# Créer un sous-répertoire où l'utilisateur pourra écrire des fichiers
sudo mkdir /sftp/laura/uploads

# Donner la propriété de ce répertoire à l'utilisateur
sudo chown laura:sftp_users /sftp/laura/uploads
Attention aux permissions !
Si le répertoire racine du chroot (/sftp/laura) peut être écrit par l'utilisateur, SSH refusera la connexion pour des raisons de sécurité. Il doit appartenir à root.

Étape 4 : Configurer le service SSH

Modifiez le fichier /etc/ssh/sshd_config pour activer le chroot pour notre groupe.

sudo nano /etc/ssh/sshd_config

Ajoutez ce bloc à la toute fin du fichier :


# Règle pour le groupe sftp_users
Match Group sftp_users
    # Appliquer le chroot au répertoire spécifié (%u est remplacé par le nom d'utilisateur)
    ChrootDirectory /sftp/%u
    
    # Forcer la commande interne SFTP (désactive l'accès shell)
    ForceCommand internal-sftp
    
    # Désactiver les fonctionnalités de tunneling, non nécessaires pour SFTP
    AllowTcpForwarding no
    X11Forwarding no

Étape 5 : Redémarrer le service SSH

Appliquez les changements en redémarrant le service SSHD.

sudo systemctl restart sshd

Tester la connexion

Depuis une machine cliente, essayez de vous connecter en SFTP.

sftp laura@votre_serveur_ip

Une fois connecté, vous devriez être dans le répertoire racine (qui est en réalité /sftp/laura). Vous ne pourrez pas remonter dans l'arborescence (cd .. échouera). Vous ne devriez pouvoir écrire que dans le répertoire uploads.


sftp> pwd
Remote working directory: /
sftp> ls
uploads
sftp> cd uploads
sftp> put mon_fichier.txt
Uploading mon_fichier.txt to /uploads/mon_fichier.txt
Isolé et sécurisé !
Votre utilisateur est maintenant confiné dans son répertoire, protégeant le reste de votre serveur.

Conclusion

La configuration d'un chroot SFTP est une compétence essentielle pour tout administrateur système. Elle représente un excellent équilibre entre la nécessité de fournir un accès pour le transfert de fichiers et l'impératif de sécuriser le système sous-jacent. La clé du succès réside dans la gestion rigoureuse des permissions des répertoires.