Port Knocking: El gran olvidado
El pasado día 18 y día 20, parte de nuestro equipo de ACONSA estuvo por el I.E.S Gran Capitán de Córdoba en unas jornadas tecnológicas llamadas «Sysmana2013«.
En estas jornadas se le dió un repaso a varios campos de la informática y por supuesto, nosotros expusimos el tema del Hacking Ético.
Casi al finalizar el taller de Hacking Ético el día 20, los alumnos asistentes, formularon diversas dudas y preguntas sobre la temática tratada. Y tras entrar en la ya típica «paranoia» de la seguridad, salió el tema del Port Knocking como una solución muy aceptable para evitar conexiones no deseadas.
Es poco conocido, pero eso no quita que sea de lo más efectivo e interesante.
En este artículo vamos a explicar a «grosso modo» de qué trata este sistema y cómo funciona.
El port knocking, que significa de forma literal «golpeo de puertos» es una técnica que se usa para evitar accesos a no deseados. Es decir, esta técnica mantiene cerrado un determinado puerto que nosotros configuremos y únicamente será abierto usando una secuencia de llamada al firewall usando uno ó más puertos.
Por ejemplo, tenemos configurado Port Knocking para que cuando se haga una llamada al puerto 21, 541, 145 y otra vez el 21, se inicie un servicio abriendo el puerto 3389 el cual está completamente cerrado porque el servicio en ese instante no está «levantado» pero que con esta secuencia de «golpeo» a estos puertos, se «levanta».
Esta opción de seguridad añade un filtro más de seguridad a nuestra red. En definitiva, mantiene todos los puertos cerrados, y únicamente se abren bajo la correcta secuencia de golpeo a los puertos que nosotros queramos.
Cabe destacar que el usuario que permitamos el acceso debe tener un cliente de Port Knocking, para poder interactuar con el servidor Port Knocking instalado en nuestra red. Una vez completado el proceso de llamada, el puerto se abrirá pudiendo conectarnos por ejemplo al Escritorio Remoto.
Como herramientas Port Knocking tenemos knockd, es liviana pero es de las primerísimas utilidades para esta función y tiene sus contras. Por ejemplo, la pérdida de un sólo paquete en la comunicación con el destino puede originar que la secuencia no se marque correctamente, dando como errónea la secuencia.
Otro punto negativo es que la secuencia de llamada a los puertos puede ser «esnifada» por un alma maligna. Por tanto, capturada la secuencia que abre un determinado puerto, esta capa adicional de seguridad que hemos agregado se cae por completo.
Pero para solucionar estos contras de knockcd tenemos la herramienta FWKNOP. De nueva generación, implementa Single Packet Authorization, que es una técnica de Port Knocking de único paquete. En resumidas cuentas, la secuencia de «golpeo» (llamada o clave) va cifrado en un único paquete. Así se evita que de ser capturado el paquete sea misión casi imposible descifrarlo y que de perder un paquete no marque como error la secuencia de llamada.
Una función especialmente interesante que aporta FWKNOP es la opción de poder incluir dentro del paquete único cifrado la dirección IP de origen. Esto evita por ejemplo, que se sea víctima de un ataque Man-in-the-Middle.
Página del proyecto de FWKNOP: http://www.cipherdyne.org/fwknop/
Saludos knock knock!