Proteger contra la renegociación DoS iniciada por el cliente en OpenSSL / Python

1

Según enlace , servidores admitir conexiones SSL / TLS y permitir renegociaciones iniciadas por el cliente son ataques DoS susceptibles por parte de un cliente que continuamente renegocia la conexión ssl. Pude lograr que la CPU gire a aproximadamente el 15% con este script "exploit" que escribí:

(while [ 1 -eq 1 ]; do echo R; sleep 0.01; done) | openssl s_client -cert agent.crt -key agent.key -connect 192.168.110.100:4959

De todos modos, ¿cómo deshabilito las renegociaciones iniciadas por el cliente para OpenSSL (que estoy usando a través de la biblioteca openssl de Python)?

    
pregunta caleb 26.02.2016 - 16:57
fuente

1 respuesta

2

No hay una forma sencilla de deshabilitar las renegociaciones iniciadas por el cliente en el lado del servidor. La forma habitual es detectar y contar las renegociaciones utilizando SSL_CTX_set_info_callback con una función apropiada y cerrar la conexión si ocurren demasiadas renegociaciones.

Puede encontrar un ejemplo de código de cómo se puede hacer esto dentro de C en enlace . La función set_info_callback también debería estar disponible dentro de la interfaz OpenSSL de python, pero no tengo ningún código en ejecución para esto. Si necesita ayuda con la parte específica de Python, es mejor que pregunte en stackoverflow entonces.

    
respondido por el Steffen Ullrich 26.02.2016 - 17:50
fuente

Lea otras preguntas en las etiquetas