geerlingguy.ssh-chroot-jail
Rôle Ansible : Configuration du chroot jail SSH
Configure un chroot jail spécifiquement pour limiter un ensemble d'utilisateurs SSH à la prison. Utile si vous avez un serveur où vous devez permettre un accès très limité à un nombre très restreint de fonctionnalités.
Exigences
Nécessite un serveur OpenSSH. N'exige pas geerlingguy.security, mais ce rôle (ou un similaire) est fortement recommandé pour sécuriser votre serveur autant que possible.
Variables du Rôle
Les variables disponibles sont listées ci-dessous, avec leurs valeurs par défaut (voir defaults/main.yml):
ssh_chroot_jail_path: /var/jail
Le chemin vers la racine de la chroot jail.
ssh_chroot_jail_group_name: ssh_jailed
Le groupe dans lequel les utilisateurs en prison doivent être ajoutés.
ssh_chroot_jail_users:
- name: foo
home: /home/foo
shell: /bin/bash
Une liste d'utilisateurs qui doivent être dans la chroot jail. Laissez à la valeur par défaut ([]) si vous souhaitez gérer les utilisateurs vous-même.
ssh_chroot_jail_dirs:
- bin
- dev
- etc
- lib
- lib64
- usr/bin
- usr/lib
- usr/lib64
- home
Répertoires de base qui doivent exister dans la prison.
ssh_chroot_jail_devs:
- { dev: 'null', major: '1', minor: '3' }
- { dev: 'random', major: '5', minor: '0' }
- { dev: 'urandom', major: '1', minor: '5' }
- { dev: 'zero', major: '1', minor: '8' }
Les périphériques qui doivent exister dans la prison.
ssh_chroot_bins:
- /bin/cp
- /bin/sh
- /bin/bash
- /bin/ls
...
- /usr/bin/tail
- /usr/bin/head
- /usr/bin/awk
- /usr/bin/wc
...
- bin: /usr/bin/which
l2chroot: false
Une liste de binaires qui doivent être copiés dans la prison. Chaque binaire aura également ses dépendances de bibliothèque copiées dans la prison à l'aide du script l2chroot inclus dans ce rôle ; vous pouvez sauter cette tâche en définissant explicitement la clé bin et en réglant l2chroot: false comme dans le dernier exemple ci-dessus.
ssh_chroot_l2chroot_template: l2chroot.j2
ssh_chroot_l2chroot_path: /usr/local/bin/l2chroot
L'URL de téléchargement et le chemin dans lequel l2chroot doit être installé.
ssh_chroot_copy_extra_items:
- /etc/hosts
- /etc/passwd
- /etc/group
- /etc/ld.so.cache
- /etc/ld.so.conf
- /etc/nsswitch.conf
Éléments supplémentaires qui doivent être copiés dans la prison.
ssh_chroot_sshd_chroot_jail_config: |
Match group {{ ssh_chroot_jail_group_name }}
ChrootDirectory {{ ssh_chroot_jail_path }}
X11Forwarding no
AllowTcpForwarding no
Configuration à ajouter au sshd_config du serveur contrôlant comment les utilisateurs du groupe en prison sont gérés.
ssh_chroot_jail_dirs_recurse: true
Lors de l'ajout de répertoires à la prison, si l'ajout de répertoire doit se faire de manière récursive ou non. Si vous avez de nombreux répertoires avec des milliers de fichiers, et/ou si les répertoires sont sur un système de fichiers lent, cela doit être réglé sur false.
Dépendances
Aucune.
Exemple de Playbook
- hosts: serveurs
become: yes
roles:
- geerlingguy.security
- geerlingguy.ssh-chroot-jail
À l'intérieur de vars/main.yml:
ssh_chroot_jail_users:
- name: janedoe
home: /home/janedoe
shell: /bin/bash
Licence
MIT (Expat) / BSD
Informations sur l'auteur
Ce rôle a été créé en 2017 par Jeff Geerling, auteur de Ansible for DevOps.
Remerciements spéciaux à Acquia pour avoir sponsorisé le développement initial de ce rôle.
Simple SSH chroot jail management.
ansible-galaxy install geerlingguy.ssh-chroot-jail