top of page
cloud-vds.png
  • 2 Base de données

  • 2 VPS AMD

  • 4 instances ARM

  • Stockage 100 Go

  • 50k appels API

theme-light-dark-white.png
Photo du rédacteurNeo is calling you

Sécuriser l'accès SFTP avec CHroot et bloquer l'utilisation de SSH

Si vous souhaitez configurer des utilisateurs sur votre système qui seront utilisés uniquement pour transférer des fichiers (et non pour accéder en ssh au système), vous devez configurer ce qu'on apelle une SFTP Chroot Jail.


Dans un scénario sftp typique (lorsque chroot sftp n'est pas configuré), si vous utilisez sftp, vous pouvez voir le fichier root comme indiqué ci-dessous.

Environnement SFTP non Chroot


Dans l'exemple suivant (un environnement sftp typique), testeur peut utiliser sftp sur le système, afficher le dossier /etc et télécharger des fichiers tel que le fichier /etc/passwd qui contient toutes les informations relatives aux utilisateurs (login, mots de passe, ...).

sftp tester@awoui
tester@awoui's password:
sftp> pwd
Remote working directory: /home/tester

sftp> ls
téléchargements documents 

sftp> cd /etc
sftp> ls -l passwd
-rw-r--r--    0 0        0            3750 Dec 29 23:09 passwd

sftp> get passwd
Fetching /etc/passwd to passwd
/etc/passwd     100% 3750     3.7KB/s   00:00


Environnement Chroot SFTP


Dans l'exemple suivant, testeur peut utiliser sftp sur le système et n'afficher que le répertoire que vous avez désigné pour testeur.

Lorsque testeur essaie d'exécuter "cd /etc", il affichera un message d'erreur. Puisque SFTP est configuré dans un environnement chroot, tester ne peut afficher aucun autre fichier du système.

sftp tester@awoui
tester@awoui's password:
sftp> pwd
Remote working directory: /home/testeur

sftp> ls
sftp> cd /etc
Couldn't canonicalise: No such file or directory

Maintenant que vous savez ce qu'est l'environnement Chroot SFTP, voyons comment le configurer.


1. Créez un nouveau groupe


Créez un groupe appelé sftp. Seuls les utilisateurs appartenant à ce groupe seront automatiquement limités à l'environnement chroot SFTP sur ce système.

groupadd sftp


2. Créer des utilisateurs (ou modifier un utilisateur existant)


Supposons que vous souhaitiez créer un utilisateur Tom qui ne devrait être autorisé qu'à exécuter SFTP dans un environnement chroot, et qui ne devrait pas être autorisé à exécuter SSH.


La commande suivante crée l'utilisateur "Tom", affecte cet utilisateur au groupe sftp et fait de /home le répertoire personnel. Définir /sbin/nologin comme shell empêchera l'utilisateur d'utiliser ssh et d'obtenir un accès shell).

useradd -g sftp -d /home -s /sbin/nologin tom
passwd tom

Vérifiez que l'utilisateur a été créé correctement.

grep tom /etc/passwd
tom:x:500:500::/home:/sbin/nologin

Si vous souhaitez modifier un utilisateur existant et en faire un utilisateur sftp uniquement et le mettre dans la prison chroot sftp, procédez comme suit:

usermod -g sftp -d /home -s /sbin/nologin tom

Dans le même ordre d'idées, si vous devez transférer des fichiers de Windows vers Linux, utilisez l'un des clients sftp tels que filezilla ou winscp.


3. Configurer le sous-système sftp-server dans sshd_config


Vous devriez demander à sshd d'utiliser le sftp interne pour sftp (au lieu du serveur sftp par défaut).


Modifiez le fichier /etc/ssh/sshd_config et commentez la ligne suivante:

#Subsystem       sftp    /usr/libexec/openssh/sftp-server

Ensuite, ajoutez la ligne suivante au fichier /etc/ssh/sshd_config :

Subsystem       sftp    internal-sftp

Enregistrez puis quittez le fichier /etc/ssh/sshd_config.

Vous pouvez à nouveau vérifier en utilisant la commande grep :

grep sftp /etc/ssh/sshd_config
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp


4. Spécifier le répertoire de chroot pour un groupe


Vous ne voulez mettre que certains utilisateurs (c'est-à-dire les utilisateurs appartenant au groupe sftp) dans l'environnement de la prison chroot. Ajoutez les lignes suivantes à la fin de /etc/ssh/sshd_config

nano /etc/ssh/sshd_config
Match Group sftp
        ChrootDirectory /sftp/%u
        ForceCommand internal-sftp

Au dessus:

  • Match Group sftp - Ceci indique que les lignes suivantes ne seront mises en application que pour les utilisateurs appartenant au groupe sftp.

  • ChrootDirectory/sftp/% u - C'est le chemin qui sera utilisé après l'authentification de l'utilisateur. % u indique l'utilisateur. Donc, pour Tom, ce sera /sftp/christophe.

  • ForceCommand internal-sftp - Ceci force l'exécution du internal-sftp et ignore toute commande mentionnée dans le fichier ~/.ssh/rc file.

5. Créer un répertoire de base sftp


Puisque nous avons spécifié /sftp comme ChrootDirectory ci-dessus, créez ce répertoire (qui est l'équivalent de votre répertoire /home typique).

mkdir /sftp

Maintenant, sous /sftp, créez les répertoires individuels pour les utilisateurs qui font partie du groupe sftp. c'est-à-dire les utilisateurs qui ne seront autorisés qu'à exécuter sftp et qui seront dans l'environnement chroot.

mkdir /sftp/tom

Ainsi, /sftp/tom est équivalent à / pour Tom. Lorsque Tom utilise le sftp et exécute «cd /», il ne verra que le contenu des répertoires sous «/sftp/tom» (et non la vraie racine / du système). C'est la puissance du chroot.


Ainsi, sous ce répertoire /sftp/tom, créez n'importe quel sous-répertoire que vous souhaitez que l'utilisateur voie. Par exemple, créez un répertoire entrant dans lequel les utilisateurs peuvent envoyer leurs fichiers.

mkdir /sftp/tom/home

6. Configuration des autorisations appropriées


Pour que chroot fonctionne correctement, vous devez vous assurer que les autorisations appropriées sont correctement configurées sur le répertoire que vous venez de créer ci-dessus.


Définissez l'appartenance à l'utilisateur et au groupe sftp comme indiqué ci-dessous.

chown tom:sftp /sftp/tom/home

L'autorisation ressemblera à ce qui suit pour le répertoire entrant.

ls -ld /sftp/tom/home
drwxr-xr-x 2 to sftp 4096 Dec 28 23:49 /sftp/tom/home

L'autorisation ressemblera à ce qui suit pour le répertoire /sftp/tom

ls -ld /sftp/tom
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/tom

ls -ld /sftp
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp


7. Redémarrer sshd et testez Chroot SFTP


Redémarrez sshd:

service ssh restart

Testez l'environnement chroot sftp. Comme vous le voyez ci-dessous, lorsque tom fait sftp, et fait «cd /», il ne verra que le répertoire entrant.

Posts similaires

Voir tout

Comentarios


Titre

Chargement...

Chargement...

Chargement...

bottom of page