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 lo 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 estaba destinado a ser ejecutado por administradores de sistemas Linux y usuarios para monitorear y analizar los registros de acceso al servidor SSH para intentos fallidos de inicio de sesión, conocidos como ataques basados u200bu200ben 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. Keeps track of /var/log/secure to find all successful and failed login attempts and filters them.
  2. Keeps eye on all failed login attempts by user and offending host.
  3. Keeps watch on each existing and non-existent user (eg. xyz) when a failed login attempts.
  4. Keeps track of each offending user, host and suspicious login attempts (If number of login failures) bans that host IP address by adding an entry in /etc/hosts.deny file.
  5. Optionally sends an email notifications of newly blocked hosts and suspicious logins.
  6. Also maintains all valid and invalid failed user login attempts in separate files, so that it makes easy for identifying which valid or invalid user is under attack. So, that we can delete that account or change password or disable shell for that user.

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 estos ataques maliciosos.

  1. Multi-threaded and Highly configurable.
  2. Support for log files rotation and can handle multiple services like (sshd, vsftpd, apache, etc).
  3. Monitors log files and looks for known and unknown patterns.
  4. Uses Netfilter/Iptables and TCP Wrapper (/etc/hosts.deny) table to ban attackers IP.
  5. Runs scripts when a given pattern has been identified for the same IP address for more than X times.

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 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, creo 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 la solicitud de 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