Outils pour utilisateurs

Outils du site


install:secureapache

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
install:secureapache [2021/07/27 22:48]
linkuff
install:secureapache [2021/07/27 22:51] (Version actuelle)
linkuff
Ligne 107: Ligne 107:
  
  
-Bloquer les attaques DDOS avec NGinx+===== Bloquer les attaques DDOS avec NGinx =====
 Commencez par ouvrir la configuration générale de NGinx Commencez par ouvrir la configuration générale de NGinx
  
-sudo nano /​etc/​nginx/​nginx.conf +<​code>​sudo nano /​etc/​nginx/​nginx.conf</​code> ​
- +
  
 Nous allons utiliser deux variables : Nous allons utiliser deux variables :
  
-limit_req : permet de limiter le nombre de requetes maximum par IP et par seconde +**limit_req** : permet de limiter le nombre de requetes maximum par IP et par seconde 
-limit_conn : permet de limiter le nombre de connexions maximum par IP+**limit_conn** : permet de limiter le nombre de connexions maximum par IP 
 Au début du bloc http ajoutez donc les lignes suivantes Au début du bloc http ajoutez donc les lignes suivantes
 +<​code>​
 #Requete maximun par ip  #Requete maximun par ip 
 limit_req_zone $binary_remote_addr zone=flood:​10m rate=100r/​s; ​ limit_req_zone $binary_remote_addr zone=flood:​10m rate=100r/​s; ​
Ligne 126: Ligne 126:
 limit_conn_zone $binary_remote_addr zone=ddos:​10m; ​ limit_conn_zone $binary_remote_addr zone=ddos:​10m; ​
 limit_conn ddos 100; limit_conn ddos 100;
- +</​code>​
  
 L’exemple ci-dessus vous permet de limiter une IP à 100 connexions simultanées ou 100 requêtes par seconde (ce qui est déjà énorme). Si une personne devait dépasser l’une de ces limites votre serveur lui servirait alors une jolie erreur 503. L’exemple ci-dessus vous permet de limiter une IP à 100 connexions simultanées ou 100 requêtes par seconde (ce qui est déjà énorme). Si une personne devait dépasser l’une de ces limites votre serveur lui servirait alors une jolie erreur 503.
Ligne 132: Ligne 132:
 Testez donc la configuration de votre serveur Testez donc la configuration de votre serveur
  
-sudo nginx -t+<​code>​sudo nginx -t</​code>​
    
  
 Si tout fonctionne redémarrez le Si tout fonctionne redémarrez le
  
-sudo service nginx restart +<​code>​sudo service nginx restart</​code>​
- +
  
-  +===== Bloquer les attaques DDOS avec NGinx via fail2ban ​=====
- +
-Bloquer les attaques DDOS avec NGinx via fail2ban+
 Lorsque NGinx bloque une IP à cause de son trop grands nombres de requêtes et/ou connexions simultanés il l’indique dans ses logs. Si ces informations sont loguées elles peuvent alors être utilisées par fail2ban. Pour bloquer les IPs des attaquants nous allons créer deux règles fail2ban : une pour limit_conn et une pour limit_req Lorsque NGinx bloque une IP à cause de son trop grands nombres de requêtes et/ou connexions simultanés il l’indique dans ses logs. Si ces informations sont loguées elles peuvent alors être utilisées par fail2ban. Pour bloquer les IPs des attaquants nous allons créer deux règles fail2ban : une pour limit_conn et une pour limit_req
  
 Créons un fichier pour notre première règle Créons un fichier pour notre première règle
  
-sudo nano /​etc/​fail2ban/​filter.d/​nginx-conn-limit.conf +<​code>​sudo nano /​etc/​fail2ban/​filter.d/​nginx-conn-limit.conf</​code>​
- +
  
 Dans celui-ci, collez les lignes de configuration suivantes Dans celui-ci, collez les lignes de configuration suivantes
 +<​code>​
 # Fail2Ban configuration file  # Fail2Ban configuration file 
 # # supports: ngx_http_limit_conn_module ​ # # supports: ngx_http_limit_conn_module ​
Ligne 160: Ligne 156:
 # Notes.: regex to ignore. If this regex matches, the line is ignored. ​ # Notes.: regex to ignore. If this regex matches, the line is ignored. ​
 # Values: TEXT # ignoreregex = # Values: TEXT # ignoreregex =
- +</​code>​
  
 Créons maintenant notre seconde règle Créons maintenant notre seconde règle
  
-sudo nano /​etc/​fail2ban/​filter.d/​nginx-req-limit.conf+<​code>​sudo nano /​etc/​fail2ban/​filter.d/​nginx-req-limit.conf</​code>​
    
  
 Dans lequel nous ajoutons la configuration ci-dessous Dans lequel nous ajoutons la configuration ci-dessous
 +<​code>​
 # Fail2Ban configuration file #  # Fail2Ban configuration file # 
 # supports: ngx_http_limit_req_module ​ # supports: ngx_http_limit_req_module ​
Ligne 176: Ligne 172:
 # Option: ignoreregex ​ # Option: ignoreregex ​
 # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex = # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
- +</​code>​
  
 Nos règles sont paramétrées,​ il faut maintenant demander à fail2ban de les utiliser. Modifions la configuration de fail2ban Nos règles sont paramétrées,​ il faut maintenant demander à fail2ban de les utiliser. Modifions la configuration de fail2ban
  
-sudo nano /​etc/​fail2ban/​jail.local+<​code>​sudo nano /​etc/​fail2ban/​jail.local</​code>​
    
  
 Ajoutons deux blocs : 1 par règle Ajoutons deux blocs : 1 par règle
 +<​code>​
 [nginx-req-limit] ​ [nginx-req-limit] ​
 enabled = true  enabled = true 
Ligne 202: Ligne 198:
 bantime = 7200  bantime = 7200 
 maxretry = 100 maxretry = 100
- +</​code>​
  
 Rechargez la configuration de fail2ban Rechargez la configuration de fail2ban
  
-sudo service fail2ban reload+<​code>​sudo service fail2ban reload</​code>​
    
  
 Vérifiez que les règles soient bien chargées Vérifiez que les règles soient bien chargées
  
-sudo fail2ban-client status+<​code>​sudo fail2ban-client status</​code>​
    
  
 Ce qui dans mon cas me donne Ce qui dans mon cas me donne
  
-Status |- Number of jail: 4 `- Jail list: nginx-conn-limit,​ nginx-req-limit,​ ssh, nginx-http-auth+<​code>​Status |- Number of jail: 4 `- Jail list: nginx-conn-limit,​ nginx-req-limit,​ ssh, nginx-http-auth</​code>​
    
  
 Pour avoir plus d’information sur le nombres d’échecs et bannissements Pour avoir plus d’information sur le nombres d’échecs et bannissements
  
-sudo fail2ban-client status nginx-conn-limit && sudo fail2ban-client status nginx-req-limit+<​code>​sudo fail2ban-client status nginx-conn-limit && sudo fail2ban-client status nginx-req-limit</​code>​
    
  
 Ce qui nous donne Ce qui nous donne
  
-Status for the jail: nginx-conn-limit |- filter | |- File list: /​var/​log/​nginx/​error.log | |- Currently failed: 0 | `- Total failed: 0 `- action |- Currently banned: 0 | `- IP list: `- Total banned: 0 Status for the jail: nginx-req-limit |- filter | |- File list: /​var/​log/​nginx/​error.log | |- Currently failed: 0 | `- Total failed: 0 `- action |- Currently banned: 0 | `- IP list: `- Total banned: 0+<​code>​Status for the jail: nginx-conn-limit |- filter | |- File list: /​var/​log/​nginx/​error.log | |- Currently failed: 0 | `- Total failed: 0 `- action |- Currently banned: 0 | `- IP list: `- Total banned: 0 Status for the jail: nginx-req-limit |- filter | |- File list: /​var/​log/​nginx/​error.log | |- Currently failed: 0 | `- Total failed: 0 `- action |- Currently banned: 0 | `- IP list: `- Total banned: 0</​code>​
    
  
 Si vous effectuez des tests et que votre IP est bannie utilisez la commande suivante Si vous effectuez des tests et que votre IP est bannie utilisez la commande suivante
  
-sudo fail2ban-client set nom-de-regle unbanip XXX.XXX.XXX.XXX+<​code>​sudo fail2ban-client set nom-de-regle unbanip XXX.XXX.XXX.XXX</​code>​
    
install/secureapache.txt · Dernière modification: 2021/07/27 22:51 par linkuff