He tenido una larga conversación con un cliente donde realizan un exploración de seguridad Rapid7 que luego advierte sobre la falta de suma de comprobación de TCP MD5 en el puerto 80. Esto es lo que creo que sé:
- RFC 2385 fue diseñado para proteger BGP y, por extensión, protocolos de tipo BGP (es decir, conexiones TCP de larga ejecución).
- BGP usa conexiones TCP de larga duración, HTTP no.
- El cifrado / IPSec ha reemplazado a RFC 2385 para proteger BGP.
- El ataque TCP RST es contra las conexiones TCP de larga ejecución porque el ataque depende de la probabilidad.
- El impacto en el restablecimiento de una conexión HTTP mantenida en vivo es que la próxima solicitud se reiniciará.
- La mayoría de las conexiones transfieren datos en milisegundos, la ventana de ataque es demasiado pequeña para que HTTP pueda dirigirse efectivamente. El ataque depende del tamaño de la ventana y el ancho de banda del atacante contra el servidor y parece tardar unos segundos incluso en buenas condiciones, según la página 25 de Deslizándose en la ventana: ataques de restablecimiento de TCP )
- Una vista web suele estar formada por múltiples conexiones para cada cliente conectado, lo que hace que este tipo de denegación de servicio no sea atractivo en comparación con las alternativas.
- Linux (específicamente RHEL o Debian) tiene soporte para rfc2385 pero no puede ser global habilitado.
- Ni NGINX ni Apache tienen opciones de configuración para abrir sockets con tcp-md5-checksums habilitados.
- Incluso si rfc2385 estaba activo para HTTP, no resolvería un problema, pero aumentaría la carga en el servidor. Lo cual es solo un punto secundario menor.
He intentado explicar que rfc2385 no es relevante para los servidores web, pero dicen que es un problema con TCP que, si bien es cierto, simplifica que es un ataque contra una naturaleza específica de la Conexión TCP.
He recurrido a explicar que ni Apache ni nginx pueden habilitar lo que piden. Me siguen enviando documentos de la base de conocimientos que mencionan Windows, Cisco, NetBSD, BGP, pero nunca nada relacionado con apache ni nginx.
Más allá de los documentos vinculados, los he enviado LWN explicándolos:
Sería difícil usar esta técnica para apagar un servidor web; Para empezar, las conexiones HTTP suelen ser de corta duración.
Hay un parche disponible en Windows que corrige la advertencia que están enviando como una sugerencia, pero claramente no logra nada para Linux.
¿Estoy hablando sin sentido? ¿Cuál sería su sugerencia de que el cliente que tiene el cumplimiento de seguridad se preocupe por estar en la misma página que yo?