Turgon37.ssh_server
Rol de Ansible para servidor SSH
=========
Descripción
:grey_exclamation: Antes de usar este rol, ten en cuenta que todos mis roles de Ansible están completamente escritos y adaptados a mi infraestructura de TI. Por lo tanto, aunque sean lo más genéricos posible, no necesariamente satisfarán tus necesidades. Te aconsejo que analices cuidadosamente lo que hacen y evalúes su capacidad para ser instalados de forma segura en tus servidores.
Este rol permite la configuración del servidor SSH.
Requisitos
Requiere Ansible >= 2.4
Dependencias
Familia de Sistemas Operativos
Este rol está disponible para Debian y CentOS.
Características
Hasta el momento, el rol se puede usar para:
- instalar sshd
- configurar sshd
- filtrar los módulos iniciales para eliminar números primos débiles
- factores locales
Variables del Rol
Todas las variables que se pueden sobreescribir están almacenadas en el archivo defaults/main.yml así como en la tabla a continuación. Para ver los valores predeterminados, consulta este archivo.
La mayoría de las variables se refieren a parámetros de configuración del sshd. Por favor, obtén información de la página del manual.
Nombre | Tipos/Valores | Descripción |
---|---|---|
ssh_server__facts |
Booleano | Instala el script de hechos locales |
ssh_server__moduli_minimum |
Entero | El tamaño mínimo de primos a mantener en el archivo de módulos |
ssh_server__service_enabled |
Booleano | Habilitar o no el servicio |
ssh_server__protocol |
Cadena | Consulta la página del manual |
ssh_server__privilege_separation |
Cadena | Consulta la página del manual |
ssh_server__pidfile |
Cadena | Consulta la página del manual |
ssh_server__log_facility |
Cadena | Consulta la página del manual |
ssh_server__log_level |
Cadena | Consulta la página del manual |
ssh_server__ports |
Lista de enteros | Consulta la página del manual |
ssh_server__listen |
Lista de IP | Consulta la página del manual |
ssh_server__address_family |
Cadena | Consulta la página del manual |
ssh_server__use_dns |
Booleano | Consulta la página del manual |
ssh_server__tcp_keepalive |
Booleano | Consulta la página del manual |
ssh_server__allow_agent_forwarding |
Booleano | Consulta la página del manual |
ssh_server__allow_tcp_forwarding |
Booleano | Consulta la página del manual |
ssh_server__permit_open |
Cadena | Consulta la página del manual |
ssh_server__gateway_ports |
Cadena | Consulta la página del manual |
ssh_server__allow_stream_local_forwarding |
Booleano | Consulta la página del manual |
ssh_server__permit_tunnel |
Booleano | Consulta la página del manual |
ssh_server__compression |
Cadena | Consulta la página del manual |
ssh_server__ip_qos |
Tupla | Consulta la página del manual |
ssh_server__kex_algorithms |
Lista de cadenas | Consulta la página del manual |
ssh_server__kex_algorithms_additional |
Lista de cadenas | Consulta la página del manual |
ssh_server__ciphers |
Lista de cadenas | Consulta la página del manual |
ssh_server__ciphers_additional |
Lista de cadenas | Consulta la página del manual |
ssh_server__macs |
Lista de cadenas | Consulta la página del manual |
ssh_server__macs_additional |
Lista de cadenas | Consulta la página del manual |
ssh_server__server_key_bits |
Entero | Consulta la página del manual |
ssh_server__key_regeneration_interval |
Entero | Consulta la página del manual |
ssh_server__authentication_methods |
Cadena | Consulta la página del manual |
ssh_server__use_pam |
Booleano | Consulta la página del manual |
ssh_server__use_login |
Booleano | Consulta la página del manual |
ssh_server__password_authentication |
Booleano | Consulta la página del manual |
ssh_server__permit_empty_passwords |
Booleano | Consulta la página del manual |
ssh_server__challenge_response_authentication |
Booleano | Consulta la página del manual |
ssh_server__keyboard_interactive_authentication |
Booleano | Consulta la página del manual |
ssh_server__pubkey_authentication |
Booleano | Consulta la página del manual |
ssh_server__authorized_keys |
Lista de cadenas | Consulta la página del manual: AuthorizedKeysFile |
ssh_server__authorized_keys_system |
Lista de cadenas | Contiene la ruta al archivo de claves autorizadas del sistema global |
ssh_server__authorized_keys_user |
Cadena | Contiene la ruta al archivo de claves autorizadas por usuario |
ssh_server__authorized_keys_command |
Cadena | Consulta la página del manual |
ssh_server__authorized_keys_command_user |
Lista de cadenas | Consulta la página del manual |
ssh_server__permit_blacklisted_keys |
Consulta la página del manual | |
ssh_server__rsa_authentication |
Booleano | Consulta la página del manual |
ssh_server__rhosts_rsa_authentication |
Booleano | Consulta la página del manual |
ssh_server__host_based_authentication |
Booleano | Consulta la página del manual |
ssh_server__host_based_uses_name_from_packet_only |
Booleano | Consulta la página del manual |
ssh_server__ignore_user_known_hosts |
Booleano | Consulta la página del manual |
ssh_server__ignore_rhosts |
Booleano | Consulta la página del manual |
ssh_server__kerberos_authentication |
Booleano | Consulta la página del manual |
ssh_server__kerberos_get_afs_token |
Booleano | Consulta la página del manual |
ssh_server__kerberos_or_local_passwd |
Booleano | Consulta la página del manual |
ssh_server__kerberos_ticket_cleanup |
Booleano | Consulta la página del manual |
ssh_server__kerberos_use_kuserok |
Booleano | Consulta la página del manual |
ssh_server__gssapi_authentication |
Booleano | Consulta la página del manual |
ssh_server__gssapi_key_exchange |
Booleano | Consulta la página del manual |
ssh_server__gssapi_cleanup_credentials |
Booleano | Consulta la página del manual |
ssh_server__gssapi_strict_acceptor_check |
Booleano | Consulta la página del manual |
ssh_server__gssapi_store_credentials_on_rekey |
Booleano | Consulta la página del manual |
ssh_server__gssapi_enable_k5_users |
Booleano | Consulta la página del manual |
ssh_server__deny_users |
Lista de cadenas | Consulta la página del manual |
ssh_server__allow_users |
Lista de cadenas | Consulta la página del manual |
ssh_server__deny_groups |
Lista de cadenas | Consulta la página del manual |
ssh_server__allow_groups |
Lista de cadenas | Consulta la página del manual |
ssh_server__permit_root_login |
Cadena | Consulta la página del manual |
ssh_server__login_grace_time |
Cadena | Consulta la página del manual |
ssh_server__max_auth_tries |
Entero | Consulta la página del manual |
ssh_server__max_sessions |
Entero | Consulta la página del manual |
ssh_server__max_startups |
Diccionario específico | Este diccionario debe tener las claves 'start', 'rate', 'full' (Consulta la página del manual) |
ssh_server__accept_env |
Lista de cadenas | Consulta la página del manual |
ssh_server__permit_user_environment |
Booleano | Consulta la página del manual |
ssh_server__permit_user_rc |
Booleano | Consulta la página del manual |
ssh_server__permit_tty |
Booleano | Consulta la página del manual |
ssh_server__strict_modes |
Booleano | Consulta la página del manual |
ssh_server__version_addendum |
Cadena | Consulta la página del manual |
ssh_server__banner |
Cadena | Consulta la página del manual |
ssh_server__debian_banner |
Booleano | Consulta la página del manual |
ssh_server__print_motd |
Booleano | Consulta la página del manual |
ssh_server__print_last_log |
Booleano | Consulta la página del manual |
ssh_server__force_command |
Cadena | Consulta la página del manual |
ssh_server__chroot_directory |
Cadena | Consulta la página del manual |
ssh_server__client_alive_interval |
Entero | Consulta la página del manual |
ssh_server__client_alive_count_max |
Entero | Consulta la página del manual |
ssh_server__x11_forwarding |
Booleano | Consulta la página del manual |
ssh_server__x11_display_offset |
Entero | Consulta la página del manual |
ssh_server__x11_use_localhost |
Booleano | Consulta la página del manual |
ssh_server__subsystems_global/group/host |
Diccionario | Mapeo del nombre del subsistema y el comando del subsistema |
ssh_server__match_list_global/group/host |
Lista de bloques de coincidencia | Configura bloques de coincidencia (consulta a continuación) |
Coincidencias
Puedes configurar las coincidencias disponibles utilizando las variables ssh_server__match_list_global/group/host
. Estas variables toman una lista de diccionarios. Cada diccionario debe tener la siguiente forma:
ssh_server__match_list_global
- match: "criterios de coincidencia"
options: # opciones que se aplican si "match" coincide
- AllowUsers test # una opción de cadena simple
# un diccionario con opciones condicionadas por la versión
# de acuerdo a la versión actual de sshd, la condición de versión más alta gana y se aplican sus opciones
- 8.2: AuthorizedKeysCommand /bin/true # (versión de cadena)
7.6: # (versión de lista)
- AuthenticationMethods publickey
- AllowUsers root
state: absent # estado opcional (por defecto a presente)
Los criterios de coincidencia disponibles y las opciones que puedes aplicar dependen de tu versión actual de sshd.
Un ejemplo de un grupo que solo está permitido para ejecutar sftp se da, si deseas habilitarlo puedes usar este bloque en el inventario:
ssh_server__match_list_global:
- '{{ ssh_server__match_group_sftponly }}'
Hechos
Por defecto, los hechos locales se instalan y exponen las siguientes variables:
ansible_local.ssh_server:
version_full: '7.9p1'
version_major: '7'
Ejemplo
Playbook
Úsalo en un playbook de la siguiente manera:
- hosts: all
roles:
- turgon37.ssh_server
Inventario
Para usar este rol, crea o actualiza tu playbook según el siguiente ejemplo:
ssh_server__allow_agent_forwarding: false
ssh_server__allow_tcp_forwarding: false
ssh_server__allow_stream_local_forwarding: false
ssh_server__permit_tunnel: false
ssh_server__compression: true
ssh_server__allow_groups:
- ssh
- ssh-admins
ssh_server__permit_root_login: false
ssh_server__max_startups:
start: 5
rate: 80
full: 10
ssh_server__match_list_global:
- match: "LocalAddress 127.0.0.1"
options:
- AuthenticationMethods publickey,password
state: present
- match: "LocalAddress 10.0.0.1 Group ssh-admins"
options:
- AuthenticationMethods publickey password gssapi-with-mic
- match: "LocalAddress 10.0.0.1 User root"
options:
- DenyUsers
- AllowUsers root
- DenyGroups
- AllowGroups root
- 7.0: 'PermitRootLogin prohibit-password'
4.9: 'PermitRootLogin without-password'
- AuthenticationMethods publickey
- AuthorizedKeysFile /root/.ssh/authorized_keys
- AuthorizedKeysCommand /bin/true
ssh_client__known_hosts_additionals:
- '[gitlab]:7999 ssh-rsa XXXXX'
Ejemplo de configuración de FreeIPA
ssh_server__authorized_keys: '/dev/null'
ssh_server__authorized_keys_lookup: true
ssh_server__authorized_keys_lookup_command: /usr/bin/sss_ssh_authorizedkeys
ssh_server__pubkey_authentication: true
ssh_server__gssapi_authentication: true
ansible-galaxy install Turgon37.ssh_server