geerlingguy.ssh-chroot-jail

Rol de Ansible: Configuración de cárcel chroot SSH

CI

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.

Acerca del proyecto

Simple SSH chroot jail management.

Instalar
ansible-galaxy install geerlingguy.ssh-chroot-jail
Licencia
mit
Descargas
237k
Propietario
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns