28 de octubre de 2009

Port Knocking. Golpeo de puertos

¿Qué es port knocking?

El golpeo de puertos ó "port knocking" consiste en abrir puertos externamente en un firewall mediante varios intentos de conexión a los puertos que estén cerrados. Cuando el firewall recibe una secuencia de conexión correcta, modifica sus reglas y permite que el cliente se conecte al puerto que estaba "golpeando".

Para llevar a cabo el golpeo de puertos, el cliente debe ejectuar una aplicación que lleve a cabo el golpeo antes de acceder al servidor de manera normal. En el servidor, donde está el firewall, un demonio escucha los paquetes que le llegan. El demonio intercepta los intentos de conexión y los decodifica para verificar un golpeo auténtico. El servidor realiza tareas específicas basadas en el golpeo de puertos, como abrir otros puertos para el cliente.

¿Para qué sirve?

Principalmente se usa para prevenir un escaneo de puertos por parte de un atacante que busca puertos abiertos y servicios vulnerables. Como los puertos aparentan cerrados, el atacante “no pierde su tiempo” haciendo un escaneo profundo.

El golpeo de puertos fortalece un servidor que tenga clientes que requieren acceso a él para manejar datos que no pasen por servicios públicos como SMTP o HTTP.

¿Cómo funciona?





 Paso 1 El cliente a no puede conectarse a la aplicación que escucha en el puerto n. El cliente b no puede conectarse a ningún puerto.







Paso 2 Los clientes 1,2,3 y 4 se conectan a algunos puertos en una secuencia que contiene mensajes encriptados por mandar paquetes SYN. Los clientes conocían, antes de hacer el golpeo de puertos, el demonio de golpeo de puertos y su configuración pero no reciben ACK en esta fase porque las reglas del firewall hacen imposible toda respuesta.








Paso 3 El proceso del servidor A (un demonio de golpeo de puertas) intercepta conexiones y las interpreta (decripta y decodifica) hasta obtener un golpeo de puerta autentico. El servidor lleva a cabo la tarea programada basado en el contenido del golpeo de puerta; en este ejemplo, abre el puerto n.















Paso 4 El cliente A se conecta al puerto n.





No hay comentarios:

Publicar un comentario