Cómo mejorar la seguridad de SSH: guía de configuración

Cómo mejorar la seguridad de SSH: guía de configuración


Amigos, en esta ocación les explicaré como podemos mejorar la seguridad del protocolo SSH, una definición de SSH se puede encontrar en Wikipedia.

SSH™ (o Secure SHell) es un protocolo que facilita las comunicaciones seguras entre dos sistemas usando una arquitectura cliente/servidor y que permite a los usuarios conectarse a un host remotamente. A diferencia de otros protocolos de comunicación remota tales como FTP o Telnet, SSH encripta la sesión de conexión, haciendo imposible que alguien pueda obtener contraseñas no encriptadas. Por defecto se utiliza el puerto 22

https://es.wikipedia.org/wiki/Secure_Shell

Las siguientes configuraciones nos permitirán mejorar la seguridad de SSH

# nano /etc/ssh/sshd_config
  • Protocol 2
  • LoginGraceTime 30
  • PermitRootLogin no
  • StrictModes yes
  • AllowUsers gcadmin
  • MaxAuthTries 3
# /etc/init.d/ssh restart

Ahora explicaré que significan estas configuraciones:

Protocol

Existen 2 versiones de SSH, la versión 1 de SSH está en desuso y es suceptible a varias vulnerabilidades de seguridad. La versión 2 de SSH previene las vulnerabilidades de la versión 1. Por eso es preferible usar la versión 2.

LoginGraceTime

LoginGraceTime establece la cantidad de segundos que en la pantalla se esperará la introducción del usuario y contraseña, para la configuración propuesta, la pantalla esperará por 30 segundos.


PermitRootLogin

PermitRootLogin define si el usuraio root del servidor puede iniciar sesión por SSH, para prevenir ataques de fuerza bruta lo recomendable es establecer el valor como “no“.

StrictModes

Esta configuración define si se deben comprobar los permisos en el directorio home del usuario.

AllowUsers

Con esta configuración se define que usuarios se pueden conectar al servidor por SSH.

MaxAuthTries

MaxAuthTries indica la cantidad de veces que un usuario puede equivocarse al introducir su usuario y contraseña. Para la configuración propuesta después del tercer intento fallido se perderá la conexión por SSH.

Ocultar OpenSSH VersionBanner

El problema se presenta porque el servidor SSH muestra información de la versión de la compilación y la versión del sistema operativo.

En las versiones actuales de ubuntu 18.04 de no se puede modificar este parámetro por el archivo de configuración, se necesita cambiar desde la versión de compilación o como se verá a continuación se puede modificar el archivo binario de SSH.

Primero se realiza la comprovación de versión actual del servidor SSH:

# echo"Hello" | nc localhost 22

La respuesta obtenida será similar a esto:

SSH-2.0-OpenSSH_7.6p1Ubuntu-4
Protocol mismatch.

Para modificar estos datos se requieren utilizar hexedit y strings, para instalar estos programas se deben ejecutar los siguientes comandos:

# apt-get install hexedit
# apt install binutils

Luego de instalar hexedit, es recomendable generar un backup de la configuracion actual antes de modificar el archivo

# cp /usr/sbin/sshd /tmp/sshd.back
# cp /usr/sbin/sshd /tmp/sshd.new

Con el comando string se puede verificar si el binario de ssh muestra información del sistema operativo:

# strings/tmp/sshd.new | grep Ubuntu

OpenSSH_7.6p1 Ubuntu-4ubuntu0

Con el comando hexedit se modifica la informacion almacenada.

  • Presionar TAB para cambiar entre los datos HEXADECIMALES a los datos ASCII area
  • Usar CTRL+S para buscar un texto, por ejemplo ‘OpenSSH_7.6’

Se mostrará algo similar a:

 

Usar los cursores para posicionar sobre el caracter que se modificará. Presionar la tecla TAB para regresar al área HEXADECIMAL, escribir ’00’ para cambiar el texto ASSCII:

Grabar los cambios con CTRL+X y Y

Con el comando string nuevamente se puede verificar si el binario de ssh muestra información del sistema operativo:

Despues de es necesario reemplazar el archivo modificado y se reinicia el servicio:

# rm /usr/sbin/sshd
# cp /tmp/sshd.new /usr/sbin/sshd
# systemctl restart ssh.service

Finalmente se comprueba la versión del servidor SSH.

# echo "Hello" | nc localhost 22

Referencias:

https://kram.nz/2018/01/hide-openssh-version-banner/

 


Guido Cutipa

Si la información de este post te ha sido de utilidad, por favor compártelo en tus redes sociales. Si tienes alguna consulta acerca de este tema o de otro que sea de tu interés, por favor déjalo en los comentarios. No lo olvides, publico un artículo nuevo cada semana.

Deja un comentario

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar