Port Knocking: una idea de seguridad a la que ha llegado el momento

Muchas, muchas innovaciones provienen del mundo Linux y Unix. Pocos son más intrigantes para mí que llamar a babor. Como complemento de seguridad global para proteger servicios, tiene muchas ventajas y pocas desventajas. Sin embargo, por una razón u otra, adolece de falta de uso y comprensión. Es posible que muchos administradores hayan oído hablar de él, pero pocos saben cómo implementarlo. Incluso menos lo han usado.

La llamada de puertos funciona con el concepto de que los usuarios que desean conectarse a un servicio de red deben iniciar una secuencia predeterminada de conexiones de puertos o enviar una cadena única de bytes antes de que el cliente remoto pueda conectarse al servicio final. En su forma más básica, el software de cliente del usuario remoto debe conectarse primero a uno o más puertos antes de conectarse al puerto de destino final.

Por ejemplo, suponga que el cliente remoto desea conectarse a un servidor SSH. El administrador configura los requisitos de eliminación de puertos con anticipación, lo que requiere que los clientes remotos se conecten primero a los puertos 3400, 4000 y 9887 antes de conectarse al puerto de destino final, 22. El administrador les dice a todos los clientes legítimos la "combinación" correcta para conectarse ; A los piratas informáticos malintencionados que deseen conectarse al servicio SSH se les negará el acceso sin la combinación. El golpe de puerto frustrará incluso a los entusiastas del escaneo de puertos y el acaparamiento de pancartas.

Dado que se puede utilizar cualquier combinación de puertos y protocolos de transporte, la cantidad de posibles secuencias que un atacante tendría que adivinar es alta. Incluso si el pirata informático supiera que solo hubo tres golpes de puerto involucrados, como en el ejemplo muy simple anterior, con 64,000 posibles puertos TCP, UDP e ICMP (Protocolo de mensajes de control de Internet) para elegir, el conjunto resultante de posibles combinaciones para que el intentar se encuentra con millones. Los escáneres de puertos se sentirán frustrados porque la llamada de puertos usa puertos cerrados para escuchar (más sobre esto a continuación).

La mayor ventaja de todas es que la activación de puertos es independiente de la plataforma, el servicio y la aplicación: cualquier sistema operativo con el software de cliente y servidor correcto puede aprovechar su protección. Aunque la activación de puertos es principalmente una implementación de Linux / Unix, existen herramientas de Windows que pueden hacer lo mismo. Y al igual que IPSec y otros mecanismos de protección, ninguno de los servicios o aplicaciones involucrados tiene que ser consciente de los puertos.

El software de servidor de detección de puertos funciona monitoreando el registro del firewall y buscando conexiones a puertos cerrados, o monitoreando la pila de IP. El primer método requiere que todos los intentos de conexión denegados se escriban rápidamente en un registro del cortafuegos, y el servicio de desactivación de puertos (daemon) supervisa y correlaciona las combinaciones legítimas de desactivación de puertos. Para combinaciones autenticadas de golpeteo, el servicio de servidor de golpe de puerto le dice al firewall que abra el puerto final solicitado solo para el cliente legítimo de golpe de puerto, generalmente rastreado por dirección IP.

Las implementaciones más avanzadas de llamada de puertos funcionan en la pila de IP y escuchan y graban conexiones a puertos cerrados, o usan un mecanismo más sofisticado. Algunas implementaciones buscan una serie específica de bytes dentro del primer intento de conexión. Estos bytes pueden incluso "ocultarse" dentro de un simple ping de solicitud de eco ICMP. Los métodos de negociación de golpe de puerto aún más fuertes implican cifrado o autenticación asimétrica.

Los golpes de puerto también pueden servir como una capa adicional de seguridad para proteger los servicios de administración remota de alto riesgo, como SSH y RDP (Protocolo de escritorio remoto). Desafortunadamente, más de unos pocos troyanos rootkit han utilizado la manipulación de puertos, ya que sus creadores de hackers intentan mantener el control de sus propias creaciones maliciosas.

Los críticos a menudo señalan el hecho de que los piratas informáticos que escuchan a escondidas podrían capturar y reproducir la secuencia o la serie de bytes de llamada de puerto exitosa. Aunque esto podría ser cierto con las implementaciones básicas, los ataques como estos se aplastarían usando métodos de autenticación más sofisticados o se minimizarían usando direcciones IP permitidas codificadas en forma secundaria como envoltorios TCP.

Si un pirata informático logra obtener su combinación, el peor de los casos es que el intruso omita la protección contra golpes de puerto y ahora tenga que enfrentarse a sus medidas de seguridad normales del servicio: solicitud de contraseña de inicio de sesión, etc. Por lo que puedo decir, el uso del golpe de babor solo puede fortalecer cualquier estrategia de defensa en profundidad y no hace nada para dañarla.

Desearía que Windows tuviera mecanismos de llamada de puertos integrados de forma predeterminada. Sería un buen complemento para las implementaciones de Kerberos y IPSec probadas en el mercado de Microsoft. El mundo Linux / Unix tiene una plétora de implementaciones de puertos para elegir, ninguna de las cuales requiere una experiencia increíble para configurar o usar.

Para obtener más información sobre golpes de puerto, visite www.portknocking.org o en.wikipedia.org/wiki/Port_knocking. Para obtener detalles de configuración de un ejemplo de implementación, consulte gentoo-wiki.com/HOWTO_Port_Knocking.

En www.portknocking.org/view/implementations se puede encontrar una excelente colección de software y utilidades de eliminación de puertos, y en www.security.org.sg/code/portknock1 se puede encontrar otro servidor y cliente de eliminación de puertos basado en Windows .html.