En esta página presentamos unas pocas maneras de mitigar ataques DoS. Sin embargo, al presente no hay una única solución que satisfaga todas las condiciones para este problema. Defender un sitio atacado requiere creatividad y un abordaje a la medida. He aquí algunos consejos:

Configuration parameters

Since Proposal 305 was implemented, some torrc options were added to help mitigating DoS attacks at the introduction points:

  • HiddenServiceEnableIntroDoSDefense: Enable DoS defense at the intropoint level. When this is enabled, the rate and burst parameter will be sent to the intro point which will then use them to apply rate limiting for introduction request to this service.

  • HiddenServiceEnableIntroDoSBurstPerSec: The allowed client introduction burst per second at the introduction point. If this option is 0, it is considered infinite and thus if HiddenServiceEnableIntroDoSDefense is set, it then effectively disables the defenses.

  • HiddenServiceEnableIntroDoSRatePerSec: The allowed client introduction rate per second at the introduction point. If this option is 0, it is considered infinite and thus if HiddenServiceEnableIntroDoSDefense is set, it then effectively disables the defenses.

For more information on how they work, check the tor(1) manpage and the [EST_INTRO_DOS_EXT] section of the Onion Services v3 specification.

The following configuration options can be used to limit connections in the rendezvous circuits:

  • HiddenServiceMaxStreams: The maximum number of simultaneous streams (connections) per rendezvous circuit. The maximum value allowed is 65535. (Setting this to 0 will allow an unlimited number of simultaneous streams.)

  • HiddenServiceMaxStreamsCloseCircuit: If set to 1, then exceeding HiddenServiceMaxStreams will cause the offending rendezvous circuit to be torn down, as opposed to stream creation requests that exceed the limit being silently ignored.

Onionbalance

Onionbalance allows Onion Service operators to achieve the property of high availability by allowing multiple machines to handle requests for an Onion Service. Puedes usar Onionbalance para expandir horizontalmente. Cuanto más expandes, más difícil es para los atacantes sobrepasarte. Onionbalance is available for v3 Onion Services.

Autorización de Cliente o múltiples direcciones cebolla para compartimentar a tus usuarios

If you have users you trust, give them dedicated Onion Service and client authorization credentials so that it can always be available. Para usuarios en los que no confías, divídelos en múltiples direcciones. Dicho sea eso, tener demasiadas direcciones onion es realmente malo para tu seguridad (debido al uso de muchos nodos guardianes), por lo que intenta usar autorización de cliente cuando sea posible.

Captchas y cookies

Si aún necesitas limitar la tasa de acceso a tus usuarios, divide tu infraestructura en capas, y pón Captchas cerca de la página de inicio de sesión. De esta manera, los atacantes tendrán que resolver Captchas antes de poder atacar más adentro de tu infraestructura.

Los Captchas son una manera de mitigar ataques DDoS. Cuando una solicitud viene desde un cliente, comprueba si el cliente contiene la cookie segura correcta o de lo contrario redirigirá a la página recaptcha. El cliente ingresa las letras captcha. Nginx envía estas letras ingresadas al servidor recaptcha para su verificación.

La respuesta correcta desde el servidor recaptcha comenzará con "true...", caso contrario comenzará con "false...". Agrega la cookie segura para el cliente verificado correcto, redirige al cliente a la página que desea ver.

Es posible implementar Captchas directamente en tu servidor web con Nginx y OpenResty usando Lua para generar y verificar las imágenes captcha. Esta implementación no es fácil de configurar.

Una alternativa podría ser implementar un desafío test-cookie. En tu servidor web, comprueba que los clientes puedan establecer cookies válidas, los clientes maliciosos a menudo no tienen esta característica. En Nginx, Cloudflare provee una biblioteca para interactuar con cookies.

Otros métodos incluyen asegurarse que los clientes conectando a tu .onion tengan un encabezado User-Agent válido, y que el encabezado Referer no esté establecido a un valor que puedas asociar con el ataque.

Limitación de la tasa de acceso al servidor web

Si los atacantes te acosan con circuitos agresivos que realizan demasiadas consultas, intenta detectar ese sobreuso y eliminarlos usando la opción HiddenServiceExportCircuitID en torrc. Puedes usar tu propia heurística o el módulo de limitación de tasa de tu servidor web.

Los consejos de arriba deberían ayudar a mantenerte a flote en tiempos turbulentos. Al mismo tiempo estamos trabajando en defensas más avanzadas, de manera que se necesite menos configuración manual y ajuste por parte de los operadores de servicios cebolla.