Fail2Ban

De SeRoM - Wiki
Aller à : navigation, rechercher

Introduction

Lors que l'on fait un peu attention à ses logs, on remarque bien vite que une machine avec une IP fixe sur internet se fait attaquer continuellement. Une des attaques fréquentes c'est le brute-force sur SSH.

Je me sens relativement à l’abri sur mon petit serveur. L'utilisateur root n'a pas le droit de se connecter via ssh (PermitRootLogin no), et j'ai un politique de mot de passe assez sévère pour le seul utilisateur capable de s'authentifier avec mot de passe.

Néanmoins, c'est assez lassant de voir ses log remplis par des tentatives d'authentifications. J'ai donc mis rapidos Fail2Ban en place.

Le principe est assez simple. Le démon Fail2Ban inspecte les logs et lorsqu'il repère un certain nombre de tentative, il injecte une règle dans IPTables pour bloquer l'IP source.

Note

Note

Il existe un système équivalant au niveau de PAM grâce au module pam_abl (Automatic Black-List).

Un exemple parlant peut-être trouvé ici: http://www.cromwell-intl.com/unix/ssh-2-access-control.html au paragraphe Automatic Black-List with PAM

Installation

 aptitude install fail2ban

On check que le démon est bien lancé en fin d'installation

 root@server:~# /etc/init.d/fail2ban status
 Status of authentication failure monitor:fail2ban is running.

Configuration

Tous les fichier de configurations se trouvent dans le répertoire: /etc/fail2ban/.

fail2ban.conf

C'est le fichier de configurations principal mais il est assez basique:

 [Definition]
 loglevel = 3
 logtarget = /var/log/fail2ban.log
 socket = /var/run/fail2ban/fail2ban.sock

On y retrouve le niveau de log (loglevel) où 3 équivaut aux message d'erreur, de warning et information. Ces logs sont stockés dans /var/log/fail2ban.log.

jail.conf

  • filter : Le nom du filtre qui doit être utilisé pour détecter les attaques. A chaque fois qu'une entré dans les log est matchée par le filtre, un compteur est incrémenté.
  • logpath (/var/log/messages): Chemin vers le fichier de log à filtrer.
  • maxretry (3): Nombre maximum de matchs avant que l'IP soit bannie.
  • findtime (600 sec): Durée avant la remise à zéro du conteur, s'il n'y a plus eu de mach.

The counter is set to zero if no match is found within "findtime" seconds.

  • bantime (600 sec): Durée pour laquelle l'adresse IP est bannie.

Liens