silverlogic.sshd
Servidor OpenSSH
Este rol configura el daemon de OpenSSH. Hace lo siguiente:
- Por defecto, configura el daemon SSH con los valores normales del sistema operativo.
- Funciona en varias distribuciones similares a UNIX.
- Se puede configurar mediante un diccionario o variables simples.
- Soporta conjuntos Match.
- Soporta todas las opciones de sshd_config. Las plantillas se generan programáticamente. (ver meta/make_option_list)
- Prueba la configuración de sshd antes de recargar sshd.
ADVERTENCIA Una configuración incorrecta de este rol puede bloquearte el acceso a tu servidor. ¡Por favor, prueba tu configuración y su interacción con la configuración de tus usuarios antes de usarla en producción!
ADVERTENCIA Digital Ocean permite acceso root con contraseñas a través de SSH en Debian y Ubuntu. Este no es el valor por defecto asignado por este módulo; establecerá PermitRootLogin without-password
, lo que permitirá el acceso a través de claves SSH pero no con una contraseña simple. Si necesitas esta funcionalidad, asegúrate de establecer ssh_PermitRootLogin yes
para esos hosts.
Requisitos
Probado en:
- Ubuntu preciso, trusty
- Debian wheezy, jessie
- FreeBSD 10.1
- Distribuciones derivadas de EL 6,7
- Fedora 22, 23
- OpenBSD 6.0
Probablemente funcione en otros sabores y se agradece el soporte más directo a través de archivos adecuados en vars/.
Variables del rol
Sin configurar, este rol proporcionará un sshd_config que coincide con el valor por defecto del sistema operativo, menos los comentarios y en un orden diferente.
- sshd_skip_defaults
Si se establece como Verdadero, no aplicará valores por defecto. Esto significa que debes tener un conjunto completo de configuraciones por defecto a través del diccionario sshd o de las variables sshd_Key. Por defecto es Falso.
- sshd_manage_service
Si se establece como Falso, el servicio/daemon no será tocado en absoluto, es decir, no se intentará habilitar al inicio o iniciar o recargar el servicio. Por defecto es Verdadero a menos que se esté ejecutando dentro de un contenedor docker (se asume que Ansible se usa durante la fase de construcción).
- sshd_allow_reload
Si se establece como Falso, no se recargará sshd al realizar un cambio. Esto puede ayudar a la solución de problemas. Deberás recargar manualmente sshd si deseas aplicar la configuración cambiada. Por defecto tiene el mismo valor que sshd_manage_service
.
- sshd_authorized_principals_file
La ruta donde se almacenarán los archivos de principios autorizados. Solo se utiliza si sshd_authorized_principals
también está configurado. Se puede usar para establecer tu configuración sshd_AuthorizedPrincipalsFile. Ejemplo: sshd_AuthorizedPrincipalsFile: '{{ sshd_authorized_principals_file }}'
- sshd_authorized_principals
Un diccionario de listas que especifica qué principios están autorizados a iniciar sesión en qué usuarios. Cada clave en el diccionario es el nombre del usuario. El valor del diccionario es una lista de principios que están autorizados a iniciar sesión en ese usuario. Ejemplo:
sshd_authorized_principals:
root:
- root-everywhere
- bobby
- ryan
- sshd_trusted_user_ca_keys_file
La ruta donde se almacenará el archivo de claves CA de usuario confiable. Solo se utiliza si sshd_trusted_user_ca_keys
también está configurado. Se puede usar para establecer tu configuración sshd_TrustedUserCAKeys. Ejemplo: sshd_TrustedUserCAKeys: '{{ sshd_trusted_user_ca_keys }}'
- sshd_trusted_user_ca_keys
Una lista de claves públicas CA en las que confiar.
- sshd
Un diccionario que contiene la configuración. Ejemplo:
sshd:
Compression: delayed
ListenAddress:
- 0.0.0.0
- ssh_...
Se pueden usar variables simples en lugar de un diccionario. Los valores simples sobrescriben los valores del diccionario. Ejemplo:
sshd_Compression: off
En todos los casos, los booleanos se representan correctamente como sí y no en la configuración de sshd. Se pueden usar listas para elementos de configuración de varias líneas. Ejemplo:
sshd_ListenAddress:
- 0.0.0.0
- '::'
Se representa como:
ListenAddress 0.0.0.0
ListenAddress ::
- sshd_match
Una lista de diccionarios para una sección Match. Consulta el ejemplo de libro de jugadas.
- sshd_match_1 hasta sshd_match_9
Una lista de diccionarios o solo un diccionario para una sección Match.
Dependencias
Ninguna
Ejemplo de Libro de Jugadas
¡PELIGRO! Este ejemplo es para mostrar el rango de configuraciones que este rol proporciona. ¡Ejecutarlo probablemente interrumpirá tu acceso SSH al servidor!
---
- hosts: all
vars:
sshd_skip_defaults: true
sshd:
Compression: true
ListenAddress:
- "0.0.0.0"
- "::"
GSSAPIAuthentication: no
Match:
- Condition: "Group user"
GSSAPIAuthentication: yes
sshd_UsePrivilegeSeparation: no
sshd_match:
- Condition: "Group xusers"
X11Forwarding: yes
roles:
- role: willshersystems.sshd
Resulta en:
# Gestionado por Ansible: ...
Compression yes
GSSAPIAuthentication no
UsePrivilegeSeparation no
Match Group user
GSSAPIAuthentication yes
Match Group xusers
X11Forwarding yes
Generación de Plantillas
La plantilla sshd_config.j2 se genera programáticamente por los scripts en meta. Nuevas opciones deben añadirse al options_body o options_match.
Para regenerar la plantilla, desde el directorio meta/ ejecutar:
./make_option_list >../templates/sshd_config.j2
Licencia
LGPLv3
Autor
Matt Willsher matt@willsher.systems
© 2014,2015 Willsher Systems Ltd.
OpenSSH SSH deamon configuration
ansible-galaxy install silverlogic.sshd