Maintenant, on va se débarrasser de ce type d’attaque DDOS de façon définitive …

La syntaxe que je vais utiliser est compatible avec Nginx 1.6 :
perso Nginx 1.9.3

-Parti 1 fail2ban

créer le fichier /etc/fail2ban/filter.d/nginx-dos.conf

A partir du tuto de Ex rat
Fail2ban
nano /etc/fail2ban/filter.d/nginx-dos.conf
-Ajouter ses lignes de codes
# Fail2Ban configuration file
#
# Generated on Fri Jun 08 12:09:15 EST 2012 by BeezNest
#
# Author: Yannick Warnier
#
# $Revision: 1 $
#

[Definition]
# Option:  failregex
# Notes.:  Regexp to catch a generic call from an IP address.
# Values:  TEXT
#
failregex = ^<HOST> -.*"(GET|POST).*HTTP.*"$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
Ensuite nous allons editer le fichier jail.local
nano /etc/fail2ban/jail.local
[nginx-dos]
# Based on apache-badbots but a simple IP check (any IP requesting more than
# 240 pages in 60 seconds, or 4p/s average, is suspicious)
# Block for two full days.
# @author Yannick Warnier
enabled = true
port    = http,https
filter  = nginx-dos
logpath = /var/log/nginx/*-access.log
findtime = 60
bantime  = 172800
maxretry = 240
-Partie II: Dans la partie serveur
nano /etc/nginx/sites-enabled/rutorrent.conf
# Serve static files directly
        location ~* \.(png|jpe?g|gif|ico)$ {
                expires 1y;
                access_log off;
                try_files $uri $uri/ @rewrite;
                gzip off;
        }
        location ~* \.(mp3)$ {
                expires 1y;
                access_log off;
                gzip off;
        }
        location ~* \.(css)$ {
                expires 1d;
                access_log off;
        }
        location ~* \.(js)$ {
                expires 1h;
                access_log off;
        }
Éditez votre fichier de configuration de Nginx :
nano /etc/nginx/nginx.conf
Et recherchez l’ouverture des balises http :
Rajoutez ces lignes au début :
http {
 
#Connexions maximum par ip
limit_conn_zone $binary_remote_addr zone=limit_per_ip:10m;
limit_conn limit_per_ip 15;
 
#Nombre de requêtes/s maximum par ip
limit_req_zone $binary_remote_addr zone=allips:10m rate=150r/s;
limit_req zone=allips burst=150 nodelay;
 
include /etc/nginx/mime.types;
default_type application/octet-stream;

Bon, faites tout de même attention avec ces paramètres, si ils sont trop restrictifs ça pourrait empêcher une navigation correcte sur votre site pour les utilisateurs légitimes, n’hésitez pas à lâcher du lest si vous avez des problèmes.
-Redemarrer nginx
service nginx restart
Source: https://www.abyssproject.net/2014/06/bloquer-les-attaques-ddos-nginx/
Source https://beeznest.wordpress.com/2012/06/08/anti-nginx-dos-filter-for-fail2ban-4/


Pour toutes discutions rendez-vous là http://mondedie.fr/d/7001/1
Répondre…