Seguridad por oscuridad: números de puertos

En SVT Cloud además de ofrecer nuestros servicios de Cloud y Security, queremos compartir con vosotros a través de este blog algunas de nuestras experiencias y de paso escribir entradas que os puedan resultar de interés a la hora de defenderos de ciertas amenazas o posibles atacantes; en este post veremos cómo aplicar seguridad por oscuridad a través del uso de números de puertos NO habituales para los servicios de red que necesitemos publicar.

Pondremos como ejemplo un servidor donde necesitamos publicar un servidor SSH que nos permita conectarnos a él de forma remota. Daremos por hecho que la configuración aplicada es la que se establece por defecto, que por desgracia es lo más habitual en estos casos. Es decir, un servicio SSH preparado para recibir coneciones a través del puerto TCP/22.

Pero, ¿por qué usar siempre el puerto por defecto? Quizás porque es lo más cómodo, en primer lugar porque no hay modificar ningún fichero de configuración y en segundo lugar porque así recuerdo fácilmente el puerto al que hay que conectarse.

Como siempre suele ocurrir en estos casos, la seguridad y la productividad / rentabilidad chocan entre sí obligando a decidir qué es lo más idóneo. Teniendo en cuenta que los cambios a realizar son mínimos y que se hacen en cuestión de minutos, creo que merece la pena realizarlos para ganar un plus en la seguridad de nuestro servidor. No es la solución final para una seguridad 100% (que por cierto no existe), pero sí es un obstáculo más para un posible atacante.

Veamos un ejemplo práctico (sobre una máquina Kali).

En primer lugar iniciamos nuestro servidor SSH de la siguiente forma:

/etc/init.d/ssh start

Veamos ahora, una vez iniciado el servicio, en qué puerto está escuchando:

netstat -ant

Podemos observar que es el puerto TCP/22 el que está a la escucha. Pero y qué ocurriría si hacemos un escaneo de puertos con la herramienta más famosa para ello, Nmap (el parámetro -sV es para descubrimiento de servicio y versión).

nmap -sV localhost

No le ha costado mucho esfuerzo a Nmap descubrir el servicio y no sólo eso, también la versión exacta del mismo. Esto ocurre porque por defecto y si no se le especifica lo contrario, Nmap escanea los 1000 puertos más usados y obviamente entre ellos está el puerto TCP/22. Probemos a ocultar esta información, ya que este tipo de información puede ser muy útil para un posible atacante.

Vamos a probar a cambiarlo al número 2222, fácil de recordar y distinto al puerto por defecto. Para ello tendremos que editar el fichero /etc/ssh/sshd_config y modificar la siguiente línea:

Port 22

Cambiando el número de puerto…

Port 2222

Guardamos los cambios realizados y reiniciamos el servicio SSH:

/etc/init.d/ssh restart

Ahora volvemos a realizar el scan por defecto de Nmap:

nmap -sV localhost

Vaya! Parece que no ha servido de mucho ya que Nmap, dentro de esos 1000 puertos, contempla el TCP/22. Probemos con un número superior a 10000, por ejemplo 10022. Realizamos el cambio en el fichero /etc/ssh/sshd_config:

Reiniciamos el servicio SSH y volvemos a pasar el scan por defecto de Nmap:

Perfecto! Parece ser que Nmap por defecto no escanea ese puerto.

Repito que no es la solución definitiva a nuestra seguridad del servicio, pero al menos complicaremos el descubrimiento de puertos, servicios y posibles vulnerabilidades de éstos.

En próximas entradas del blog segurimos viendo cómo blindar nuestros servicios publicados e intentar acercarnos lo máximo posible a ese (inalcanzable) sistema 100% seguro.

Espero que haya sido de vuestro agrado, hasta la próxima!

Miguel Ángel Arroyo

Leave a Reply

You must be logged in to post a comment.