Icono del sitio Binario 0

Asegurar el acceso SSH deshabilitando el login root y la autenticación por clave pública con Ansible

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

El acceso remoto a servidores a través de SSH es una práctica habitual en la administración de sistemas, pero también representa un vector de ataque común si no se configura adecuadamente. En particular, permitir el inicio de sesión como usuario root o habilitar claves públicas sin una gestión cuidadosa puede comprometer la seguridad del sistema.

Este artículo describe cómo automatizar, mediante Ansible, la desactivación del acceso SSH como root y la autenticación por clave pública, reforzando así la seguridad del servicio SSH. Se incluye un playbook listo para ser utilizado en sistemas Debian/Ubuntu y CentOS/RHEL.

Objetivos

Consideraciones previas

Antes de ejecutar este playbook, asegúrate de:

Playbook de Ansible

---
- name: Deshabilitar login root y claves públicas en SSH
hosts: all
become: yes
tasks:

- name: Detectar distribución
ansible.builtin.setup:
filter: ansible_distribution

- name: Copia de seguridad de sshd_config
ansible.builtin.copy:
src: /etc/ssh/sshd_config
dest: /etc/ssh/sshd_config.bak
remote_src: yes
mode: '0644'

- name: Deshabilitar acceso root
ansible.builtin.lineinfile:
path: /etc/ssh/sshd_config
regexp: '^#?PermitRootLogin'
line: 'PermitRootLogin no'
backup: yes

- name: Deshabilitar autenticación por clave pública
ansible.builtin.lineinfile:
path: /etc/ssh/sshd_config
regexp: '^#?PublicKeyAuthentication'
line: 'PublicKeyAuthentication no'
create: yes
backup: yes

- name: Reiniciar servicio SSH
ansible.builtin.service:
name: "{{ 'ssh' if ansible_distribution in ['Debian', 'Ubuntu'] else 'sshd' }}"
state: restarted

Descripción de tareas

  1. Detección de distribución
    Se utiliza el módulo setup para recopilar información del sistema y detectar la distribución. Esto permite adaptar el nombre del servicio SSH según el sistema operativo.
  2. Copia de seguridad del archivo sshd_config
    Se realiza una copia del archivo actual antes de modificarlo, lo que permite restaurar la configuración original en caso necesario.
  3. Desactivación del login como root
    Se modifica (o crea) la línea PermitRootLogin no para evitar el acceso directo del usuario root vía SSH.
  4. Desactivación de autenticación por clave pública
    Se asegura que la opción PublicKeyAuthentication esté deshabilitada, cerrando el acceso por esta vía incluso si existen claves autorizadas en el sistema.
  5. Reinicio del servicio SSH
    Se reinicia el servicio SSH con el nombre correcto para que los cambios surtan efecto de inmediato.

Conclusión

Este playbook de Ansible proporciona una forma sencilla y reutilizable de aplicar políticas de endurecimiento del servicio SSH en múltiples servidores. Su uso es especialmente recomendable en entornos donde la administración se realiza mediante herramientas de orquestación o en sistemas expuestos a Internet.

Como buena práctica, se recomienda realizar auditorías periódicas de los servicios expuestos, y mantener medidas adicionales como autenticación multifactor (MFA) o VPN para el acceso remoto.

Salir de la versión móvil