nephosolutions.sftp_server

Servidor SFTP

Rol de Ansible Licencia de Software Estado de Construcción

Un rol de Ansible que configura un servidor OpenSSH para acceso SFTP en chroot. El rol está diseñado de tal manera que no alterará innecesariamente las personalizaciones de OpenSSH de un usuario. En su lugar, solo cambia las partes cruciales que necesita y agrega el resto de su configuración en forma de un bloque de configuración personalizado (la falta de soporte de conf.d/ en OpenSSH obliga a este comportamiento).

Requisitos

Es recomendable que scp_if_ssh esté configurado como true en la sección ssh_connection de su archivo ansible.cfg, ya que Ansible usa SFTP para transferencias de archivos de manera predeterminada y puede bloquearse accidentalmente el acceso al SFTP del servidor al usar este rol. Sin embargo, el método SCP seguirá funcionando. Ejemplo de configuración:

; ansible.cfg
...
[ssh_connection]
scp_if_ssh=True

Aparte de eso, solo se requiere Ansible. Se probó con Ansible 2.0.2.0, 2.2.2.0 y 2.3.0.0. Funciona en Ubuntu 14.04 y 16.04, no probado en otras versiones. Se ha trabajado en dar soporte a RHEL, aunque actualmente no es oficialmente soportado por el autor original (naturalmente, se agradecen las contribuciones).

Variables del Rol

Las siguientes variables del rol son relevantes:

  • sftp_home_partition: La partición donde se ubicarán los directorios de inicio de los usuarios SFTP. Por defecto es "/home".
  • sftp_group_name: El nombre del grupo Unix al que deben pertenecer todos los usuarios SFTP. Por defecto es "sftpusers".
  • sftp_directories: Una lista de directorios que deben ser creados automáticamente por defecto para todos los usuarios SFTP. Por defecto es una lista vacía (es decir, "[]").
    • Los valores pueden ser cadenas simples o diccionarios que contienen pares clave/valor name y (opcionalmente) mode.
  • sftp_start_directory: Un directorio que debe formar parte de los valores de sftp_directories y que es el directorio de inicio de la nueva conexión SFTP. Desactivado por defecto con un valor de cadena vacía.
  • sftp_allow_passwords: Indica si se permite o no la autenticación por contraseña para SFTP. Por defecto es False.
  • sftp_enable_selinux_support: Indica si se debe habilitar explícitamente el soporte SELinux. Por defecto es False.
  • sftp_enable_logging: Habilitar el registro. Los registros de autenticación se escribirán en /var/log/sftp/auth.log y los registros de actividad SFTP se escribirán en /var/log/sftp/verbose.log. Por defecto es False.
  • sftp_users: Una lista de usuarios, en forma de mapa, que contienen los siguientes elementos:
    • name: El nombre Unix del usuario que requiere acceso SFTP.
    • group: Un grupo primario opcional para el usuario. Si se establece, se usará para los permisos del directorio de inicio del usuario. De lo contrario, se usará sftp_group_name.
    • password: Un hash de contraseña para que el usuario inicie sesión - es decir openssl passwd -1 -salt salty passpass. Las contraseñas en blanco se pueden configurar con password: "". NOTA: Parece que UsePAM yes y PermitEmptyPassword yes deben estar configurados en sshd_config para que las contraseñas en blanco funcionen correctamente. Hacer esos cambios actualmente está fuera del alcance de este rol y se debe hacer externamente.
    • shell: Booleano que indica si el usuario debe tener acceso de shell (por defecto es True).
    • authorized: Una lista opcional de archivos ubicados en files/ que contienen claves públicas válidas para el usuario SFTP.
    • sftp_directories: Una lista de directorios que necesitan ser creados individualmente para un usuario SFTP. Por defecto es una lista vacía (es decir, "[]").
    • append: Booleano para agregar sftp_group_name a los grupos del usuario (si los hay) en lugar de establecerlos (por defecto es False).
    • mode: El modo del directorio de inicio de los usuarios (por defecto es 0750).
    • skeleton: Un directorio de estructura de inicio opcional (por ejemplo: /dev/null). Por defecto usa los valores predeterminados del sistema.
    • home: Un directorio de inicio opcional (por ejemplo: /home/bob). Por defecto es sftp_home_partition/name.
  • sftp_nologin_shell: El shell "nologin" del usuario. (por defecto es /sbin/nologin).

Notas:

  • La configuración de sftp_nologin_shell define el shell asignado a los sftp_users cuando el shell del usuario SFTP se establece en False. (El shell nologin asegura que el usuario solo pueda usar SFTP y no tenga otros permisos de inicio de sesión). Este valor puede variar según la versión del sistema operativo.

Ejemplo de Playbook

---
- name: test-playbook | Probar rol de sftp-server
  hosts: all
  become: yes
  become_user: root
  vars:
    - sftp_users:
      - name: peter
        password: "$1$salty$li5TXAa2G6oxHTDkqx3Dz/" # passpass
        shell: False
        sftp_directories:
        - directorio_solo_para_peter1
        - directorio_solo_para_peter2
      - name: sally
        password: ""
        authorized: [sally.pub]
        home: /var/tmp/sally
        append: True
    - sftp_directories:
      - imports
      - exports
      - { name: public, mode: 755 }
      - other
  roles:
    - sftp-server

Licencia

Este rol de Ansible se distribuye bajo la Licencia MIT. Consulte el archivo LICENSE para más detalles.

Donaciones

Las donaciones son muy bienvenidas y se pueden hacer a las siguientes direcciones:

  • BTC: 1AWHJcUBha35FnuuWat9urRW2FNc4ftztv
  • ETH: 0xAF1Aac4c40446F4C46e55614F14d9b32d712ECBc
Acerca del proyecto

Setup chrooted SFTP service on top of OpenSSH

Instalar
ansible-galaxy install nephosolutions.sftp_server
Licencia
mit
Descargas
714
Propietario
ICT Consultancy & Services – DevOps & Cloud Architects