TCP frente a la resistencia de UDP a DDoS

3

Estoy creando un servicio que puedo implementar igualmente bien con TCP o UDP. Si uso TCP, expongo la vulnerabilidad a la inundación SYN y otros ataques en el protocolo TCP. Si uso UDP, será más difícil bloquear la inundación de UDP en sentido ascendente sin bloquear también mi tráfico legítimo. ¿Hay una opción clara aquí? Me inclino por UDP porque los ataques de ancho de banda afectan a otros en la red, por lo que espero que se vuelvan cada vez más difíciles, por ejemplo, con menos tolerancia para la falsificación de direcciones y menos servicios disponibles para amplificar el tráfico.

    
pregunta user1055568 05.10.2015 - 19:14
fuente

3 respuestas

5

Al elegir TCP y UDP, debe mirar más allá de la simple seguridad. Sin saber los detalles de lo que estás tratando de diseñar, es imposible hacer una recomendación de qué protocolo utilizar.

Considere estos hechos básicos.

  • TCP requiere un protocolo de enlace de 3 vías para configurar la conexión, lo que evita muchos ataques de suplantación de identidad basados en la dirección IP.

  • TCP puede usar una conexión SSL si alguna vez necesitó agregar cifrado.

  • UDP requiere menos recursos en el extremo del servidor para realizar un seguimiento de
    zócalos.

respondido por el Steve Sether 05.10.2015 - 19:36
fuente
1

La elección de UDP frente a TCP depende de su caso de uso y del tipo de DDos. Para los DDos simples que consumen ancho de banda, no importa mucho porque si el ataque usa todo el ancho de banda, no habrá más tráfico para su aplicación, sin importar si se basa en UDP o TCP. UDP puede tener una ligera ventaja en este caso porque UDP por sí solo no necesita varios paquetes para el establecimiento de una conexión (pero su protocolo de aplicación puede necesitarlo).

Si le preocupa más los ataques que consumen recursos en el sistema (como la inundación SYN o simplemente mantener abiertas muchas conexiones), el UDP puede verse mejor al principio, ya que no usa tantos recursos en el sistema como TCP. Pero si su aplicación necesita una idea de conexión, confiabilidad y transferencia de datos ordenada, terminará implementando todas las cosas buenas que TCP ya tiene dentro de su aplicación. Y allí probablemente ocuparán más recursos que las implementaciones optimizadas dentro del kernel del sistema operativo, lo que significa que terminará siendo más afectado por DDos que si simplemente usara TCP.

Además, al usar tecnologías establecidas en lugar de hacer su propio manejo de red a nivel de aplicación, puede usar las soluciones Anti-DDos existentes. Con su propio protocolo especial, en su lugar, también tendría que inventar su propia solución especial Anti-DDos.

  

Estoy creando un servicio que puedo implementar igualmente bien con TCP o UDP.

Si puede implementar el mismo servicio con la misma confiabilidad en UDP y TCP y su implementación UDP usaría menos recursos del sistema que la implementación TCP (es decir, los recursos de espacio de usuario y kernel combinados), entonces podría opte por UDP porque usar menos recursos es una buena idea cuando se enfrenta a DDos.

    
respondido por el Steffen Ullrich 05.10.2015 - 20:03
fuente
0

Creo que estás pensando demasiado. Usted está jodido cuando se trata de DDOS, ya sea que elija UDP o TCP. Si no tiene un dispositivo o servicio anti-DDOS que detenga la inundación antes de que llegue a su servicio, no hay nada que pueda hacer aparte de dejar caer paquetes localmente. No especificó los requisitos de su aplicación, lo que me lleva a proporcionar una respuesta genérica:

  • Si su aplicación no requiere comunicaciones largas y usted está dispuestos a perder paquetes usan UDP. El cliente envía la solicitud, usted responde y está listo (por ejemplo, chargen). Menos gastos generales agregados por apretones de manos innecesarios.
  • Si necesita intercambiar información de sesión y necesita confiabilidad, vaya para TCP (por ejemplo, HTTP).

No hay una talla única para todos. Incluso las soluciones que le di no son lo suficientemente genéricas: podría usar UDP para comunicarse utilizando HTTP (¿por qué no?).

Lo que sugeriría es elegir tu veneno: TCP o UDP y luego usar un firewall para limitar la cantidad de solicitudes de sincronización usando el límite: enlace .

Existe una técnica llamada cookies SYN para evitar este tipo de problemas que puede habilitar en Linux: enlace

Aún así, como dije, si no tiene un dispositivo externo que se hunda en el tráfico DDOS (agujero negro) o su ISP / proveedor de servicios que evita la inundación, ni siquiera se preocupe por proteger la aplicación / máquina por su cuenta. Probablemente protegerá su aplicación para que no se bloquee si deja caer paquetes, pero no podrá atender ninguna solicitud, que es la esencia de la DDOS (Denegación de Servicio Distribuida).

Mantente seguro;)

    
respondido por el BrunoMCBraga 05.10.2015 - 22:04
fuente

Lea otras preguntas en las etiquetas