Projet

Général

Profil

Demande #3551

Configurer nginx@bastion pour limiter les requêtes

Ajouté par Quentin Gibeaux il y a environ 5 ans. Mis à jour il y a un jour.

Statut:
En cours de traitement
Priorité:
Normale
Assigné à:
Catégorie:
-
Version cible:
Début:
10/01/2019
Echéance:
% réalisé:

20%

Temps estimé:
Difficulté:
2 Facile

Description

Pour éviter que l'infra complexe ne tombe avec les crawler, il faudrait configurer nginx sur bastion pour limiter les requêtes d'une même IP a un taux de requête/sec donnée.


Demandes liées

Lié à Admins - Demande #3773: Augmenter les ressources de la VM adlFermé17/06/2019

Actions

Historique

#1

Mis à jour par François Poulain il y a environ 5 ans

Exemple de inspiré de config livrée par défaut dans discourse (https://github.com/discourse/discourse_docker/blob/master/templates/web.ratelimited.template.yml) :

limit_req_zone $binary_remote_addr zone=flood:10m rate=12r/s;
limit_req_zone $binary_remote_addr zone=bot:10m  rate=200r/m;
limit_req_status 429;

limit_conn_zone $binary_remote_addr zone=connperip:10m;
limit_conn_status 429;

limit_conn connperip 20;
limit_req zone=flood burst=12  nodelay;
limit_req zone=bot   burst=100 nodelay;

La doc nginx: https://www.nginx.com/blog/rate-limiting-nginx/

#2

Mis à jour par Christian P. Momon il y a plus de 4 ans

  • Lié à Demande #3773: Augmenter les ressources de la VM adl ajouté
#3

Mis à jour par Quentin Gibeaux il y a plus de 3 ans

  • Assigné à mis à Romain H.

voir dry run pour avoir une vue de ce qui serait bloqué sur une semaine

#4

Mis à jour par Quentin Gibeaux il y a plus de 3 ans

  • Version cible changé de Backlog à Décembre 2020
#5

Mis à jour par Romain H. il y a plus de 3 ans

  • essayer en mode dry run dans un premier temps pour voir s'il y a des faux positifs
  • attention aux requêtes DAV vers la valise qui sont fréquentes et marchent souvent par essai/erreur (lpoujoulat)
#6

Mis à jour par Romain H. il y a plus de 3 ans

La directive limit_req_dry_run n'existe que depuis nginx version 1.17.1.
Debian Buster propose nginx version 1.14.2.
Debian Bullseye propose nginx version 1.18.0.

Cette directive n'est donc pas utilisable sur bastion qui est en Buster.
Je ne trouve pas d'alternative à cette directive.

Est-ce qu'on se lance avec une configuration directement en prod ou on attend Bullseye (=~ 6 mois) pour avoir le mode dry run ?

#7

Mis à jour par Quentin Gibeaux il y a plus de 3 ans

je propose d'attendre bullseye

#8

Mis à jour par Quentin Gibeaux il y a environ 3 ans

  • Version cible changé de Décembre 2020 à Janvier 2021
#9

Mis à jour par Quentin Gibeaux il y a environ 3 ans

  • Version cible changé de Janvier 2021 à Février 2021
#10

Mis à jour par Quentin Gibeaux il y a environ 3 ans

  • Version cible changé de Février 2021 à Mars 2021
#11

Mis à jour par Quentin Gibeaux il y a presque 3 ans

  • Version cible changé de Mars 2021 à Avril 2021
#12

Mis à jour par Quentin Gibeaux il y a presque 3 ans

  • Version cible changé de Avril 2021 à Mai 2021
#13

Mis à jour par Quentin Gibeaux il y a presque 3 ans

  • Version cible changé de Mai 2021 à Juin 2021
#14

Mis à jour par Quentin Gibeaux il y a plus de 2 ans

  • Version cible changé de Juin 2021 à Été 2021
#15

Mis à jour par Quentin Gibeaux il y a plus de 2 ans

  • Version cible changé de Été 2021 à Septembre 2021
#16

Mis à jour par Quentin Gibeaux il y a plus de 2 ans

  • Version cible changé de Septembre 2021 à Octobre 2021
#17

Mis à jour par Quentin Gibeaux il y a plus de 2 ans

  • Version cible changé de Octobre 2021 à Novembre 2021
#18

Mis à jour par Quentin Gibeaux il y a plus de 2 ans

  • Version cible changé de Novembre 2021 à Décembre 2021
#19

Mis à jour par Quentin Gibeaux il y a environ 2 ans

  • Version cible changé de Décembre 2021 à Janvier 2022
#20

Mis à jour par Quentin Gibeaux il y a environ 2 ans

  • Version cible changé de Janvier 2022 à Février 2022
#21

Mis à jour par Quentin Gibeaux il y a environ 2 ans

  • Version cible changé de Février 2022 à Mars 2022
#22

Mis à jour par Quentin Gibeaux il y a presque 2 ans

  • Version cible changé de Mars 2022 à Avril 2022
#23

Mis à jour par Quentin Gibeaux il y a presque 2 ans

  • Version cible changé de Avril 2022 à Mai 2022
#24

Mis à jour par Quentin Gibeaux il y a presque 2 ans

  • Version cible changé de Mai 2022 à Juin 2022
#25

Mis à jour par Quentin Gibeaux il y a plus d'un an

  • Version cible changé de Juin 2022 à Été 2022
#26

Mis à jour par Quentin Gibeaux il y a plus d'un an

  • Version cible changé de Été 2022 à Septembre 2022
#27

Mis à jour par Romain H. il y a plus d'un an

  • Statut changé de Nouveau à En cours de traitement
  • % réalisé changé de 0 à 20

J'ai activé la limite en mode dry run (commit 32e95e88fc6e17326eaa99b6f7ecfa7d97667862).

En cas de dépassement d'une limite, un message est journalisé dans le error.log du virtualhost.
Le message ressemble à ça :

2022/09/27 00:00:00 [error] X#Y: *Z limiting requests, excess: 12.784 by zone "flood", client: A.B.C.D, server: www.april.org, request: "GET / HTTP/1.1", host: "www.april.org", referrer: "https://www.april.org/" 

Je laisse tourner quelques jours et je regarderai les logs pour voir la quantité de faux positifs et voir s'il faut modifier les seuils.

#28

Mis à jour par Quentin Gibeaux il y a plus d'un an

  • Version cible changé de Septembre 2022 à Octobre 2022
#29

Mis à jour par Quentin Gibeaux il y a plus d'un an

  • Version cible changé de Octobre 2022 à Novembre 2022
#30

Mis à jour par Quentin Gibeaux il y a plus d'un an

  • Version cible changé de Novembre 2022 à Décembre 2022
#31

Mis à jour par Quentin Gibeaux il y a environ un an

  • Version cible changé de Décembre 2022 à Janvier 2023
#32

Mis à jour par Quentin Gibeaux il y a environ un an

  • Version cible changé de Janvier 2023 à Février 2023
#33

Mis à jour par Frédéric Couchet il y a environ un an

  • Version cible changé de Février 2023 à Mars 2023
#34

Mis à jour par Quentin Gibeaux il y a presqu'un an

  • Version cible changé de Mars 2023 à Avril 2023
#35

Mis à jour par Quentin Gibeaux il y a 11 mois

  • Version cible changé de Avril 2023 à Mai 2023
#36

Mis à jour par Quentin Gibeaux il y a 10 mois

  • Version cible changé de Mai 2023 à Juin 2023
#37

Mis à jour par Quentin Gibeaux il y a 9 mois

  • Version cible changé de Juin 2023 à Été 2023
#38

Mis à jour par Quentin Gibeaux il y a 7 mois

  • Version cible changé de Été 2023 à Septembre 2023
#39

Mis à jour par Quentin Gibeaux il y a 6 mois

  • Version cible changé de Septembre 2023 à Octobre 2023
#40

Mis à jour par Quentin Gibeaux il y a 5 mois

  • Version cible changé de Octobre 2023 à Novembre 2023
#41

Mis à jour par Quentin Gibeaux il y a 4 mois

  • Version cible changé de Novembre 2023 à Décembre 2023
#42

Mis à jour par Quentin Gibeaux il y a 3 mois

  • Version cible changé de Décembre 2023 à Janvier 2024
#43

Mis à jour par Quentin Gibeaux il y a environ 2 mois

  • Version cible changé de Janvier 2024 à Février 2024
#44

Mis à jour par Quentin Gibeaux il y a 30 jours

  • Version cible changé de Février 2024 à Mars 2024
#45

Mis à jour par Quentin Gibeaux il y a un jour

  • Version cible changé de Mars 2024 à Avril 2024

Formats disponibles : Atom PDF