nephosolutions.sftp_server
Servidor SFTP
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
.
- Los valores pueden ser cadenas simples o diccionarios que contienen pares clave/valor
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 deciropenssl passwd -1 -salt salty passpass
. Las contraseñas en blanco se pueden configurar conpassword: ""
. NOTA: Parece queUsePAM yes
yPermitEmptyPassword yes
deben estar configurados ensshd_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 esTrue
).authorized
: Una lista opcional de archivos ubicados enfiles/
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 agregarsftp_group_name
a los grupos del usuario (si los hay) en lugar de establecerlos (por defecto esFalse
).mode
: El modo del directorio de inicio de los usuarios (por defecto es0750
).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 essftp_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
ansible-galaxy install nephosolutions.sftp_server