Suscríbase al feed

Red Hat Ansible Automation Platform es una plataforma que permite implementar la automatización en toda la empresa, lo cual la convierte en la herramienta ideal para las auditorías de seguridad. La seguridad tiene muchas capas, pero este artículo se centra en disminuir los ataques SSH en los hosts gestionados. Si bien no se pueden eliminar todos los riesgos de seguridad, es posible fortalecer los hosts gestionados para reducir algunos de ellos (especialmente los ataques de fuerza bruta) y reducir otros (permitiendo las conexiones SSH solo desde hosts autorizados, aplicando sudo, etc.). En este artículo se usa Ansible Automation Platform, pero la mayor parte de la configuración del fortalecimiento se lleva a cabo en los hosts gestionados (edición de sshd_config, sssd.conf, access.conf) para que pueda aplicar estos conceptos con otras herramientas de configuración concentradas, como Red Hat Satellite.

En este artículo se explica la manera de fortalecer la configuración de sus hosts gestionados con este esquema:

  • Varias cuentas de servicio para el inicio de sesión con SSH en los hosts, creadas en AD/LDAP:
    • Se almacena la clave pública en AD/LDAP para el inicio de sesión con SSH mediante la autenticación de clave pública.
    • Se almacena la contraseña en AD/LDAP solo para sudo (no para el inicio de sesión con SSH).
  • En los hosts gestionados:
    • La cuenta de servicio solo puede iniciar sesión desde los nodos de ejecución de Ansible Automation Platform (se rechaza cualquier intento de iniciar sesión desde cualquier otro lugar).
    • El aumento de privilegios con sudo para cualquier cuenta de servicio requiere una contraseña.
hardening-ssh-connections-with-ansible-img1-es

Configuración

Comience con una implementación estándar no reforzada, que generalmente incluye:

  • Una cuenta de servicio de Ansible Automation Platform
    • Que se usa para iniciar sesión con SSH en los hosts
    • Que se creó en AD/LDAP con una contraseña aleatoria
  • En cualquier host:
    • Inicio de sesión de la cuenta de servicio con la contraseña
    • Inicio de sesión con sudo de la cuenta de servicio sin usar la contraseña

Fortalecimiento de la configuración

Muchas empresas crean solo una cuenta de servicio para cada servicio. En el caso de Ansible Automation Platform, solo se crea una cuenta de servicio que se usa con la plataforma para conectarse a todos los hosts gestionados. Sin embargo, si por algún motivo esta cuenta de servicio se ve comprometida, el atacante podría acceder a cualquier host gestionado.

Este es lo primero que debe cambiar. La seguridad se lleva a cabo en capas, por lo que es fundamental crear diferentes cuentas de servicios. No hay una estrategia universal para esta implementación, así que debe revisar su arquitectura y decidir cuál es la adecuada para su infraestructura. Estas son algunas estrategias comunes para crear diferentes cuentas de servicio:

  • Ubicación o centro de datos: cree una cuenta de servicio para cada centro de datos.
  • Empresa o dominio: cree una cuenta de servicio para cada empresa o dominio.
  • Sistema operativo: cree una cuenta de servicio para cada tipo de host (Red Hat Enterprise Linux 7, 8, 9, etc.).
  • Uso: cree una cuenta de servicio para cada uso de host de la aplicación principal (base de datos, Apache, Kafka).
  • Seguridad: cree una cuenta de servicio para cada zona de seguridad (DMZ, zona interna 1, etc.).

Cree un grupo común para todas las cuentas de servicio para que sea más sencillo permitir el acceso a una cuenta de servicio mientras rechaza el acceso a todas las demás.

Autenticación de la clave pública SSH mediante AD/LDAP

Debe basar la autenticación con SSH para las cuentas de servicio en las claves públicas. Si bien estas últimas tienen algunas desventajas con respecto a las contraseñas, al utilizarlas los ataques de fuerza bruta para el inicio de sesión con SSH pierden efectividad.

Primero, agregue las claves SSH públicas de cada cuenta de servicio al atributo altSecurityIdentities en AD/LDAP.

En cada host gestionado, agregue ssh a la lista de servicios en /etc/sssd/sssd.conf:

services = nss, pam, ssh

Agregue los parámetros ldap_user_extra_attrs y ldap_user_ssh_public_key a la sección [domain] de /etc/sssd/sssd.conf:

[domain/example.com]
ldap_user_extra_attrs = altSecurityIdentities
ldap_user_ssh_public_key = altSecurityIdentities

La opción AuthorizedKeysCommandUser especifica la cuenta de usuario que se utiliza para ejecutar el comando AuthorizedKeysCommand. Se recomienda usar un usuario exclusivo para ello, así que agregue estos parámetros de SSH a /etc/ssh/sshd_config:

AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody

Para obtener más información, consulte Store User SSH Keys in Active Directory for SSH Authentication en el Portal de clientes Red Hat.

Denegación de la autenticación con contraseña

Agregue estos parámetros de SSH a /etc/ssh/sshd_config en todos los hosts gestionados para denegar el uso de la autenticación por contraseña con SSH (<Service Account> remplace por el nombre real de la cuenta de servicio):

Match User <Service Account>
PasswordAuthentication no
Match all

Solicitud de contraseña para sudo

Para sudo, solicite la contraseña de la cuenta de servicio. Para hacerlo, cree un nuevo archivo con el nombre del grupo de cuentas de servicio en /etc/sudoers.d y agregue esta línea:

%<Service Account Group>   ALL=(ALL:ALL) ALL

Por ejemplo, si el nombre del grupo es aapsas:

$ cat /etc/sudoers.d/aapsas
%appsas   ALL=(ALL:ALL) ALL

Si bien las prácticas de seguridad recomiendan agregar solo algunos comandos permitidos específicos para ejecutar sudo, esto no es posible con Ansible Automation Platform. En el caso de los hosts gestionados, Ansible Automation Platform se comunica con las máquinas de destino (por lo general mediante SSH) y copia y ejecuta un script de Python.

Conexiones desde nodos de ejecución de Ansible Automation Platform autorizados

El objetivo de la configuración del fortalecimiento final es permitir las conexiones SSH para una cuenta de servicio que provenga solo de nodos de ejecución de Ansible Automation Platform o LOCAL (para sudo). Para implementarla, agregue una línea en /etc/security/access.conf. La primera línea permite las conexiones desde Ansible Automation Platform y LOCAL, mientras que la otra prohíbe cualquier otra cuenta de servicio.

+: <Service Account> : <AAP Execution Nodes IPS> LOCAL
-: <Service Account Group> : ALL

Automatización de toda la configuración

En este artículo, se indicaron los pasos que debe seguir para fortalecer los hosts gestionados en el inicio de sesión con SSH. Sin embargo, como usamos Ansible Automation Platform, no es necesario que haga todo de forma manual. Todos los pasos de configuración se pueden automatizar con el módulo de plantillas de manera sencilla. Cree plantillas para los archivos de configuración /etc/security/access.conf, /etc/sssd/sssd.conf y /etc/ssh/sshd_config.

Está cambiando los parámetros de seguridad de la conexión de su host de destino, ¡así que tenga cuidado! Un error en la configuración podría hacer que falle el servicio sshd, o que se otorgue acceso a usuarios que no lo necesitan, etc. Vuelva a revisar su trabajo antes de propagar los cambios.

Desde luego, no se logra una seguridad sólida en un solo paso. Fortalecer la configuración de SSH para los hosts gestionados es un paso importante en un proceso permanente, y es más sencillo hacerlo con Ansible Automation Platform.


Sobre el autor

Alberto Gonzalez de Dios is a Senior Cloud consultant: Automation and OpenShift specialist. He joined Red Hat in 2018, and he is certified in Azure, AWS and Red Hat (Red Hat Certified Architect Level II).

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

Navegar por canal

automation icon

Automatización

Las últimas novedades en la automatización de la TI para los equipos, la tecnología y los entornos

AI icon

Inteligencia artificial

Descubra las actualizaciones en las plataformas que permiten a los clientes ejecutar cargas de trabajo de inteligecia artificial en cualquier lugar

open hybrid cloud icon

Nube híbrida abierta

Vea como construimos un futuro flexible con la nube híbrida

security icon

Seguridad

Vea las últimas novedades sobre cómo reducimos los riesgos en entornos y tecnologías

edge icon

Edge computing

Conozca las actualizaciones en las plataformas que simplifican las operaciones en el edge

Infrastructure icon

Infraestructura

Vea las últimas novedades sobre la plataforma Linux empresarial líder en el mundo

application development icon

Aplicaciones

Conozca nuestras soluciones para abordar los desafíos más complejos de las aplicaciones

Original series icon

Programas originales

Vea historias divertidas de creadores y líderes en tecnología empresarial