Aumentando la seguridad de SSH en Linux

Por defecto el acceso remoto utilizando SSH suele ocurrir a través del puerto 22 y permitir la identificación directa como root. Demasiado obvio para cualquier atacante. Sin embargo a la seguridad de los servidores siempre se le puede dar una vuelta de rosca más para intentar que cualquier asaltante desista de su intento, o se convierta en un reto para él. Unos consejos para intentar, no siempre con éxito, desquiciar a malhechores:

  • Cambiar el puerto en /etc/ssh/sshd_config por el 6969 —por ejemplo 😛 :
    Port 11810
  • Cambiar el tiempo de espera en segundos para identificarse —en el mismo archivo— por un valor inferior
    LoginGraceTime 30
  • No permitir acceder directamente como root; para ello se puede utilizar el su root una vez identificado un usuario normal —también en /etc/ssh/sshd_config
    PermitRootLogin no

Estos son básicos. Luego hay mil y un consejos más que pueden llegar a hacer estallar a los administradores cuando estén llenos de nervios intentando resolver algún problema que tiene inutilizado el servidor. De primeras parecen muy útiles pero no siempre serán deseables:

  • Cerrar la sesión de root por inactividad, que si el administrador se despista y se olvida del asunto no pueda luego llegar un pillo en persona y aprovecharse. En /root/.bashrc se añade el tiempo en segundos:
    TMOUT = 300

    aunque si se prefiere que sea para todos los usuarios se puede añadir en /etc/profile:

    readonly TMOUT = 300
  • Limitar las direcciones IP desde las que poder conectarse —si el demonio de SSH tiene soporte para TCP Wrappers— añadiendo al archivo /etc/hosts.deny:
    sshd : ALL

    y a /etc/hosts.allow las direcciones IP autorizadas:

    sshd : IP1,IP2,IP3,IPn
  • Limitar con iptables el número máximo de conexiones por minuto, útil por ejemplo contra los ataques por fuerza bruta para el puerto configurado para SSH (6969):
    iptables -A INPUT -p tcp --dport 6969 -m limit --limit 3/minute -m state --state NEW -j ACCEPT
  • Bloquear el puerto para el primer intento de conexión y aceptar conexiones a continuación en el plazo de un minuto. Práctico para intentar esconder que el puerto está abierto ante escaneos de puertos:
    iptables -A INPUT -p tcp --dport 4587 -m limit --limit 1/minute -m state --state NEW -j DROP

    OJO: esta regla se ha de aplicar antes de la del punto anterior.

Esto ha sido en cuanto a SSH. No obstante hay un montón de reglas más para ipfilter válidas para otros servicios del servidor, ajustes del núcleo, eliminar la consola para usuarios de sistema, etc. Muchas vulnerabilidades que pueden ser detectadas con la herramienta Tiger.

Fuente → Reforzando la instalación de Debian GNU/Linux [esdebian.org].

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *