Quelles techniques et/ou modules sont disponibles pour implémenter une limitation de débit robuste (requêtes | bytes/ip/unit time) dans apache?Comment puis-je implémenter la limitation de débit avec Apache? (demandes par seconde)
Répondre
La meilleure
- mod_evasive (concentrèrent davantage sur la réduction de l'exposition DoS)
- mod_cband (meilleur sélectionnée pour le contrôle de la bande passante 'normale')
et le reste
Je n'ai rien trouvé pour limiter les connexions par jour par adresse IP. J'ai passé toute la nuit à chercher, c'est dommage. – Greg
Est-ce que quelqu'un sait s'il existe un moyen d'obtenir mod_evasive pour regarder un en-tête à la place de l'IP, pour courir derrière un proxy inverse? –
@StavrosKorokithakis Peut-être que cela aidera? http://stderr.net/apache/rpaf/ Je crois que cela fera apparaître l'adresse IP X-Forwarded comme si elle était l'adresse IP source de tous les modules Apache chargés en aval. – Eli
Dans Apache 2.4, il y a un nouveau module appelé stock mod_ratelimit. Pour émuler les vitesses de modem, vous pouvez utiliser mod_dialup. Bien que je ne vois pas pourquoi vous ne pourriez pas utiliser mod_ratelimit pour tout.
Notez que mod_dialup utilise un état asynchrone 'SUSPENDED', ne gaspillant pas de threads en attente, alors que mod_ratelimit, pour le moment, est strictement thread-per-connection. cf. http://thread.gmane.org/gmane.comp.apache.cvs/20490 – ArtemGr
Une autre option - mod_qos
Pas simple à configurer - mais puissant.
Comme indiqué dans this blog après, il semble possible d'utiliser Apache mod_security pour mettre en œuvre une limite de vitesse par seconde.
La configuration est quelque chose comme ceci:
SecRuleEngine On
<LocationMatch "^/somepath">
SecAction initcol:ip=%{REMOTE_ADDR},pass,nolog
SecAction "phase:5,deprecatevar:ip.somepathcounter=1/1,pass,nolog"
SecRule IP:SOMEPATHCOUNTER "@gt 60" "phase:2,pause:300,deny,status:509,setenv:RATELIMITED,skip:1,nolog"
SecAction "phase:2,pass,setvar:ip.somepathcounter=+1,nolog"
Header always set Retry-After "10" env=RATELIMITED
</LocationMatch>
ErrorDocument 509 "Rate Limit Exceeded"
C'était parfait pour moi, avec modsec2 déjà en cours d'exécution.Il suffit d'ajouter des identifiants aux règles pour correspondre à la version modsec, comme ceci:
Notez également que vous pouvez modifier le nombre de demandes de rafale initiales autorisées en éditant le "@gt 60", ainsi que la rapidité avec laquelle il "recharge" la limite en modifiant le bit ip.somepathcounter = 1/1. 1/1 permet une demande supplémentaire par seconde. 1/2 permet une requête supplémentaire toutes les 2 secondes, etc. –
Apache 2.4 va se plaindre du 509 dans ErrorDocument, une option le change en 429 (ce qui n'est bien sûr pas supporté par Apache 2.2). De plus, tous les SecAction et SecRule ont besoin d'un identifiant depuis mod_security 2.7. – Mrten
Malheureusement, mod_evasive
ne fonctionnera pas comme prévu lorsqu'il est utilisé dans des configurations non-prefork (configurations récentes apache sont principalement MPM)
Il y a de nombreux chemin y compris les pare-feu d'application Web, mais la chose la plus simple à mettre en œuvre si vous utilisez un mod Apache.
Un tel mod que je recommande est mod_qos. C'est un module gratuit très efficace contre certaines attaques de type DOS, Bruteforce et Slowloris. Cela soulagera un peu votre charge de serveur.
Il est très puissant.
La version actuelle du mod_qos Module met en œuvre des mécanismes de contrôle pour gérer:
Le nombre maximal de demandes simultanées à un emplacement/ressource (URL) ou hôte virtuel.
Limitation de la bande passante telle que nombre maximum de demandes par seconde pour une URL ou le maximum/minimum de koctets téléchargés par seconde.
Limite le nombre d'événements de requête par seconde (demande spéciale conditions).
- Limite le nombre d'événements de demande dans une période définie.
- Il peut également détecter les personnes très importantes (VIP) qui peuvent accéder au serveur Web sans ou avec moins de restrictions.
Ligne de requête générique et filtre d'en-tête pour refuser les opérations non autorisées.
Demande la limitation des données de corps et le filtrage (nécessite mod_parp).
Limite le nombre d'événements de requête pour les clients individuels (IP).
Limitations sur le niveau de connexion TCP, par exemple le nombre maximal de connexions autorisées à partir d'une adresse de source IP unique ou dynamique keep-alive contrôle .
- Préfère les adresses IP connues lorsque le serveur est à court de connexions TCP libres.
Ceci est un exemple de configuration de ce pour quoi vous pouvez l'utiliser. Il existe des centaines de configurations possibles pour répondre à vos besoins. Visitez le site pour plus d'informations sur les contrôles.
Sample configuration:
# minimum request rate (bytes/sec at request reading):
QS_SrvRequestRate 120
# limits the connections for this virtual host:
QS_SrvMaxConn 800
# allows keep-alive support till the server reaches 600 connections:
QS_SrvMaxConnClose 600
# allows max 50 connections from a single ip address:
QS_SrvMaxConnPerIP 50
# disables connection restrictions for certain clients:
QS_SrvMaxConnExcludeIP 172.18.3.32
QS_SrvMaxConnExcludeIP 192.168.10.
celui-ci ne fonctionne que dans l'ancien apache2.2 ne fonctionne pas dans apache2.4 +, n'est-ce pas? – BOBO
- 1. Django: limitation de débit simple
- 2. Qu'est-ce qu'un bon algorithme de limitation de débit?
- 3. Comment la limitation de la bande passante fonctionne-t-elle?
- 4. Demandes limite par heure
- 5. Quelle est la meilleure façon d'implémenter un algorithme de limitation de débit pour les requêtes Web?
- 6. Implémenter service Options de limitation dans l'application Silverlight
- 7. ISR - Débit de données maximal
- 8. Apache réécrire les demandes de domaine à des demandes de sous-domaine
- 9. Un travail autour de la limitation de groupe par clause
- 10. SQL Server 2008 - limitation de la requête par FK
- 11. télécharger avec la limitation de la bande passante dans C#
- 12. Apache manipulant les demandes SSL et les passant à HAproxy
- 13. Calcul d'images par seconde dans un jeu
- 14. Comment implémenter la propriété DataTable avec INotifyPropertyChanged
- 15. Comment appeler une méthode automatiquement 20 fois par seconde?
- 16. Une limite de débit API voit-elle les demandes JavaScript comme provenant de l'adresse IP du domaine ou de l'adresse IP de l'utilisateur?
- 17. java.lang.String en jndi contexte par défaut avec Apache Geronimo - Comment?
- 18. Débit cumulé de plusieurs connexions (Linux)
- 19. Comment puis-je obtenir la date de la première seconde de l'année avec SQL?
- 20. Limitation du navigateur avec la longueur de page maximale
- 21. Gérer plusieurs demandes avec ICallbackEventHandler
- 22. Comment puis-je demander à apache de transférer les demandes de service Web vers Tomcat?
- 23. SVN avec la sécurité Apache
- 24. éviter la fenêtre "Mise en route avec SAS" lors de l'ouverture de la seconde session SAS
- 25. Quelle est la relation entre MCPS (million de cycles par seconde) et la puissance consommée
- 26. Comment implémenter javascript discret avec la génération de contenu dynamique?
- 27. IIS ou ASP.NET effectue-t-il une sorte de limitation de la connexion?
- 28. Limitation de la portée d'une relation ForeignKey?
- 29. Avoir un script CGI attraper toutes les demandes à un domaine avec Apache
- 30. montrant la vidéo par Apache 5.5
J'utilise Linux de [tc] (http://www.lartc.org/howto/lartc.qdisc.classless.html#AEN690) sur le serveur Web, parce que Red Hat 6 a seulement Apache 2.2. – ceving