Configuración de modo de mitigación de desincronización del equilibrador de carga clásico
El modo de mitigación de desincronización protege a la aplicación de problemas causados por desincronización HTTP. El equilibrador de carga clasifica cada solicitud en función de su nivel de amenaza, permite solicitudes seguras y, además, mitiga el riesgo según lo especificado en el modo de mitigación que determine. La mitigación de desincronización incluye modos monitoreados, defensivos y más estrictos. El valor predeterminado es el modo defensivo, que proporciona una mitigación duradera contra la desincronización HTTP mientras mantiene la disponibilidad de la aplicación. Puede cambiar al modo más estricto para asegurarse de que la aplicación solo reciba solicitudes que cumplan con RFC 7230.
La biblioteca http_desync_guardian analiza las solicitudes HTTP para evitar ataques de desincronización HTTP. Para obtener más información, consulte HTTP Desync Guardian
sugerencia
Esta configuración solo se aplica a los equilibradores de carga clásicos. Para obtener información que se aplique a los equilibradores de carga de aplicaciones, consulte Modo de mitigación de desincronización para equilibradores de carga de aplicaciones.
Clasificaciones
Las clasificaciones son las siguientes.
-
Conforme: la solicitud cumple con RFC 7230 y no presenta amenazas de seguridad conocidas.
-
Aceptable: la solicitud no cumple con RFC 7230, pero no presenta amenazas de seguridad conocidas.
-
Ambigua: la solicitud no cumple con RFC 7230 y representa un riesgo, ya que varios servidores web y proxies podrían manejarla de manera diferente.
-
Grave: la solicitud supone un alto riesgo para la seguridad. El equilibrador de carga bloquea la solicitud, proporciona una respuesta 400 al cliente y cierra la conexión del cliente.
En las listas que se incluyen a continuación, se describen los problemas correspondientes a cada clasificación.
Aceptable
-
Un encabezado contiene un carácter de control o no ASCII.
-
La versión de la solicitud contiene un valor incorrecto.
-
Hay un encabezado Content-Length con un valor de 0 para una solicitud GET o HEAD.
-
El URI de la solicitud contiene un espacio sin codificación URL.
Ambigua
-
El URI de la solicitud contiene caracteres de control.
-
La solicitud contiene un encabezado Transfer-Encoding y un encabezado Content-Length.
-
Hay varios encabezados Content-Length con el mismo valor.
-
Un encabezado está vacío o hay una línea que solo contiene espacios.
-
Hay un encabezado que se puede normalizar a Transfer-Encoding o Content-Length mediante técnicas comunes de normalización de texto.
-
Hay un encabezado Content-Length para una solicitud GET o HEAD.
-
Hay un encabezado Transfer-Encoding para una solicitud GET o HEAD.
Grave
-
El URI de la solicitud contiene un carácter nulo o un retorno de carro.
-
El encabezado Content-Length contiene un valor que no se puede analizar o que no es un número válido.
-
Un encabezado contiene un carácter nulo o un retorno de carro.
-
El encabezado Transfer-Encoding contiene un valor incorrecto.
-
El método de la solicitud tiene un formato incorrecto.
-
La versión de la solicitud tiene un formato incorrecto.
-
Hay varios encabezados Content-Length con valores diferentes.
-
Hay varios encabezados Transfer-Encoding fragmentados.
Si una solicitud no cumple con RFC 7230, el equilibrador de carga incrementa la métrica de DesyncMitigationMode_NonCompliant_Request_Count. Para obtener más información, consulte Métricas del Equilibrador de carga clásico.
Modos
En la siguiente tabla se describe cómo los equilibradores de carga clásicos tratan a las solicitudes según el modo y la clasificación.
| Clasificación | Modo monitoreado | Modo defensivo | Modo más estricto |
|---|---|---|---|
| Conforme | Permitido | Permitida | Permitido |
| Aceptable | Permitido | Permitido | Bloqueada |
| Ambigua | Permitido | Permitida¹ | Bloqueada |
| Grave | Permitido | Bloqueada | Bloqueada |
¹ Enruta las solicitudes, pero cierra las conexiones del cliente y del destino.
Modificación del modo de mitigación de desincronización
Para actualizar el modo de mitigación de desincronización mediante la consola
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
En el panel de navegación, en Equilibrio de carga, elija Equilibradores de carga.
-
Seleccione el nombre del equilibrador de carga para abrir su página de detalles.
-
En la pestaña Atributos, seleccione Editar.
-
En la página Editar atributos del equilibrador de carga, en Configuración del tráfico, seleccione Defensiva (recomendado), La más estricta o Monitorear.
-
Seleccione Save changes (Guardar cambios).
Para actualizar el modo de mitigación de desincronización mediante la AWS CLI
Use el comando modify-load-balancer-attributes con el atributo elb.http.desyncmitigationmode establecido en monitor, defensive o strictest.
aws elb modify-load-balancer-attributes --load-balancer-namemy-load-balancer--load-balancer-attributes file://attribute.json
A continuación, se muestra el contenido de attribute.json.
{ "AdditionalAttributes": [ { "Key": "elb.http.desyncmitigationmode", "Value": "strictest" } ] }