serveurs:installation:web-srv:nginx

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
serveurs:installation:web-srv:nginx [2026/09/18 10:19] – [Lutte contre les IP agressives (Robots)] jpmilcentserveurs:installation:web-srv:nginx [2026/09/18 14:14] (Version actuelle) – [Blocage de bloc d'IP] jpmilcent
Ligne 144: Ligne 144:
     * Penser à recharger Nginx : ''sudo service nginx reload''     * Penser à recharger Nginx : ''sudo service nginx reload''
  
-===== Activer les prisons Fail2ban pour Nginx ===== + 
-  * Penser à décommenter les prisons liés à Nginx présentes dans le fichier : '' vi /etc/fail2ban/jail.d/defaults-debian.conf '' +===== Problèmes et erreurs ===== 
-    * Relancer //Fail2ban// : ''systemctl restart fail2ban.service'' +==== Éviter l'erreur "bind() to 172.18.5.1:9090 failed (99: Cannot assign requested address)" ====
-===== Éviter l'erreur "bind() to 172.18.5.1:9090 failed (99: Cannot assign requested address)" =====+
 <note info>Au redémarrage de la machine, il arrive que Docker ne soit pas complètement lancé. Cela provoque l'erreur : ''bind() to 172.18.5.1:9090 failed (99: Cannot assign requested address)'' et cela empêche Nginx de démarrer. Il faut donc le lancer manuellement : ''systemctl start nginx''. L'erreur était due au fichier ///etc/nginx/conf.d/status.conf// qui contenait une ligne '' listen 172.18.5.1:9090; ''. Cette ligne n'est finalement pas utile car il suffit d'écouter sur le port 9090 avec la commande '' listen 9090; '' les paramètres ''allow <...> ;'' suffisent à limiter l'accès. Le port est bien accessible sur 127.0.0.1 comme sur 172.18.5.1 (pour un accès dans un container Docker).</note> <note info>Au redémarrage de la machine, il arrive que Docker ne soit pas complètement lancé. Cela provoque l'erreur : ''bind() to 172.18.5.1:9090 failed (99: Cannot assign requested address)'' et cela empêche Nginx de démarrer. Il faut donc le lancer manuellement : ''systemctl start nginx''. L'erreur était due au fichier ///etc/nginx/conf.d/status.conf// qui contenait une ligne '' listen 172.18.5.1:9090; ''. Cette ligne n'est finalement pas utile car il suffit d'écouter sur le port 9090 avec la commande '' listen 9090; '' les paramètres ''allow <...> ;'' suffisent à limiter l'accès. Le port est bien accessible sur 127.0.0.1 comme sur 172.18.5.1 (pour un accès dans un container Docker).</note>
   * Pour éviter ce problème, nous avons modifier le fichier ///etc/nginx/conf.d/status.conf// comme indiqué précédement. Deplus, nous avons modifié le script Systemd de Nginx : ///lib/systemd/system/nginx.service//   * Pour éviter ce problème, nous avons modifier le fichier ///etc/nginx/conf.d/status.conf// comme indiqué précédement. Deplus, nous avons modifié le script Systemd de Nginx : ///lib/systemd/system/nginx.service//
Ligne 234: Ligne 233:
  
 ===== Lutte contre les IP agressives (Robots) ===== ===== Lutte contre les IP agressives (Robots) =====
 +
 +==== Activer les prisons Fail2ban pour Nginx ====
 +  * Penser à décommenter les prisons liés à Nginx présentes dans le fichier : '' vi /etc/fail2ban/jail.d/defaults-debian.conf ''
 +    * Relancer //Fail2ban// : ''systemctl restart fail2ban.service''
 +
 +==== Extraction des IPs créant des erreurs ====
 +  * Pour afficher les IP créant des erreurs (302|403|404|500), utiliser la commande : ''%%  SEUIL=50; awk '$9 ~ /^(302|403|404|500)$/ {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | awk -v min=$SEUIL '$1 >= min {printf "%-15s : %d erreurs\n", $2, $1}' %%''
 +  * Vous pouvez extraire uniquement les IP avec : ''%% SEUIL=50; awk '$9 ~ /^(302|403|404|500)$/ {print $1}' /var/log/nginx/access.log | sort | uniq -c | awk -v min=$SEUIL '$1 >= min {print $2}' > ip_a_bannir.txt %%''
 +
 +==== Blocage de bloc d'IP ====
   * Repérer les IP qui posent problème dans les logs de Nginx : ''%% tail -f /var/log/nginx/access.log %%''   * Repérer les IP qui posent problème dans les logs de Nginx : ''%% tail -f /var/log/nginx/access.log %%''
   * Créer un fichier qui bloquera les IP au niveau global de la config de Nginx : ''%% vi /etc/nginx/conf.d/blockips.conf %%''   * Créer un fichier qui bloquera les IP au niveau global de la config de Nginx : ''%% vi /etc/nginx/conf.d/blockips.conf %%''
     * Souvent nous avons à faire à un bloc d'IP, il faut alors bloquer le bloc complet avec une syntaxe d'IP du type ''xxx.xxx.0.0/15'' où l'on garde uniquement les 2 premiers nombre de l'IPv4.     * Souvent nous avons à faire à un bloc d'IP, il faut alors bloquer le bloc complet avec une syntaxe d'IP du type ''xxx.xxx.0.0/15'' où l'on garde uniquement les 2 premiers nombre de l'IPv4.
     * Ajouter le contenu suivant :<code nginx>     * Ajouter le contenu suivant :<code nginx>
 +# IP bloqués sur le serveur
 # Bloqué le 2026-09-18 : # Bloqué le 2026-09-18 :
 deny xxx.xxx.0.0/15; deny xxx.xxx.0.0/15;
 </code> </code>
 +  * Prendre en compte la nouvelle config : ''%% nginx-reload  %%''
   * Nginx va bloquer ces IP en renvoyant une erreur ''HTTP 403''. Si [[serveurs:installation:fail2ban#prison_nginx-errors| la prison Fail2ban nginx-errors]] est active, les IPs seront progressivement bannies automatiquement.   * Nginx va bloquer ces IP en renvoyant une erreur ''HTTP 403''. Si [[serveurs:installation:fail2ban#prison_nginx-errors| la prison Fail2ban nginx-errors]] est active, les IPs seront progressivement bannies automatiquement.
  • serveurs/installation/web-srv/nginx.1789726754.txt.gz
  • Dernière modification : 2026/09/18 10:19
  • de jpmilcent