stringtranslate.com

Golpe de puerto

En redes informáticas , el port knocking es un método de apertura externa de puertos en un cortafuegos generando un intento de conexión en un conjunto de puertos cerrados preestablecidos. Una vez que se recibe una secuencia correcta de intentos de conexión, las reglas del cortafuegos se modifican dinámicamente para permitir que el host que envió los intentos de conexión se conecte a través de puertos específicos. Existe una variante llamada autorización de paquete único (SPA), donde solo se necesita un único "knock", que consiste en un paquete cifrado . [1] [2] [3] [4]

El objetivo principal del escaneo de puertos es evitar que un atacante escanee un sistema en busca de servicios potencialmente explotables mediante un escaneo de puertos , porque a menos que el atacante envíe la secuencia de escaneo de puertos correcta, los puertos protegidos aparecerán cerrados.

Descripción general

El port knocking se implementa generalmente configurando un demonio para vigilar el archivo de registro del firewall en busca de intentos de conexión a ciertos puntos y luego modificar la configuración del firewall en consecuencia. [5] También se puede realizar en el nivel del kernel (usando un filtro de paquetes a nivel del kernel como iptables [6] ) o por un proceso de espacio de usuario que examina los paquetes en un nivel superior (usando interfaces de captura de paquetes como pcap ), lo que permite el uso de puertos TCP ya "abiertos" para ser utilizados dentro de la secuencia knock.

El "knock" del puerto en sí es similar a un protocolo de enlace secreto y puede consistir en cualquier cantidad de paquetes TCP , UDP o incluso, a veces, ICMP y otros protocolos a puertos numerados en la máquina de destino. La complejidad del knock puede ser cualquier cosa, desde una simple lista ordenada (por ejemplo, puerto TCP 1000, puerto TCP 2000, puerto UDP 3000) hasta un hash cifrado complejo, dependiente del tiempo, basado en la IP de origen y en otros factores.

Un demonio portknock en la máquina del cortafuegos escucha los paquetes en determinados puertos (ya sea a través del registro del cortafuegos o mediante captura de paquetes). El usuario cliente llevaría una utilidad adicional, que podría ser tan simple como netcat o un programa ping modificado o tan complicada como un generador de hash completo, y la usaría antes de intentar conectarse a la máquina de la forma habitual.

La mayoría de los portknocks son sistemas con estado en el sentido de que si la primera parte del "knock" se ha recibido correctamente, una segunda parte incorrecta no permitiría al usuario remoto continuar y, de hecho, no le daría ninguna pista sobre hasta qué punto de la secuencia falló. Por lo general, la única indicación de falla es que, al final de la secuencia de knock, el puerto que se esperaba que estuviera abierto no se abre. No se envían paquetes al usuario remoto en ningún momento.

Si bien esta técnica para proteger el acceso a demonios de redes remotas no ha sido ampliamente adoptada por la comunidad de seguridad, se ha utilizado activamente en muchos rootkits incluso antes del año 2000. [ cita requerida ]

Beneficios

Para vencer la protección contra el ataque de puerto se necesitan ataques de fuerza bruta a gran escala para descubrir incluso secuencias simples. Un ataque de fuerza bruta anónimo contra una secuencia TCP de tres ataques (por ejemplo, puerto 1000, 2000, 3000) requeriría que un atacante probara cada combinación de tres puertos en el rango 1-65535 y luego escaneara cada puerto entre ataques para descubrir cualquier cambio en el acceso al puerto en el sistema de destino. Dado que el ataque de puerto es, por definición, con estado, el puerto solicitado no se abriría hasta que se hubiera recibido la secuencia de números de tres puertos correcta en el orden correcto y sin recibir ningún otro paquete intermedio de la fuente. El escenario de caso promedio requiere aproximadamente 141 billones (65535 3  / 2) de paquetes para determinar un número de tres puertos correcto. Esta técnica, en combinación con la limitación de intentos de ataque, secuencias más largas o complejas y hashes criptográficos, hace que los intentos de acceso al puerto exitosos sean extremadamente difíciles.

Una vez que se proporciona la secuencia de llamada de puerto correcta para abrir un puerto , las reglas del firewall generalmente solo abren el puerto a la dirección IP que proporcionó la llamada correcta, lo que agrega una funcionalidad dinámica al comportamiento del firewall. En lugar de utilizar una lista blanca de IP estática preconfigurada en el firewall, un usuario autorizado ubicado en cualquier parte del mundo podría abrir cualquier puerto necesario sin la asistencia del administrador del servidor. El sistema también podría configurarse para permitir que el usuario autenticado cierre manualmente el puerto una vez que finalice la sesión o que se cierre automáticamente utilizando un mecanismo de tiempo de espera. Para establecer una nueva sesión, se requeriría que el usuario remoto se vuelva a autenticar utilizando la secuencia correcta.

El comportamiento con estado del ataque de puertos permite que varios usuarios de diferentes direcciones IP de origen se encuentren en distintos niveles de autenticación de ataque de puertos simultáneamente, lo que permite que un usuario legítimo con la secuencia de ataque correcta atraviese el firewall mientras el firewall mismo está en medio de un ataque de puertos desde múltiples direcciones IP (suponiendo que el ancho de banda del firewall no se haya consumido por completo). Desde cualquier otra dirección IP atacante, los puertos del firewall seguirán pareciendo cerrados.

El uso de hashes criptográficos dentro de la secuencia de golpe de puerto defiende contra el rastreo de paquetes entre las máquinas de origen y destino, evitando el descubrimiento de la secuencia de golpe de puerto o el uso de la información para crear ataques de reproducción de tráfico para repetir secuencias de golpe de puerto anteriores.

El ataque a puertos se utiliza como parte de una estrategia de defensa en profundidad. Incluso si el atacante lograra acceder al puerto, otros mecanismos de seguridad del puerto seguirían en funcionamiento, junto con los mecanismos de autenticación de servicios asignados en los puertos abiertos.

La implementación de la técnica es sencilla, ya que se utiliza como mínimo un script de shell en el servidor y un archivo por lotes de Windows o una utilidad de línea de comandos en el cliente. La sobrecarga tanto en el servidor como en el cliente en términos de tráfico, consumo de CPU y memoria es mínima. Los daemons de descifrado de puertos no son complejos de codificar y la carga de auditoría es baja.

Un sistema de acceso por puerto implementado en servicios autenticados con contraseña, como SSH, evita el problema de los ataques de fuerza bruta a las contraseñas en los inicios de sesión. En el caso de SSH, el demonio SSH no se activa sin el acceso por puerto correcto, y el ataque se filtra mediante la pila TCP/IP en lugar de utilizar los recursos de autenticación SSH. Para el atacante, el demonio es inaccesible hasta que se proporciona el acceso por puerto correcto.

Consideraciones de seguridad

El acceso a puertos es un complemento del sistema flexible y personalizable. Si el administrador decide vincular una secuencia de acceso a puertos a una actividad como la ejecución de un script de shell, se pueden incorporar fácilmente al script otros cambios, como la implementación de reglas de firewall adicionales para abrir puertos para direcciones IP específicas. Las sesiones simultáneas se pueden adaptar fácilmente.

Al utilizar estrategias como la longitud dinámica y el grupo de longitudes, la probabilidad de piratear secuencias de detonación se puede reducir a casi cero. [7]

Además de mitigar los ataques de fuerza bruta contra contraseñas y el inevitable crecimiento de los registros asociados con el demonio de proceso, el port knocking también protege contra la explotación de vulnerabilidades de protocolo. Si se descubre una explotación que pueda comprometer un demonio en su configuración predeterminada, el uso de port knocking en el puerto de escucha reduce la posibilidad de compromiso hasta que se actualice el software o el proceso. Los usuarios autorizados seguirían recibiendo el servicio una vez que proporcionen la secuencia de knock correcta, mientras que los intentos de acceso aleatorio se ignorarían.

El ataque de puertos solo debe considerarse como parte de una estrategia general de defensa de la red que brinda protección contra ataques aleatorios y dirigidos, no como una solución independiente completa.

Los profesionales de seguridad de redes han ignorado en gran medida el port knocking como solución en el pasado, ya que las primeras implementaciones dependían únicamente de proporcionar las combinaciones de puertos correctas para lograr el acceso. Los sistemas de port knocking modernos incorporan características como hashes criptográficos seguros, listas negras , listas blancas y respuestas dinámicas a ataques para aumentar aún más la capacidad del sistema. El port knocking es un medio eficaz para maximizar los recursos del servidor en redes que dan a Internet. [ cita requerida ]

La implementación correcta de un sistema de desbloqueo de puertos no reduce la seguridad general del sistema. Es una medida eficaz que proporciona una capa adicional de seguridad con una sobrecarga mínima de los recursos del servidor. En el peor de los casos, sistemas como el de desbloqueo de puertos introducen nuevos problemas de seguridad debido a una implementación deficiente o exponen actitudes ambivalentes de la administración a través de situaciones como la compensación de riesgos . [ cita requerida ]

Desventajas

El desbloqueo de puertos depende totalmente de la solidez del demonio de desbloqueo de puertos. La falla del demonio negará el acceso al puerto a todos los usuarios y, desde una perspectiva de usabilidad y seguridad, este es un punto único de falla indeseable . Las implementaciones modernas de desbloqueo de puertos mitigan este problema al proporcionar un demonio de monitoreo de procesos que reiniciará un proceso de demonio de desbloqueo de puertos fallido o estancado.

Los sistemas que no utilizan hashes criptográficos son vulnerables a ataques de suplantación de direcciones IP . Estos ataques, una forma de denegación de servicio , utilizan la funcionalidad de bloqueo de puertos para bloquear direcciones IP conocidas (por ejemplo, estaciones de administración de administradores) mediante el envío de paquetes con la dirección IP suplantada a puertos aleatorios. Los servidores que utilizan direcciones estáticas son especialmente vulnerables a este tipo de denegaciones de servicio, ya que sus direcciones son bien conocidas.

El port knocking puede ser problemático en redes que presentan una alta latencia. El port knocking depende de que los paquetes lleguen en la secuencia correcta para acceder a su funcionalidad diseñada. TCP/IP, por otro lado, está diseñado para funcionar ensamblando paquetes desordenados en un mensaje coherente. En estas situaciones, la única solución es que el cliente continúe reenviando la secuencia correcta de paquetes de manera periódica hasta que el servidor reconozca la secuencia.

El port knocking no puede utilizarse como único mecanismo de autenticación para un servidor. Desde una perspectiva de seguridad, el port knocking simple se basa en la seguridad a través de la oscuridad ; la publicación no intencionada de la secuencia de knock infiere la vulneración de todos los dispositivos que admiten la secuencia. Además, el port knocking sin cifrar es vulnerable al rastreo de paquetes. Un rastro de red de longitud adecuada puede detectar la secuencia de knock correcta desde una única dirección IP y, por lo tanto, proporcionar un mecanismo para el acceso no autorizado a un servidor y, por extensión, a la red conectada. Una vez comprometidos, los archivos de registro del dispositivo son una fuente de otras secuencias de knock válidas, lo que revela otro punto de fallo. Soluciones como tratar cada secuencia de knock como una contraseña de un solo uso frustran el objetivo de una administración simplificada. En la práctica, el port knocking debe combinarse con otras formas de autenticación que no sean vulnerables a la repetición o a ataques de intermediario para que todo el sistema sea eficaz.

Referencias

  1. ^ Michael Rash (2004) Combinación de Port Knocking y huellas dactilares pasivas del sistema operativo con fwknop
  2. ^ Michael Rash (2006). Autorización de paquete único con Fwknop.
  3. ^ Michael Rash (2007). Protección de servidores SSH con autorización de paquete único.
  4. ^ Moxie Marlinspike (2009). Uso de Knockknock para la autorización de paquetes individuales.
  5. ^ "PortKnocking - Wiki de ayuda de la comunidad". help.ubuntu.com . Consultado el 8 de julio de 2023 .
  6. ^ Justin Ellingwood (17 de enero de 2014). "Cómo configurar el acceso a puertos utilizando solo Iptables en un VPS de Ubuntu". digitalocean.com . Consultado el 24 de abril de 2016 .
  7. ^ Shiraz, Muhammad; Boroumand, Laleh; Gani, Abdullah; Khan, Suleman (29 de octubre de 2019). "Un marco de autenticación mejorado de puerto para computación en la nube móvil". Revista Malaya de Ciencias de la Computación . 32 (4): 269–283. doi : 10.22452/mjcs.vol32no4.2 . ISSN  0127-9084.

Enlaces externos