TCP Port Knocking!

Port Knocking (PK) es una forma bastante ingeniosa y cuestionablemente segura de establecer una comunicación entre dos hosts mediante puertos cerrados. Tambien puede decirse que es una forma de “seguridad por oscuridad” pero yo particularmente no comparto esa visión.

Imaginen esta situación: Queremos acceder a un lugar que tiene 65536 puertas en su fachada. Golpeamos una puerta para nos abran y poder entrar pero no recibimos respuesta. Lo mismo ocurre con cualquier puerta que golpée. Del lado de adentro hay un conserje con instrucciones precisas que le indican que:

“Vas a abrir la puerta número 22 unicamente si alguien golpea primero las puertas 12865, 53271, 14780, 6912, 37312 y 43976″

El conserje se queda todo el dia prestando atención a que puertas golpea la gente que quiere ingresar y en que secuencia lo hace. Solo abre la puerta 22 si alguién previamente toca en la 12865, 53271, 14780,…etc. Simplemente ignora a todas las personas que no toquen en estas puertas en la secuencia correcta.

La técnica de PortKnocking consiste exactamente en el ejemplo anterior pero en lugar de edificio tenemos un host, en lugar de puertas tenemos puertos tcp y en lugar de conserje hay un daemon escuchando los SYN enviados para iniciar una coneccion tcp encargado de manejar un firewall. Cuando estos SYN llegan a los puertos indicados, que el cliente deberia conocer de antemano, el daemon se encarga de bajar el firewall que previamente bloqueaba todas las entradas.

Este método no reemplaza ningún otro mecanismo de autentificación pero puede servir para confundir un poco más a los posibles atacantes. La implementación no podria ser más simple. Basta con un programa que vigile los logs del firewall y en el momento que detecte la combinación correcta de tcp SYNs crea una regla para permitir el paso a un determinado puerto desde la IP que origino la secuencia de SYNs. Del lado del cliente alcanza con un script que, armado de un programa tipo nc, automatice la secuencia de intentos de conexiones al host destino. Tiempo atras, en mis epocas de BOFH, habia hecho una implementacion en PERL muy minimalista que espero poder encontrar y compartirla acá.

Existen muchas implementaciones dando vueltas por internet, algunas más avanzadas que otras, pero todas mantienen la misma filosofía. Más información en www.portknocking.org

1 Comentario »

RSS feed de los comentarios de este post. TrackBack URI

  1. muy bueno! :D
    para debian está el paquete knockd que es bastante sencillo

    Comentado por Sherekan ARGENTINA Windows XP Mozilla Firefox 2.0.0.14 — 13/05/2008 #

Comentar

Captcha
Enter the letters you see above.

Entradas y comentarios feeds. 19 queries. 0.372 seconds.

60921 pages viewed, 16 today
29270 visits, 11 today
FireStats icon Powered by FireStats