implementar rate limits #39

Closed
opened 2025-06-02 13:43:59 +00:00 by fauno · 10 comments
Owner

con un rate limit general, podríamos limitar la cantidad de visitas por IP para todos los servicios, y otro más específico por cada servicio.

tengo que ver si es solo por ip o se puede hacer por rango de ip.

estaba leyendo esto

https://anarc.at/blog/2025-05-30-asncounter/

con un rate limit general, podríamos limitar la cantidad de visitas por IP para todos los servicios, y otro más específico por cada servicio. tengo que ver si es solo por ip o se puede hacer por rango de ip. estaba leyendo esto https://anarc.at/blog/2025-05-30-asncounter/
Numerica added the
prioridad baja
proxy
labels 2025-06-25 17:00:39 +00:00
Numerica removed the
prioridad baja
label 2025-06-25 17:31:58 +00:00
l4uZP added the
prioridad alta
label 2025-07-25 20:20:26 +00:00
fauno self-assigned this 2025-07-30 15:27:51 +00:00
fauno added the
hacer
label 2025-07-30 15:39:55 +00:00
Author
Owner

me estoy interiorizando en seed de mayfirst y nginx-ultimate-bad-bot-blocker para ver cómo mejorar esto

me estoy interiorizando en [seed de mayfirst](https://code.mayfirst.org/mfmt/seed.git) y [nginx-ultimate-bad-bot-blocker](https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker) para ver cómo mejorar esto
Author
Owner

también para access_log (repo privado) hice que se detecte el asn en los logs, habría que hacer una forma de que esa información esté disponible en nginx.

la unica base de datos que se puede consultar desde nginx es la de maxmind para geolocalización, con lo que se podría hacer una base de datos de asns que se convierta en una variable que nginx puede usar para hacer rate limits. pero escribir una base de datos de maxmind es un garrón porque no encontré una utilidad relativamente simple de usar.

también para [access_log](https://0xacab.org/sutty/access_log/) (repo privado) hice que se detecte el asn en los logs, habría que hacer una forma de que esa información esté disponible en nginx. la unica base de datos que se puede consultar desde nginx es la de maxmind para geolocalización, con lo que se podría hacer una base de datos de asns que se convierta en una variable que nginx puede usar para hacer rate limits. pero escribir una base de datos de maxmind es un garrón porque no encontré una utilidad relativamente simple de usar.
Author
Owner

en principio haría un rate limit genérico por ip y luego los user agents de bots. no se si vale la pena mandarle todo el mogollón del ultimate bad bot blocker al proxy, quizas lo dejaría generar una configuración a ver qué es lo que hace y obtener de ahí lo que necesitemos

en principio haría un rate limit genérico por ip y luego los user agents de bots. no se si vale la pena mandarle todo el mogollón del ultimate bad bot blocker al proxy, quizas lo dejaría generar una configuración a ver qué es lo que hace y obtener de ahí lo que necesitemos
Author
Owner

segun el informe de hardening:

Directivas de configuración de proxy

El control de solicitudes y conexiones concurrentes es esencial para proteger el
servidor frente a ataques de denegación de servicio (DoS) o abusos de recursos por
parte de clientes maliciosos. Nginx permite limitar la velocidad de las peticiones y el
número de conexiones simultáneas por dirección IP, evitando que un único cliente
consuma desproporcionadamente los recursos del servidor y afecte la disponibilidad
del servicio.

Se recomienda:

Configurar limitación de peticiones mediante la directiva: limit_req_zone
$binary_remote_addr zone=req_limit:10m rate=10r/s;

Configurar limitación de conexiones concurrentes mediante la directiva:
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;

segun el informe de hardening: Directivas de configuración de proxy El control de solicitudes y conexiones concurrentes es esencial para proteger el servidor frente a ataques de denegación de servicio (DoS) o abusos de recursos por parte de clientes maliciosos. Nginx permite limitar la velocidad de las peticiones y el número de conexiones simultáneas por dirección IP, evitando que un único cliente consuma desproporcionadamente los recursos del servidor y afecte la disponibilidad del servicio. Se recomienda: Configurar limitación de peticiones mediante la directiva: limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s; Configurar limitación de conexiones concurrentes mediante la directiva: limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
Author
Owner

me parece un poco bajo el limite de peticiones pero lo voy a probar

me parece un poco bajo el limite de peticiones pero lo voy a probar
Author
Owner

@Numerica necesito saber dónde modificar el nginx.conf o tengo que esperar a que #61 esté mergeado?

@Numerica necesito saber dónde modificar el `nginx.conf` o tengo que esperar a que #61 esté mergeado?
Owner

@fauno ya está mergeado

por otro lado, no cambia la localizacion del nginx.conf la cual es en roles/proxy/templates

a ésta sólo añadimos la nueva directiva stream

@fauno ya está mergeado por otro lado, no cambia la _localizacion_ del nginx.conf la cual es en __roles/proxy/templates__ a ésta sólo añadimos la nueva directiva _stream_
fauno added
haciendo
and removed
hacer
labels 2025-10-23 15:45:08 +00:00
fauno referenced this issue from a commit 2025-10-23 18:02:11 +00:00
fauno added
testear
and removed
haciendo
labels 2025-10-23 18:04:09 +00:00
Author
Owner

lo estamos probando en sutty.abyaya.la a ver como nos va

lo estamos probando en sutty.abyaya.la a ver como nos va
Author
Owner

lo probé con wrk pero realmente no sé qué onda. le tuve que subir el burst a 20 para que funcione el hedgedoc de sutty

https://samsmith.blog/nginx-rate-limiting-how-it-works-how-to-configure-it-and-how-to-test-it/

lo probé con `wrk` pero realmente no sé qué onda. le tuve que subir el burst a 20 para que funcione el hedgedoc de sutty https://samsmith.blog/nginx-rate-limiting-how-it-works-how-to-configure-it-and-how-to-test-it/
Owner

esto no fue cerrado por #65 ?

esto no fue cerrado por #65 ?
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: escuela-comun/abyayala#39
No description provided.