Turgon37.ssh_server

Rol de Ansible para servidor SSH

=========

Estado de Construcción Licencia Rol de Ansible

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
Acerca del proyecto

This role configure SSH server

Instalar
ansible-galaxy install Turgon37.ssh_server
Licencia
mit
Descargas
1.3k
Propietario
Ingénieur, Informaticien, curieux de nouvelles technologies. Passionné par le libre et l'esprit de communauté