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