Après le réglage limit_req
と limit_conn
sur nginx les avez-vous activés dans le serveur virtuel ? Comme dans :
server {
# ...
location / {
limit_req zone=one;
limit_conn addr 10;
# ...
}
}
De plus, fail2ban est un analyseur de journaux pour la création automatique de règles dynamiques dans le pare-feu (iptables). Vous pouvez créer un filtre et une action dans fail2ban qui filtre l'IP d'origine des 404 et les bloque après un certain nombre de tentatives, ou vous pouvez filtrer les journaux limit_req et limit_conn afin de bannir ces IP à la place (le blocage de l'IP des clients 404 peut entraîner des blocages indésirables).
vim /etc/fail2ban/jail.d/nginx.conf
Copie ça :
[nginx-req-limit]
enabled = true
filter = nginx-req-limit
action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/*error.log
findtime = 600
bantime = 7200
maxretry = 10
-
findtime
est le temps en secondes pour les occurrences en maxretry
Dans ce cas, il se déclencherait après 10 événements en 10 minutes (600 secondes).
-
bantime
est le temps nécessaire pour mettre l'IP sur liste noire dans le pare-feu. Également en secondes. Dans ce cas, il bloquerait l'IP incriminée pendant 2 heures (7200 secondes).
-
logpath
est le journal d'erreurs que vous avez configuré pour votre virtualhost dans nginx .
Assurez-vous que jail.conf
comprend le jail.d/*.conf
et redémarrez le service :
service fail2ban restart
Cela devrait vous aider à éviter les attaques DDoS.
Une autre option à considérer est l'utilisation d'un CDN, comme indiqué dans le commentaire ci-dessus. Cloudflare dispose d'une version gratuite qui peut être d'une grande aide. Elle comporte un pare-feu pour les applications Web qui bloque certains des mauvais robots et autres. Les versions pro/professionnelles offrent plus d'options, mais sont payantes.
0 votes
Utilisez fail2ban. J'utilise fail2ban avec CloudFlare Ainsi, une fois qu'une IP est enregistrée comme mauvaise, elle ne peut même pas contacter mon serveur.
0 votes
Est-ce qu'il y a un moyen d'associer de façon programmatique les IPs en défaut de nginx à fail2ban ?
0 votes
Je ne sais pas. En général, fail2ban surveille les journaux, et s'il voit des schémas de requêtes qui correspondent aux schémas que vous avez définis, il empêche l'établissement de connexions de cette IP vers votre serveur. Le lien que j'ai partagé va plus loin, et les arrête au niveau du CDN. Pour que cela fonctionne, vous devez accepter uniquement les connexions de votre CDN, ce que je fais avec les groupes de sécurité AWS.
0 votes
Fail2ban est livré avec plusieurs filtres pour nginx, et avec ceux-ci, vous pouvez également créer les vôtres.
0 votes
La réponse à serverfault.com/questions/849854/ semble être tout à fait approprié ici. Il suffit de configurer la regex fail pour détecter des codes de statut spécifiques.