Facbook viewat  Flickr
Accueil du site > Tutoriels > Configurer Fail2Ban sur un serveur dédié sous release 3 OVH (CentOS - (...)

Linux / CentOS / Ovh release 3 / Fail2ban

Configurer Fail2Ban sur un serveur dédié sous release 3 OVH (CentOS - 64bits)

Hébergement / serveur

1 vote

Publié le samedi 13 décembre 2014

Fail2Ban : fonctionnement et principes :

Fail2Ban scanne les fichiers logs du serveur, afin de détecter les tentatives d’intrusion et les attaques brutes forces. Une fois les attaques repérées, les IP détectées sont rajoutées dans les IP-Tables automatiquement et bannis pour la durée définie par l’utilisateur. On peut créer ses propres filtres pour tester les ports ou services que l’on souhaite (courrier, apache, ftp, ...)

  • Les filtres sont définis et stockés dans le dossier : /etc/fail2ban/filter.d
  • Il sont appelés et configurés dans : /etc/fail2ban/jail.conf

Les commandes essentielles de Fail2Ban :

  • Afficher la liste des prisons (jails) de Fail2Ban :

fail2ban-client status

  • Afficher la liste des IP bloquées dans IP-Tables :

iptables -L -n

  • Afficher la liste des règles Fail2Ban sur IP-Tables :

iptables -S | grep fail2ban

  • Recharger la configuration de Fail2Ban :

fail2ban-client reload

  • Redémarrer Fail2Ban :

/etc/init.d/fail2ban restart

Le fichier de configuration principal : jail.conf

Il est situé dans : /etc/fail2ban/jail.conf

ignoreip  : il s’agit de la liste des IP qui doivent être ignorée par Fail2Ban. R&jouter le Localhost (127.0.0.1) + l’IP de votre serveur (ici 12.12.12.12 dans l’exemple).

ignoreip = 127.0.0.1 12.12.12.12

findtime : Il s’agît du temps d’analyse des fichiers log par Fail2Ban. Il est exprimé en secondes. Exemple : 3600 = 1 heure, 86400 = 1 jour, 604800 = 1 journée.

ATTENTION : Un findtime trop long agît sur les performances serveurs, en obligeant Fail2Ban à analyser de gros fichiers log.

findtime = 600

Bantime : Il s’agît de la durée du blocage de l’IP repérée par Fail2Ban.

bantime = 86400

La créations de filtres :

Pour rappel, ils sont stockés dans le dossier suivant : /etc/fail2ban/filter.d

Un filtre pour tester les intrusions en SSH :

Le filtre sshd, stocké dans filter.d :

# Fail2Ban filter for openssh
#
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf
[Definition]
_daemon = sshd
failregex = ^%(__prefix_line)s(?:error: PAM: )?[aA]uthentication (?:failure|error) for .* from <HOST>( via \S+)?\s*$
           ^%(__prefix_line)s(?:error: PAM: )?User not known to the underlying authentication module for .* from <HOST>\s*$
           ^%(__prefix_line)sFailed \S+ for .*? from <HOST>(?: port \d*)?(?: ssh\d*)?(: (ruser .*|(\S+ ID \S+ \(serial \d+\) CA )?\S+$
           ^%(__prefix_line)sROOT LOGIN REFUSED.* FROM <HOST>\s*$
           ^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from <HOST>\s*$
           ^%(__prefix_line)sUser .+ from <HOST> not allowed because not listed in AllowUsers\s*$
           ^%(__prefix_line)sUser .+ from <HOST> not allowed because listed in DenyUsers\s*$
           ^%(__prefix_line)sUser .+ from <HOST> not allowed because not in any group\s*$
           ^%(__prefix_line)srefused connect from \S+ \(<HOST>\)\s*$
           ^%(__prefix_line)sReceived disconnect from <HOST>: 3: \S+: Auth fail$
           ^%(__prefix_line)sUser .+ from <HOST> not allowed because a group is listed in DenyGroups\s*$
           ^%(__prefix_line)sUser .+ from <HOST> not allowed because none of user's groups are listed in AllowGroups\s*$
ignoreregex =
# DEV Notes:
#
#   "Failed \S+ for .*? from <HOST>..." failregex uses non-greedy catch-all because
#   it is coming before use of <HOST> which is not hard-anchored at the end as well,
#   and later catch-all's could contain user-provided input, which need to be greedily
#   matched away first.
#
# Author: Cyril Jaquier, Yaroslav Halchenko, Petr Voralek, Daniel Black

L’appel du filtre dans le fichier jail.conf

[ssh] // Nom du filtre
enabled  = true // activation (true ou false)
port     = ssh // port à tester
filter   = sshd // le nom du filtre (nom dans le dossier filter.d)
logpath  = /var/log/auth.log // le chemin des logs à analyser.
maxretry = 6 // Le nombre de tentatives maximum autorisées.

Voilà pour l’essentiel, je complèterai avec des filtres à mesure de leur mise en place.

Répondre à cet article

Plan du site | Contact | Suivre la vie du site RSS 2.0