Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
securite:firewall_fail2ban [2011/12/16 21:45] – créée Anael MOBILIAsecurite:firewall_fail2ban [2014/05/27 03:32] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
-<style float-right>{{tag>XXX}}</style>+<style float-right>{{tag>fail2ban firewall iptables SSH}}</style>
  
-<style float-left>{{:icones:page_web.png?nolink&70}}</style> +<style float-left>{{:icones:kgpg.png?nolink&70}}</style> 
-====== Titre_page ======+====== Protection anti bruteforce ======
  
 //[[:|Retour à la liste des tutoriels]]// //[[:|Retour à la liste des tutoriels]]//
  
-<note tip>Présentation rapide.</note>+<note tip>Les attaques automatisées des serveurs sont aujourd'hui courantes.</note>
 <note>**Prérequis** <note>**Prérequis**
-  * Aucun prérequis pour ce tutoriel.+  * [[:securite:firewall_iptables|Avoir installé iptables]].
 </note> </note>
 \\ \\
-===== grand1 ===== +===== Présentation ===== 
-lorem ipsum+Un pare-feu //(iptables)// est installé sur votre serveur. Fail2ban va permettre d'ajouter des règles de filtrage visant à filtrer les hôtes indésirables.
  
 +Je ne vais pas m'attarder sur la parade des attaques Apache / web, mais sur les tentatives de connexion en ssh (port 22).
 \\ \\
-===== Liens ===== +Rappel le ssh permet d'ouvrir une console de gestion du serveur à distance.
-  * [[.:|Retour à la liste des tutoriels XXX]] +
-  * [[:|Retour à la liste des tutoriels]]+
  
-++__But : Installer et configurer une {{intelligence}} pour le [firewall|tag:firewall[fail2ban|tag:fail2ban]__+++<note>Une solution "simple" consiste à modifier le port d'écoute de SSH. 
 +\\ 
 +Toutefois, ceci peut vous empêcher de vous connecter à votre serveur depuis des réseaux académiques ou professionnels qui sont fortement filtrés.</note> 
 + 
 +<note important>Au 18 décembre 2011 : 
 +  * [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=650678|Un rapport de bug est ouvert pour fail2ban]
 +  * [[http://sourceforge.net/tracker/?func=detail&aid=1999243&group_id=121032&atid=689047|Fail2ban ne gère pas les connexions en IPv6]
 +</note> 
 + 
 +===== Log SSH ===== 
 +SSH enregistre toutes les tentatives de connexion (réussies ou non) dans le fichier journal **/var/log/auth.log** .
  
-!!!! I) Présentation de fail2ban +Exemple : connexion échouée 
-!!! 1) Préambule +<code bash>Jun 26 05:56:31 vm sshd[30103]: Invalid user Aurdaneta from 200.69.248.161
-Maintenant qu'iptables est configuré sur le serveur, il convient de nourrir un petit peu ce dernier, en lui fournissant des @ IP de "visiteurs" peu scrupuleux. +
-%%%Je ne vais pas m'attarder sur la parade des attaques Apache / web, mais sur les tentatives de connexion en ssh (port 22). +
-%%%Rappel : le ssh permet d'ouvrir une console de gestion du serveur à distance. +
-%%%Une solution "simple" consiste à modifier le port d'écoute de ssh, ce que je ne ferais pas, étant amené à me connecter depuis des réseaux académiques ou professionnels qui sont fortement filtrés, et sur lesquels le port 22 est ouvert ;-) +
-!!! 2) Log de ssh +
-%%%ssh loggue toutes les tentatives de connexion (réussies ou non) dans le fichier __/var/log/auth.log__ +
-%%%Exemple : connexion échouée +
-///[bash+
-Jun 26 05:56:31 vm sshd[30103]: Invalid user Aurdaneta from 200.69.248.161+
 Jun 26 05:56:31 vm sshd[30103]: pam_unix(sshd:auth): check pass; user unknown Jun 26 05:56:31 vm sshd[30103]: pam_unix(sshd:auth): check pass; user unknown
 Jun 26 05:56:31 vm sshd[30103]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=h248-161.decidir.net Jun 26 05:56:31 vm sshd[30103]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=h248-161.decidir.net
-Jun 26 05:56:32 vm sshd[30103]: Failed password for invalid user Aurdaneta from 200.69.248.161 port 52101 ssh2 +Jun 26 05:56:32 vm sshd[30103]: Failed password for invalid user Aurdaneta from 200.69.248.161 port 52101 ssh2</code>
-/// +
-%%%Exemple : connexion réussie +
-///[bash] +
-Jun 26 02:00:16 vm sshd[29793]: Accepted password for user-web from 88.191.122.115 port 1986 ssh2 +
-Jun 26 02:00:16 vm sshd[29793]: pam_unix(sshd:session): session opened for user user-web by (uid=0) +
-/// +
-!!! 3) Fonctionnement de fail2ban +
-%%%fail2ban sera un daemon sur le serveur, c'est à dire qu'il sera exécuté en permanence, et lira les logs indiqués afin de les analyser et prendre les mesures requises en cas d'abus / tentative de hack de la part d'une personne. +
-%%%fail2ban est capable d'analyser différents types de logs (ssh, web, ftp, ...). Toutefois attention aux ressources consommées par un process tournant en permanence et analysant des logs ! +
-%%%Ce logiciel n'est pas forcément le plus adéquat pour faire l'analyse de vos logs web, tout du moins en mode stand-alone. (je reviendrais sur ce point ultérieurement).+
  
-!!!! II) Installation +Exemple : connexion réussie 
-///[bash+<code bash>Jun 26 02:00:16 vm sshd[29793]: Accepted password for user-web from 88.191.122.115 port 1986 ssh2 
-apt-get install fail2ban +Jun 26 02:00:16 vm sshd[29793]: pam_unix(sshd:session): session opened for user user-ssh by (uid=0)</code>
-///+
  
-!!!! III) Configuration 
-Toute la configuration de fail2ban s'effectue dans le fichier __/etc/fail2ban/jail.conf__ 
-!!! 1) ignoreip 
-Liste des ip à ignorer dans le scan des logs. 
-%%%Par défaut 127.0.0.1 . 
-%%%Séparer les valeurs par une virgule. 
-%%%Indication avec un masque réseau possible (10.0.0.0/16 -> couvre de 10.0.0.0 à 10.0.255.255) 
  
-!!! 2) bantime+===== Fonctionnement de fail2ban ===== 
 +Fail2ban sera un daemon sur le serveur, c'est à dire qu'il sera exécuté en permanence, et lira les logs indiqués afin de les analyser et prendre les mesures requises en cas d'abus / tentative de hack de la part d'une personne. 
 + 
 +Fail2ban est capable d'analyser différents types de logs //(SSH, web, FTP, ...)//. Toutefois attention aux ressources consommées par un processus tournant en permanence et analysant des logs ! 
 + 
 + 
 +===== Installation ===== 
 +<code bash>apt-get install fail2ban</code> 
 + 
 + 
 +===== Configuration ===== 
 +Toute la configuration de fail2ban s'effectue dans le fichier **/etc/fail2ban/jail.conf** . 
 +==== ignoreip ==== 
 +Liste des ip à ignorer dans le scan des logs. 
 +\\ 
 +Par défaut 127.0.0.1 . 
 +<note tip> 
 +  * Séparer les valeurs par une virgule. 
 +  * Indication avec un masque réseau possible (10.0.0.0/16 -> couvre de 10.0.0.0 à 10.0.255.255) 
 +</note> 
 +==== bantime ====
 Durée du ban, en secondes. Par défaut 600. Durée du ban, en secondes. Par défaut 600.
-%%%Cette valeur peut-être laissée telle qu'elle (une tentative de connexion en brute-force sur le serveur abdiquera immédiatement s'il ne reçoit pas de réponse de la part du serveur).+\\ 
 +Cette valeur peut-être laissée telle qu'elle //(une attaque bruteforce automatisée s'arrêtera immédiatement s'il ne reçoit plus de réponses de la part du serveur)//.
  
-!!! 3) destemail +==== destemail ==== 
-fail2ban peut prévenir par mail à chaque ip bannie / débannie+Fail2ban peut prévenir par mail à chaque ip bannie / débannie.
-%%%Je n'ai pas encore de serveur mail, on ne va pas toucher à cette valeur.+
  
-!!! 4) [ssh|tag:ssh] +==== maxretry ==== 
-Voila la partie qui m'intéresse :-)+Nombre de tentatives maximales au bout duquel l'adresse IP est bloquée. 
-///[bash+ 
-[ssh]+Cette valeur peut-être redéfinie dans chaque module de type de logs. 
 + 
 +==== SSH ==== 
 +Voici la partie dans laquelle j'indique de vérifier les connexions SSH
 +<code bash>[ssh]
  
 enabled = true enabled = true
Ligne 76: Ligne 82:
 filter  = sshd filter  = sshd
 logpath  = /var/log/auth.log logpath  = /var/log/auth.log
-maxretry = 6 +maxretry = 6</code> 
-//+Le module SSH de fail2ban est activé. 
-Le module ssh de fail2ban est activé. +\\ 
-%%%La valeur de maxretry peut-être minorée à 3 ou 4 (nombre maximal de tentatives échouées avant ban)+La valeur de maxretry peut-être minorée à 3 ou 4 (nombre maximal de tentatives échouées avant ban)
  
-!!!! IV) Suite +==== Suite ==== 
-Pour la suite, je recharge la conf de fail2ban avec +Il faut recharger la configuration de fail2ban : 
-///[bash+<code bash>service fail2ban reload</code>
-service fail2ban reload +
-///+
  
-!!! 1) Liste des bans actuels +===== Commandes utiles ===== 
-///[bash+==== Liste des bans actuels ==== 
-iptables -L +<code bash>iptables -L</code> 
-//+fail2ban est apparu dans la liste !
-fail2ban est apparu dans la liste :-)+
  
-!!! 2) Log de fail2ban +==== Log de fail2ban ==== 
-///[bash+<code bash>tail /var/log/fail2ban.log</code>
- tail /var/log/fail2ban.log +
-///+
  
-!!! 3) Enlever un ban +==== Enlever un ban ==== 
-///[bash+<code bash>iptables -D fail2ban-ssh -s @IP -j DROP </code> 
-iptables -D fail2ban-ssh -s @IP -j DROP  + 
-/// +Où @IP est l'adresse IP à débloquer. 
-Où @IP est l'adresse IP à débloquer :) + 
-%%% +\\ 
-%%% +===== Liens ===== 
-%%%[Doc ubuntu|http://doc.ubuntu-fr.org/fail2ban|fr] +  * [[.:|Retour à la liste des tutoriels Sécurité]] 
-%%%[Doc fail2ban - en|http://www.fail2ban.org/|en]+  * [[:|Retour à la liste des tutoriels]] 
 +  * [[http://doc.ubuntu-fr.org/fail2ban|Doc. Ubuntu-fr]
 +  * [[http://www.fail2ban.org/|Doc. fail2ban]]