Golpeo de puertos

El golpeo de puertos (del inglés port knocking) es un mecanismo para abrir puertos externamente en un firewall mediante una secuencia preestablecida de intentos de conexión a puertos que se encuentran cerrados. Una vez que el firewall recibe una secuencia de conexión correcta, sus reglas son modificadas para permitir al host que realizó los intentos conectarse a un puerto específico.

El propósito principal del golpeo de puertos es prevenir un escanéo de puertos por parte de un atacante que busca posibles servicios vulnerables. Como los mismos solo se abren ante un golpeo de puertos correcto. Normalmente los puertos donde se brindan los servicios se muestran aparentemente cerrados.

Por lo general este mecanismo se implementa configurando un servicio para que revise la bitácora o log del firewall para detectar esta secuencia de intentos de conexión. Otra forma es tener un proceso examinando paquetes con alguna interfaz de captura de paquetes, pero esto tiene que hacerse en puertos TCP que se encuentren "abiertos".

El mayor uso del golpeo de puertos, es para determinar acceso al puerto 22, el puerto del Secure Shell (SSH). El golpeo en cuestión es similar a un handshake secreto. La complejidad del mismo puede variar desde una simple lista ordenada de intentos de conexión a puertos TCP, UDP, ICMP u otro protocolo; hasta un hash basado en la dirección origen, tiempo y otros factores, el cual determinará cuáles serán los puertos a golpear.

Para la implementación, la idea es que el cliente tenga una aplicación que ejecute el golpeo antes de acceder al servidor de manera normal. Un servicio se encuentra escuchando en la máquina donde está el firewall los paquetes que llegan a la misma. El utilitario del cliente, responsable de realizar el golpeo de los puertos puede ser desde un sencillo programa que ejecute comandos de ping, hasta un complejo programa generador de un hash.

Generalmente no hay ninguna indicación cuando un usuario ejecuta una secuencia errónea de PK. Simplemente el puerto que se esperaba estuviese abierto al final de la secuencia, no lo está. Ningún paquete es enviado al usuario en ningún momento.

A pesar de que esta técnica no ha sido ampliamente adoptada por la comunidad, ha sido integrada en los rootkits más recientes.

Cómo funciona en teoría

  1. El cliente no puede conectarse a una aplicación que se encuentra escuchando en el puerto n.
  2. El cliente intenta conectarse a un conjunto predefinido de puertos en secuencia, enviando ciertos paquetes. El cliente tiene conocimiento previo del servicio de golpeo de puertos y su configuración, pero no recibe ninguna respuesta durante esta fase ya que las reglas del firewall no lo permiten.
  3. El servicio de port knocking 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.
  4. El cliente se conecta al puerto n recientemente abierto.
Other Languages
čeština: Port knocking
Deutsch: Portknocking
English: Port knocking
français: Port knocking
italiano: Port knocking
Türkçe: Port knocking