Deshabilitar el Inicio de Sesión SSH del Usuario Root 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

En muchos entornos de producción y seguridad, se considera una buena práctica deshabilitar el inicio de sesión remoto del usuario root mediante SSH. Esto ayuda a mitigar ataques automatizados de fuerza bruta y mejora la trazabilidad de accesos, forzando a los administradores a usar usuarios nominales con privilegios elevados mediante sudo.

Este artículo describe cómo automatizar esta tarea mediante Ansible, utilizando un playbook que detecta la distribución del sistema, realiza una copia de seguridad del archivo de configuración de SSH, modifica el parámetro PermitRootLogin, y reinicia el servicio SSH de manera segura.

Objetivo

Modificar de forma automatizada el archivo /etc/ssh/sshd_config en múltiples sistemas Linux (Debian, Ubuntu, CentOS, RHEL), para establecer:

PermitRootLogin no

Con ello, se desactiva el acceso SSH directo como root, sin afectar al acceso mediante otros usuarios con privilegios.

Descripción del Playbook

Este playbook de Ansible realiza las siguientes acciones:

  1. Detectar la distribución del sistema operativo
    Usamos el módulo setup para obtener la variable ansible_distribution, que nos permitirá elegir el nombre correcto del servicio SSH (puede variar entre ssh y sshd).
  2. Hacer una copia de seguridad de la configuración actual de SSH
    Esto proporciona una vía de recuperación en caso de error.
  3. Modificar el parámetro PermitRootLogin
    Se asegura de que esté establecido como no, eliminando comentarios si existen.
  4. Reiniciar el servicio SSH
    Aplica los cambios, seleccionando dinámicamente el nombre correcto del servicio según la distribución.

Playbook de Ansible

---
- name: Deshabilitar login root en SSH
hosts: all
become: yes
tasks:

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

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

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

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

Consideraciones de Seguridad

  • Antes de aplicar este cambio en entornos productivos, asegúrate de que existan cuentas de usuario alternativas con acceso SSH y privilegios de sudo.
  • Si el acceso remoto se pierde, podrías requerir acceso físico o consola remota para restaurar la configuración.

Conclusión

Automatizar la desactivación del acceso root vía SSH es una medida efectiva para mejorar la seguridad de los sistemas Linux. Con Ansible, esta tarea se puede aplicar de forma rápida, coherente y segura en múltiples servidores.

Compartir:

Binario 0
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.