Configurer un pare-feu applicatif (WAF) avec Nginx

Credit : Illustration backtotheweb.fr

Configurer un pare-feu applicatif (WAF) avec Nginx

Dylan D. — Agent Support Technique Serveur Securite 525 mots 3 min

Pourquoi un WAF est indispensable

Cet article, c'est le genre de truc que j'aurais aimé trouver quand j'ai débuté.

Un pare-feu applicatif (Web Application Firewall) analyse le trafic HTTP entrant et bloque les requetes malveillantes avant qu'elles n'atteignent votre application. Contrairement a un pare-feu reseau classique (iptables), le WAF comprend le protocole HTTP et peut detecter les injections SQL, les attaques XSS ou les tentatives de brute-force.

Sur un serveur IONOS, Nginx est souvent deja en place comme reverse proxy. Voyons comment le transformer en veritable bouclier.

Rate Limiting : limiter les requetes

Le rate limiting empeche un client d'envoyer trop de requetes en peu de temps :

# Dans le bloc http {}
http {
    limit_req_zone $binary_remote_addr zone=global:10m rate=10r/s;
    limit_req_zone $binary_remote_addr zone=login:10m rate=1r/s;
}

# Dans le bloc server {}
server {
    # Limite globale
    limit_req zone=global burst=20 nodelay;

    # Limite stricte sur la page de login
    location /wp-login.php {
        limit_req zone=login burst=3 nodelay;
        limit_req_status 429;
        proxy_pass http://backend;
    }
}

Le parametre burst autorise un petit depassement temporaire, et nodelay traite ces requetes immediatement au lieu de les mettre en file d'attente.

Configurer un pare-feu applicatif (WAF) avec Nginx

Geo Blocking : bloquer par pays

Si votre site cible uniquement la France, vous pouvez bloquer le trafic provenant de certains pays. Installez le module GeoIP2 :

sudo apt install libnginx-mod-http-geoip2
sudo wget -O /usr/share/GeoIP/GeoLite2-Country.mmdb https://download.db-ip.com/free/dbip-country-lite-2026-03.mmdb.gz

Configuration Nginx :

geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb {
    auto_reload 24h;
    $geoip2_country_code country iso_code;
}

map $geoip2_country_code $blocked_country {
    default 0;
    CN 1;
    RU 1;
    KP 1;
}

server {
    if ($blocked_country) {
        return 403;
    }
}

Configurer un pare-feu applicatif (WAF) avec Nginx

Filtrage de requetes malveillantes

Bloquez les patterns d'attaque courants directement dans Nginx :

server {
    # Bloquer les tentatives de traversee de repertoire
    location ~* \.\./ {
        return 403;
    }

    # Bloquer les extensions sensibles
    location ~* \.(env|git|bak|sql|log)$ {
        return 403;
    }

    # Bloquer les user-agents suspects
    if ($http_user_agent ~* (sqlmap|nikto|nmap|masscan)) {
        return 403;
    }



> **Note perso** : sur nos serveurs IONOS, cette config tourne nickel depuis des mois.


    # Limiter la taille du body
    client_max_body_size 10M;
    client_body_buffer_size 128k;
}

ModSecurity : le WAF complet

Pour une protection avancee, installez ModSecurity avec les regles OWASP CRS :

sudo apt install libmodsecurity3 libnginx-mod-http-modsecurity
sudo mkdir /etc/nginx/modsecurity
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/nginx/modsecurity/modsecurity.conf
sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/nginx/modsecurity/modsecurity.conf

Telechargez les regles OWASP Core Rule Set :

cd /etc/nginx/modsecurity
sudo git clone https://github.com/coreruleset/coreruleset.git
sudo cp coreruleset/crs-setup.conf.example coreruleset/crs-setup.conf

Activez dans Nginx :

server {
    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsecurity/modsecurity.conf;

    location / {
        proxy_pass http://backend;
    }
}

Tester et surveiller

Apres configuration, testez avec curl :

# Test rate limiting
for i in $(seq 1 50); do curl -s -o /dev/null -w "%{http_code}\n" https://monsite.fr/; done

# Test injection SQL
curl "https://monsite.fr/?id=1' OR 1=1--"
# Doit retourner 403

Consultez les logs ModSecurity :

sudo tail -f /var/log/modsec_audit.log

Un WAF bien configure sur votre serveur IONOS constitue une premiere ligne de defense efficace. Combinez-le avec des mises a jour regulieres et un monitoring actif pour une securite optimale.

# Articles similaires

// newsletter

Cet article vous a aide ? Recevez les prochains par email.