skriptfabrik.sshd
Rol de Ansible: sshd
Descripción
Este rol proporciona configuraciones seguras para el cliente SSH y el servidor SSH. Está diseñado para ser compatible con la Base de referencia SSH de DevSec.
El rol es una bifurcación de arillso.sshd.
Instalación
ansible-galaxy collection install community.crypto
ansible-galaxy install skriptfabrik.sshd
Requisitos
Ninguno
Variables del Rol
ssh_ipv6_enable
verdadero si se necesita IPv6
ssh_ipv6_enable: '{{ network_ipv6_enable | default(false) }}' # sshd + ssh
ssh_server_enabled
verdadero si el sshd debe ser iniciado y habilitado
ssh_server_enabled: true # sshd
ssh_use_dns
verdadero si se necesita resolver nombres DNS, por defecto es falso desde la versión 6.8, ver: http://www.openssh.com/txt/release-6.8
ssh_use_dns: false # sshd
ssh_compression
verdadero o valor si se necesita compresión
ssh_compression: false # sshd
ssh_hardening
Para qué componentes (cliente y servidor) generar la configuración. Puede ser útil cuando se ejecuta en un cliente sin un servidor SSH.
ssh_client_hardening: true # ssh
ssh_server_hardening: true # sshd
ssh_client_password_login
Si es verdadero, se permite el inicio de sesión por contraseña
ssh_client_password_login: false # ssh
ssh_server_password_login: false # sshd
ssh_server_ports
puertos en los que el servidor SSH debería escuchar
ssh_server_ports: ['22'] # sshd
ssh_client_port
puerto al que el cliente SSH debería conectarse
ssh_client_port: '22' # ssh
ssh_listen_to
una o más direcciones IP, a las que el servidor SSH debería escuchar. Por defecto está vacío, pero debe configurarse por razones de seguridad.
ssh_listen_to: ['0.0.0.0'] # sshd
ssh_host_key_files
Claves de host que se buscan al iniciar sshd.
ssh_host_key_files: [] # sshd
# - path: "{{ sshd_config_path }}/ssh_host_rsa_key"
# private_key: |
# xxxxxxxxxxxxx
# xxxxxxxxxxxxx
# xxxxxxxxxxxxx
# public_key: |
# xxxxxxxxxxxxx
# xxxxxxxxxxxxx
# xxxxxxxxxxxxx
# size: 8192
# type: rsa
ssh_force_create_host_key_files
Forzar la creación de archivos de claves de host.
ssh_force_create_host_key_files: false # sshd
ssh_max_auth_retries
Especifica el número máximo de intentos de autenticación permitidos por conexión. Una vez que el número de fallos alcanza la mitad de este valor, los fallos adicionales se registran.
ssh_max_auth_retries: 2
ssh_client_alive_interval
ssh_client_alive_interval: 300 # sshd
ssh_client_alive_count
ssh_client_alive_count: 3 # sshd
ssh_permit_tunnel
Permitir túneles SSH
ssh_permit_tunnel: false
ssh_remote_hosts
Hosts con opciones personalizadas. # ssh
ssh_remote_hosts: []
# Ejemplo
ssh_remote_hosts:
- names: ['example.com', 'example2.com']
options: ['Port 2222', 'ForwardAgent yes']
- names: ['example3.com']
options: ['StrictHostKeyChecking no']
ssh_allow_root_with_key
Establece esto en "without-password" o "yes" para permitir el inicio de sesión como root
ssh_allow_root_with_key: 'no' # sshd
ssh_allow_tcp_forwarding
falso para deshabilitar el reenvío TCP. Establecer en verdadero para permitir el reenvío TCP.
ssh_allow_tcp_forwarding: false # sshd
ssh_gateway_ports
falso para deshabilitar el enlace de puertos reenviados a direcciones que no sean de bucle inverso. Establecer en verdadero para forzar el enlace en la dirección comodín.
Establecer en 'clientspecified' para permitir que el cliente especifique a qué dirección enlazar.
ssh_gateway_ports: false # sshd
ssh_allow_agent_forwarding
falso para deshabilitar el reenvío de agente. Establecer en verdadero para permitir el reenvío de agente.
ssh_allow_agent_forwarding: false # sshd
ssh_pam_support
verdadero si SSH tiene soporte PAM
ssh_pam_support: true
ssh_use_pam
falso para deshabilitar la autenticación PAM.
ssh_use_pam: false # sshd
ssh_google_auth
falso para deshabilitar la autenticación de dos factores de Google
ssh_google_auth: false # sshd
ssh_pam_device
falso para deshabilitar la entrada de dispositivo 2FA PAM
ssh_pam_device: false # sshd
ssh_gssapi_support
verdadero si SSH soporta GSSAPI
ssh_gssapi_support: false
ssh_kerberos_support
verdadero si SSH soporta Kerberos
ssh_kerberos_support: true
ssh_deny_users
si se especifica, no se permite el inicio de sesión para los nombres de usuario que coincidan con uno de los patrones.
ssh_deny_users: '' # sshd
ssh_allow_users
si se especifica, se permite el inicio de sesión solo para los nombres de usuario que coincidan con uno de los patrones.
ssh_allow_users: '' # sshd
ssh_deny_groups
si se especifica, no se permite el inicio de sesión para los usuarios cuyo grupo primario o lista de grupos suplementarios coincida con uno de los patrones.
ssh_deny_groups: '' # sshd
ssh_allow_groups
si se especifica, se permite el inicio de sesión solo para los usuarios cuyo grupo primario o lista de grupos suplementarios coincida con uno de los patrones.
ssh_allow_groups: '' # sshd
ssh_authorized_keys_file
cambiar el archivo predeterminado que contiene las claves públicas que se pueden usar para la autenticación del usuario.
ssh_authorized_keys_file: '' # sshd
ssh_trusted_user_ca_keys_file
especifica el archivo que contiene las claves públicas de autoridades de certificación de confianza utilizadas para firmar certificados de usuario.
ssh_trusted_user_ca_keys_file: '' # sshd
ssh_trusted_user_ca_keys
establecer las claves públicas de autoridades de certificación de confianza utilizadas para firmar certificados de usuario.
ssh_trusted_user_ca_keys: [] # sshd
Ejemplo
ssh_trusted_user_ca_keys:
- 'ssh-rsa ... comentario1'
- 'ssh-rsa ... comentario2'
ssh_authorized_principals_file
especifica el archivo que contiene los principios que están permitidos. Solo se utiliza si se establece ssh_trusted_user_ca_keys_file.
ssh_authorized_principals_file: '' # sshd
Ejemplo
ssh_authorized_principals_file: '/etc/ssh/auth_principals/%u'
%h se reemplaza por el directorio home del usuario que se está autenticando, y %u se reemplaza por el nombre de usuario de ese usuario. Después de la expansión, la ruta se considera una ruta absoluta o relativa al directorio home del usuario.
ssh_authorized_principals
lista de hashes que contienen rutas de archivos y principios autorizados. Solo se utiliza si se establece ssh_authorized_principals_file.
ssh_authorized_principals: [] # sshd
Ejemplo
ssh_authorized_principals:
- {
path: '/etc/ssh/auth_principals/root',
principals: ['root'],
owner: '{{ ssh_owner }}',
group: '{{ ssh_group }}',
directoryowner: '{{ ssh_owner }}',
directorygroup: '{{ ssh_group}}',
}
- {
path: '/etc/ssh/auth_principals/myuser',
principals: ['masteradmin', 'webserver'],
}
ssh_print_motd
falso para deshabilitar la impresión del mensaje del día (MOTD)
ssh_print_motd: false # sshd
ssh_print_last_log
falso para deshabilitar la visualización de la información del último inicio de sesión
ssh_print_last_log: false # sshd
ssh_banner
falso para deshabilitar la visualización de /etc/ssh/banner.txt antes de que se permita la autenticación
ssh_banner: false # sshd
ssh_print_debian_banner
falso para deshabilitar la fuga de la versión de distribución durante el saludo inicial del protocolo
ssh_print_debian_banner: false # sshd (solo para la familia de sistemas operativos Debian)
ssh_sftp_enabled
verdadero para habilitar la configuración sftp
ssh_sftp_enabled: '{{ sftp_enabled | default(false) }}'
ssh_sftp_chroot
falso para deshabilitar el chroot de sftp
ssh_sftp_chroot: '{{ sftp_chroot | default(true) }}'
ssh_sftp_chroot_dir
cambiar la ubicación de chroot predeterminada para sftp
ssh_sftp_chroot_dir: "{{ sftp_chroot_dir | default('/home/%u') }}"
Si es verdadero, se permite el inicio de sesión por contraseña para SFTP
ssh_server_sftp_password_login: false
ssh_server_sftp_password_login: true
ssh_client_roaming
habilitar el roaming experimental del cliente
ssh_client_roaming: false
ssh_server_match_user
lista de hashes (que contienen usuario y reglas) para generar bloques de coincidencia de usuario.
ssh_server_match_user: false # sshd
ssh_server_match_group
lista de hashes (que contienen grupo y reglas) para generar bloques de coincidencia de grupo.
ssh_server_match_group: false # sshd
ssh_server_match_address
lista de hashes (que contienen direcciones/subredes y reglas) para generar bloques de coincidencia de dirección.
ssh_server_match_address: false # sshd
ssh_server_permit_environment_vars
ssh_server_permit_environment_vars: false
ssh_max_startups
número máximo de conexiones no autenticadas concurrentes al demonio SSH
ssh_max_startups: '10:30:100' # sshd
ssh_ps53
ssh_ps53: 'yes'
ssh_ps59
ssh_ps59: 'sandbox'
ssh_macs
ssh_macs: []
ssh_ciphers
ssh_ciphers: []
ssh_kex
ssh_kex: []
ssh_macs_53_default
ssh_macs_53_default:
- hmac-ripemd160
- hmac-sha1
ssh_macs_59_default
ssh_macs_59_default:
- hmac-sha2-512
- hmac-sha2-256
- hmac-ripemd160
ssh_macs_66_default
ssh_macs_66_default:
- [email protected]
- [email protected]
- [email protected]
- hmac-sha2-512
- hmac-sha2-256
ssh_macs_76_default
ssh_macs_76_default:
- [email protected]
- [email protected]
- [email protected]
- hmac-sha2-512
- hmac-sha2-256
ssh_ciphers_53_default
ssh_ciphers_53_default:
- aes256-ctr
- aes192-ctr
- aes128-ctr
ssh_ciphers_66_default
ssh_ciphers_66_default:
- [email protected]
- [email protected]
- [email protected]
- aes256-ctr
- aes192-ctr
- aes128-ctr
ssh_kex_59_default
ssh_kex_59_default:
- diffie-hellman-group-exchange-sha256
ssh_kex_66_default
ssh_kex_66_default:
- [email protected]
- diffie-hellman-group-exchange-sha256
ssh_custom_selinux_dir
directorio donde almacenar la política de ssh_password
ssh_custom_selinux_dir: '/etc/selinux/local-policies'
sshd_moduli_file: '/etc/ssh/moduli'
sshd_moduli_minimum: 2048
ssh_challengeresponseauthentication
deshabilitar ChallengeResponseAuthentication
ssh_challengeresponseauthentication: false
ssh_server_revoked_keys
una lista de claves públicas que nunca son aceptadas por el servidor ssh
ssh_server_revoked_keys: []
ssh_hardening_enabled
Establecer en falso para convertir el rol en un no-op. Útil al usar el mecanismo de dependencia del rol de Ansible.
ssh_hardening_enabled: true
ssh_custom_options
Opciones personalizadas para el archivo de configuración del cliente SSH
ssh_custom_options: []
sshd_custom_options
Opciones personalizadas para el archivo de configuración del demonio SSH
sshd_custom_options: []
Dependencias
Ninguna
Ejemplo de Playbook
- hosts: all
roles:
- skriptfabrik.sshd
Autor
Licencia
Este proyecto está bajo la Licencia MIT.
Copyright
(c) 2022, skriptfabrik GmbH
This role provides secure ssh-client and ssh-server configurations. It is intended to be compliant with the DevSec SSH Baseline.
ansible-galaxy install skriptfabrik.sshd