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:
Parámetros de configuración
Desde que se implementó la Propuesta 305, se añadieron algunas opciones torrc
para ayudar a mitigar los ataques DoS en los puntos de introducción:
HiddenServiceEnableIntroDoSDefense
: Habilitar la defensa DoS a nivel de intropoint.
Cuando esto esté habilitado, el parámetro de velocidad y ráfaga se enviará al punto de entrada que luego los utilizará para aplicar la tasa límite para la solicitud de introducción a este servicio.
HiddenServiceEnableIntroDoSBurstPerSec
: La cantidad de introducción de clientes permitida por segundo en el punto de introducción.
Si esta opción es 0, se considera infinita y por lo tanto si se fija HiddenServiceEnableIntroDoSDefense, entonces efectivamente deshabilita las defensas.
HiddenServiceEnableIntroDoSRatePerSec
: La tasa de introducción del cliente permitido por segundo en el punto de introducción.
Si esta opción es 0, se considera infinita y por lo tanto si se fija HiddenServiceEnableIntroDoSDefense, entonces efectivamente deshabilita las defensas.
Para obtener más información sobre cómo funcionan, mira la página del manual tor(1)
y la sección [EST_INTRO_DOS_EXT]
de la especificación de Onion Services v3.
Las siguientes opciones de configuración se pueden usar para limitar las conexiones en los circuitos de encuentro:
HiddenServiceMaxStreams
: El número máximo de flujos (conexiones) simultáneos por circuito de citas.
El valor máximo permitido es 65535. (Si se establece en 0, se permitirá un número ilimitado de flujos simultáneos.)
HiddenServiceMaxStreamsCloseCircuit
: Si se fija en 1, entonces exceder HiddenServiceMaxStreams impedirá la entrada de visitas inoportunas, en lugar de ignorar silenciosamente las solicitudes de creación de flujos que superen el límite.
Onionbalance
Onionbalance permite a los operadores de servicios cebolla lograr gran disponibilidad usando varias máquinas para satisfacer consultas a un mismo servicio cebolla.
Puedes usar Onionbalance para expandir horizontalmente.
Cuanto más expandes, más difícil es para los atacantes sobrepasarte.
Onionbalance está disponible para Servicios cebolla v3.
Autorización de Cliente o múltiples direcciones cebolla para compartimentar a tus usuarios
Si tienes usuarios en los que confías, dales credenciales dedicadas del Servicio Cebolla y autorización de cliente para que siempre esté disponible.
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 funcionalidad.
En Nginx, Cloudflare provee una biblioteca para interactuar con cookies.
Otros métodos incluyen asegurarse que los clientes que se conectan 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.