Outils pour utilisateurs

Outils du site


netadmin:fail2ban

Ceci est une ancienne révision du document !


:TODO_DOCUPDATE:

Fail2ban

Analyse les journaux des différents services en se basant sur des expression rationnelles (regex) et isole automatiquement les IP générant un nombre trop élevé d'erreurs permettant de stopper les attaques en force brute.

Installation via le gestionnaire de paquets:

$ sudo apt-get install fail2ban
  • Les règles sont placées dans le dossier /etc/fail2ban/filter.d/.
  • Le fichier de conf s'obtient par copie et modification du fichier par défaut /etc/fail2ban/jail.conf
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Exceptions

Dans la section globale, on peut spécifier des IPs à ignorer (à ne jamais bannir).

[DEFAULT]

ignorself = true
ignoreip = 127.0.0.1/8 ::1

Notifications email

Définir les variables suivantes dans le fichier /etc/fail2ban/jail.local

destemail = user@domain
sendername = Fail2ban
sender = sender@domain
mta = mail
action = %(action_mwl)s

Protection du service ssh

Pour activer la surveillance du service ssh, vérifier la valeur de la directive enable dans la section [sshd]

Si le service SSH n'écoute pas sur le port par défaut, veiller à bien redéfinir la valeur de la directive port afin que la règle de filtrage netfilter générée par fail2ban soit correcte.
[sshd]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Recharger le fichier de configuration

$ sudo fail2ban-client reload

Test

Pour afficher l'état de l'ensemble des cellules:

$ sudo fail2ban-client status

Pour le détail de la cellule ssh:

$ sudo fail2ban-client status sshd

Usage

Une fois la configuration chargée, on peut accéder/modifier certaines valeurs à l'aide du client fail2ban:

# Déterminer combien de temps est bannie une ip pour ssh
$ fail2ban-client get sshd bantime
 
# Déterminer le nombre d'essais autorisé pour ssh
$ fail2ban-client get sshd maxretry

Pou modifier la configuration utiliser l'argument set

$ fail2ban-client set sshd maxretry 3

Pour bannir/autoriser manuellement les IPs:

# Interdire l'acces au service ssh a une IP
$ fail2ban-client set sshd banip 192.168.0.34
 
# Autoriser à nouveau une IP
$ fail2ban-client set sshd unbanip 192.168.0.34
Les valeurs spécifiées via la ligne de commande sont immédiatement effectives mais seront remplacées par celles définies dans les fichiers de configuration lorsque la configuration sera rechargée ou le service redémarré.

Déploiement

Sur serveurs en DMZ.

Alternatives

  • Tallow : plus léger, exploite les journaux systemd;
  • SSHGuard.

Références

netadmin/fail2ban.1666453687.txt.gz · Dernière modification : 2022/10/22 15:48 de yoann