geerlingguy.ssh-chroot-jail
Rol de Ansible: Configuración de cárcel chroot SSH
Configura una cárcel chroot específicamente para limitar un conjunto de usuarios SSH a la cárcel. Es útil si tienes un servidor donde necesitas permitir un acceso muy limitado a un conjunto muy restringido de funcionalidades.
Requisitos
Requiere un servidor OpenSSH. No requiere geerlingguy.security
, pero se recomienda encarecidamente ese rol (o uno similar) para ayudar a asegurar tu servidor lo más posible.
Variables del Rol
Las variables disponibles se enumeran a continuación, junto con valores predeterminados (ver defaults/main.yml
):
ssh_chroot_jail_path: /var/jail
La ruta a la raíz de la cárcel chroot.
ssh_chroot_jail_group_name: ssh_jailed
El grupo al que deben ser añadidos los usuarios encarcelados.
ssh_chroot_jail_users:
- name: foo
home: /home/foo
shell: /bin/bash
Una lista de usuarios que deben estar en la cárcel chroot. Deja configurado en el valor predeterminado ([]
) si deseas gestionar los usuarios por tu cuenta.
ssh_chroot_jail_dirs:
- bin
- dev
- etc
- lib
- lib64
- usr/bin
- usr/lib
- usr/lib64
- home
Directorios base que deben existir en la cárcel.
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' }
Dispositivos que deben existir en la cárcel.
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
Una lista de binarios que deben ser copiados a la cárcel. Cada binario también tendrá sus dependencias de biblioteca copiadas en la cárcel usando el script l2chroot
incluido con este rol; puedes omitir esa tarea estableciendo la clave bin
explícitamente y configurando l2chroot: false
como en el último ejemplo anterior.
ssh_chroot_l2chroot_template: l2chroot.j2
ssh_chroot_l2chroot_path: /usr/local/bin/l2chroot
La URL de descarga y la ruta donde se debe instalar l2chroot
.
ssh_chroot_copy_extra_items:
- /etc/hosts
- /etc/passwd
- /etc/group
- /etc/ld.so.cache
- /etc/ld.so.conf
- /etc/nsswitch.conf
Elementos extra que deben ser copiados a la cárcel.
ssh_chroot_sshd_chroot_jail_config: |
Match group {{ ssh_chroot_jail_group_name }}
ChrootDirectory {{ ssh_chroot_jail_path }}
X11Forwarding no
AllowTcpForwarding no
Configuración que se debe añadir al sshd_config
del servidor que controla cómo se manejan los usuarios en el grupo de la cárcel chroot.
ssh_chroot_jail_dirs_recurse: true
Al añadir directorios a la cárcel, si la adición de directorios debe hacerse de forma recursiva o no. Si tienes muchos directorios con miles de archivos, y/o tienes los directorios en un sistema de archivos lento, esto debe establecerse en false
.
Dependencias
Ninguna.
Ejemplo de Playbook
- hosts: servers
become: yes
roles:
- geerlingguy.security
- geerlingguy.ssh-chroot-jail
Dentro de vars/main.yml
:
ssh_chroot_jail_users:
- name: janedoe
home: /home/janedoe
shell: /bin/bash
Licencia
MIT (Expat) / BSD
Información del Autor
Este rol fue creado en 2017 por Jeff Geerling, autor de Ansible for DevOps.
Agradecimientos especiales a Acquia por patrocinar el desarrollo inicial de este rol.
Simple SSH chroot jail management.
ansible-galaxy install geerlingguy.ssh-chroot-jail