l3d.sshd

Ansible Galaxy Licencia MIT

Servidor OpenSSH

Rol de Ansible para configurar el Servidor OpenSSH SSHD. El objetivo principal de este rol es gestionar el archivo sshd.conf y algunas partes adicionales, como desplegar las claves de host SSH definidas en la ruta configurada.

Consejo Profesional

Usa criptografía de curva elíptica para tus claves SSH:

ssh-keygen -t ed25519

Los valores predeterminados de este rol solo permitirán claves ed25519. Pero puedes cambiarlos, por supuesto, si lo deseas.

Uso previsto

Este rol está diseñado para gestionar hosts Linux con los siguientes roles. Este rol se centra principalmente en una buena configuración de sshd y puede definir qué usuarios pueden conectarse a través de SSH y qué tipos de claves SSH están permitidos. Otros roles distribuyen claves públicas SSH, crean usuarios y configuran permisos sudo, despliegan archivos de configuración o instalan una serie de paquetes útiles.

Una lista de roles sugeridos para gestionar tu host Linux:

Bueno saber:

Los roles listados utilizan las mismas variables para crear cuentas, administradores, etc. Pero los roles deben ejecutarse en el orden correcto para funcionar adecuadamente. Por ejemplo, no puedes desplegar una clave pública SSH para un usuario que no ha sido creado.

Algunas variables explicadas

Recuerda: Echa un vistazo a defaults/main.yml para todas las variables posibles.

  • Puerto SSH
    El puerto de OpenSSH está definido con la variable sshd__port: 22. Cambia esto si lo deseas.

  • Usuarios y Grupos Permitidos
    Los usuarios predeterminados que pueden iniciar sesión provienen de la lista users: {}.
    La misma variable users: {} se utiliza en otros roles SSH recomendados.
    Un ejemplo para permitir el inicio de sesión para los usuarios y grupos llamados l3d y ottojo es:

users:
  l3d:
    - l3d
  ottojo:
   - ottojo@uni
   - ottojo@home
  • Inicio de sesión SSH a través de contraseña
    La autenticación por contraseña SSH está configurada en falso mediante sshd__password_authentication: false. Esto no permitirá que uses tu contraseña para iniciar sesión a través de SSH.

  • Gestionar Tipos de Claves SSH
    Por defecto, este rol configura qué tipos de claves SSH están permitidos para iniciar sesión. Si no deseas definir eso, cambia la variable sshd__manage_key_types: true.

  • Definir tipos de claves SSH permitidas
    Los tipos de claves SSH permitidos se definen con esta lista. Algunos de ellos están comentados.
    Ten en cuenta que por defecto solo se permiten claves ed25519. Mantén esto en mente si estás utilizando una clave RSA.

  sshd__key_types:
  - 'ed25519'
  # - 'rsa'
  # - 'ecdsa'
  # - 'dsa' # (¡no usar!)
  • Configuraciones Avanzadas de Algoritmos SSH
    También puedes definir los algoritmos de clave y Kex utilizados aquí. Para los valores predeterminados y algunos ejemplos para las variables sshd__key_algorithmus y sshd__kex_algorithmus, consulta defaults/main.yml. Puedes desactivarlo estableciendo sshd__manage_key_algorithmus y sshd__manage_kex_algorithmus en false.

  • Forzar nuevas características de SSH
    Si sabes que utilizas una versión de SSH >8, puedes definirlo opcionalmente con true/false con la variable sshd__version_is_above_eight.

Archivos

La tarea principal de este rol es configurar el archivo sshd.conf.

Referencias

Pruebas

Este rol se prueba con algunas pruebas de linting. Lamentablemente, no sé cómo ejecutar este rol en un contenedor Docker porque se involucra systemd... Si tienes ideas para mejorar las pruebas, por favor mándame un mensaje, abre un problema o una solicitud de extracción. Si deseas saber más sobre nuestras pruebas, echa un vistazo al mercado de GitHub.

estado de prueba Mercado de GitHub
Liberación de Galaxy publicar-rol-ansible-en-galaxy
Yamllint GitHub Actions yamllint-github-action
Chequeo de Ansible Lint acción-ansible-lint
Acerca del proyecto

Manage your SSH Server - and deploy a good sshd configuration

Instalar
ansible-galaxy install l3d.sshd
Licencia
mit
Descargas
60.2k
Propietario
Ansible roles provide a framework for fully independent, or interdependent collections of variables,tasks,files,templates &modules. Here we maintain some. enjoy