Outils pour utilisateurs

Outils du site


www.fail2ban

fail2ban

Utilitaire de protection contre les attaques par //brute-force//

Au delà d'un certain nombre d'échecs, la machine à l'origine de la tentative de connexion est blacklistée au moyen d'une règle iptables.

Les échecs sont déterminés par des Regex identifiants certaines lignes dans les fichiers de logs adéquats.

Le blacklistage est temporaire.

Différents services peuvent être protégés par ce mécanisme (ssh, apache, mail, …)

Configuration

Tout se fait via le fichier /etc/fail2ban/jail.conf

Le seul service activé par défaut est ssh

Penser à :

  • augmenter la durée de ban (bantime)
  • augmenter l'intervalle entre 2 connexions (findtime) pour se prémunir des slow scans.
  • mettre les machines de confiance en “whitelist” (ignoreip)
  • modifier les directives port si vos services n'écoutent pas sur le port par défaut (ex ssh)

Intérêt par rapport à denyhost

Une interface ligne de commande (fail2ban-client) permet de manipuler la configuration et l'état du service. Le principal intérêt par rapport à denyhost est la facilité de supprimer un ban, et le nombre de rêgles incluses.

Création d'une nouvelle règle

Il faut créer une section correspondante dans le fichier /etc/fail2ban/jail.conf indiquant notamment:

  • son état enabled
  • le port / service a surveiller
  • le filtre à utiliser (le nom du fichier dans /etc/fail2ban/filter.d sans l'extension .conf
  • le fichier de log à scanner pour détecter les tentatives de connexion
  • bantime si on souhaite une durée de blacklistage personnalisée.

Il faut également créer un fichier filtre dont le nom correspond au paramètre filter ci-dessus, dans le répertoire /etc/fail2ban/filter.d. Ce fichier doit notamment spécifier une regex correspondant à une ligne de log insérée lors d'une tentative de connexion en échec.

[Definition]
failregex =  badlogin: .*\[<HOST>\] plaintext [a-zA-Z0-9]+ SASL\(-13\): authentication failure: checkpass failed$

Il est conseillé de mettre au point cette regex à l'aide de la commande fail2ban-regex:

fail2ban-regex /var/log/mail.log 'badlogin: .*\[<HOST>\] pl

Cas pratique: protection wordpress

beaucoup d'attaque se font via xmlrpc.php

On peut utiliser fail2ban pour mettre à la porte les indésirables qui émettent trop de requètes sur cette url

source: http://powtos.fr/961-attaques-sur-xmlrpc-php-wordpress/

étape 1: mise en œuvre de la "prison"

Créer le fichier /etc/fail2ban/jail.d/02-xmlrpc.conf qui définit une jail qui va associer:

  1. un ou plusieurs fichiers de log à surveiller (noter l'indentation pour les noms de fichier)
  2. un filtre de recherche, défini plus tard
  3. une action - ici un blocage via iptables
  4. une durée d'interdiction
  5. une nombre de requètes avant exécution de l'action
[xmlrpc]
enabled = true
filter = xmlrpc
action = iptables-multiport[name=xmlrpc, port="http,https", protocol=tcp]
logpath = /var/log/httpd/jazzochateau.log
          /var/log/httpd/karavel-access.log
                                                                                                            
maxretry = 3
bantime = 100000

Créer ensuite le fichier /etc/fail2ban/filter.d/xmlrpc.conf qui va nous permettre de définir la chaîne de caractère qui va entraîner la mise à la porte de l'intru si elle est détectée dans les logs.

Il est important que le nom du fichier, sans l'extension .conf soit le même que la valeur de la directive filter dans la définition du filtre.

[Definition]
failregex = <HOST>.*POST/xmlrpc\.php   
ignoreregex =

# vim: set filetype=dokuwiki:

www.fail2ban.txt · Dernière modification: 2016/08/19 22:07 (modification externe)