5 mejores prácticas para asegurar y proteger el servidor SSH


SSH (Secure Shell) es un protocolo de red de código abierto que se utiliza para conectar servidores Linux locales o remotos para transferir archivos, realizar copias de seguridad remotas, ejecución remota de comandos y otras tareas relacionadas con la red a través de scp o sftp entre dos servidores que se conectan en un canal seguro a través de la red.

En este artículo, le mostraré algunas herramientas y trucos simples que le ayudarán a reforzar la seguridad de su servidor ssh. Aquí encontrará información útil sobre cómo proteger y prevenir ataques de diccionario y fuerza bruta al servidor ssh.

1. DenyHosts

DenyHosts es un script de seguridad de prevención de intrusiones basado en registros de código abierto para servidores SSH que fue escrito en lenguaje de programación Python que fue diseñado para ser ejecutado por administradores de sistemas Linux y usuarios para monitorear y analizar los registros de acceso al servidor SSH en busca de intentos fallidos de inicio de sesión, conocidos como ataques basados en diccionarios y brutales. ataques de fuerza. El script funciona prohibiendo las direcciones IP después de un número determinado de intentos fallidos de inicio de sesión y también evita que tales ataques obtengan acceso al servidor.

  1. Realiza un seguimiento de/var/log/secure para encontrar todos los intentos de inicio de sesión exitosos y fallidos y los filtra.
  2. Vigila todos los intentos fallidos de inicio de sesión por parte del usuario y del host infractor.
  3. Vigila a cada usuario existente y no existente (por ejemplo, xyz) cuando se intenta un inicio de sesión fallido.
  4. Realiza un seguimiento de cada usuario infractor, host e intentos de inicio de sesión sospechosos (si el número de errores de inicio de sesión) prohíbe esa dirección IP del host agregando una entrada en el archivo /etc/hosts.deny.
  5. Opcionalmente envía notificaciones por correo electrónico de hosts recientemente bloqueados e inicios de sesión sospechosos.
  6. También mantiene todos los intentos fallidos de inicio de sesión de usuario válidos y no válidos en archivos separados, para que sea más fácil identificar qué usuario válido o no válido está bajo ataque. Entonces, podemos eliminar esa cuenta o cambiar la contraseña o deshabilitar el shell para ese usuario.

Leer más: Instale DenyHosts para bloquear ataques al servidor SSH en RHEL/CentOS/Fedora

2. Fail2Ban

Fail2ban es uno de los marcos de detección/prevención de intrusiones de código abierto más populares escrito en lenguaje de programación Python. Funciona escaneando archivos de registro como/var/log/secure, /var/log/auth.log,/var/log/pwdfail, etc. en busca de demasiados intentos fallidos de inicio de sesión. Fail2ban se utiliza para actualizar Netfilter/iptables o el archivo hosts.deny de TCP Wrapper, para rechazar la dirección IP de un atacante durante un período de tiempo determinado. También tiene la capacidad de desbloquear una dirección IP bloqueada durante un cierto período de tiempo establecido por los administradores. Sin embargo, unos minutos de unban es más suficiente para detener este tipo de ataques maliciosos.

  1. Multi-hilo y altamente configurable.
  2. Soporte para la rotación de archivos de registro y puede manejar múltiples servicios como (sshd, vsftpd, apache, etc.).
  3. Supervisa los archivos de registro y busca patrones conocidos y desconocidos.
  4. Utiliza la tabla Netfilter/Iptables y TCP Wrapper (/etc/hosts.deny) para prohibir la IP de los atacantes.
  5. Ejecuta secuencias de comandos cuando se ha identificado un patrón determinado para la misma dirección IP durante más de X veces.

Leer más: Instale Fail2ban para prevenir ataques al servidor SSH en RHEL/CentOS/Fedora

3. Deshabilitar el inicio de sesión de root

De forma predeterminada, los sistemas Linux están configurados para permitir inicios de sesión remotos ssh para todos, incluido el usuario root, lo que permite que todos inicien sesión directamente en el sistema y obtengan acceso root. A pesar de que el servidor ssh permite una forma más segura de deshabilitar o habilitar los inicios de sesión de root, siempre es una buena idea deshabilitar el acceso de root, manteniendo los servidores un poco más seguros.

Hay tantas personas que intentan forzar las cuentas de root a través de ataques SSH simplemente proporcionando diferentes nombres de cuenta y contraseñas, uno tras otro. Si es administrador del sistema, puede consultar los registros del servidor ssh, donde encontrará el número de intentos fallidos de inicio de sesión. La razón principal detrás del número de intentos fallidos de inicio de sesión es tener contraseñas lo suficientemente débiles y eso tiene sentido para que los piratas informáticos/atacantes lo intenten.

Si tiene contraseñas seguras, probablemente esté seguro; sin embargo, es mejor deshabilitar el inicio de sesión de root y tener una cuenta separada regular para iniciar sesión, y luego usar sudo o su para obtener acceso de root cuando sea necesario.

Leer más: Cómo deshabilitar el inicio de sesión SSH root y limitar el acceso SSH

4. Mostrar banner SSH

Esta es una de las funciones más antiguas disponibles desde el principio del proyecto ssh, pero casi no he visto que nadie la utilice. De todos modos, siento que es una característica importante y muy útil que he usado para todos mis servidores Linux.

Esto no es por ningún propósito de seguridad, pero el mayor beneficio de este banner es que se usa para mostrar mensajes de advertencia ssh al acceso autorizado por la ONU y mensajes de bienvenida a los usuarios autorizados antes de que se solicite la contraseña y después de que el usuario haya iniciado sesión.

Leer más: Cómo mostrar mensajes de banner SSH y MOTD

5. Inicio de sesión sin contraseña SSH

Un inicio de sesión sin contraseña SSH con SSH keygen establecerá una relación de confianza entre dos servidores Linux, lo que facilitará la transferencia y sincronización de archivos. Esto es muy útil si se trata de copias de seguridad automáticas remotas, ejecución remota de scripts, transferencia de archivos, administración remota de scripts, etc.sin ingresar contraseña cada vez.

Leer más: Cómo configurar el inicio de sesión sin contraseña SSH