geerlingguy.ssh-chroot-jail

Rôle Ansible : Configuration du chroot jail SSH

CI

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.

À propos du projet

Simple SSH chroot jail management.

Installer
ansible-galaxy install geerlingguy.ssh-chroot-jail
Licence
mit
Téléchargements
237k
Propriétaire
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns