J'ai un fail2ban configuré comme ci-dessous:
Cela fonctionne parfaitement et je veux que cela reste tel qu'un utilisateur valide ait la possibilité de réessayer la connexion après le délai d'expiration. Maintenant, je veux implémenter une règle où si la même IP est détectée comme attaque et bloquée, débloquée 5 fois, bloque définitivement l'IP et ne débloque plus jamais. Cela peut-il être réalisé avec fail2ban seul ou dois-je écrire mon propre script pour ce faire?
Je fais ça en centimes.
Avant 0.11, il y avait pas de fonctionnalité par défaut ou de paramètre dans fail2ban pour y parvenir. Mais à partir de la prochaine version 0.11, le temps d'interdiction est calculé automatiquement et augmente de façon exponentielle à chaque nouvelle infraction, ce qui, à long terme, signifiera un blocage plus ou moins permanent.
Jusque-là, votre meilleure approche consiste probablement à configurer fail2ban pour surveiller son propre fichier journal . Il s'agit d'un processus en deux étapes ...
Nous pourrions avoir besoin de créer un filtre pour vérifier [~ # ~] interdiction [~ # ~] est dans le fichier journal (fichier journal de fail2ban)
Nous devons définir la prison , semblable à ce qui suit ...
[fail2ban] enabled = true filter = fail2ban action = iptables-allports [name = fail2ban] logpath =/path/to /fail2ban.log[.____.[# findtime: 1 jour findtime = 86400 # bantime: 1 an bantime = 31536000
Techniquement, ce n'est pas un bloc permanent , mais seulement des blocs pour un an (que l'on peut augmenter aussi).
Quoi qu'il en soit, pour votre question (cela peut-il être réalisé avec fail2ban seul ou je dois écrire mon propre script pour le faire?) ... l'écriture de son propre script pourrait bien fonctionner. Configuration du script pour extraire les adresses IP interdites fréquemment puis les mettre dans /etc/hosts.deny
est ce que je recommanderais.
Je crois que si vous mettez bantime = -1
dans cette section de configuration, c'est un bloc permanent.
Phil Hagen a écrit un excellent article sur ce sujet. " Interdire définitivement les récidivistes avec fail2ban ".
Sa suggestion est la même que Pothi mais fournit un guide étape par étape.
Cela comprenait:
Pour développer la réponse de Chin, c'est assez simple. Modifiez simplement les 2 paramètres dans /etc/fail2ban/jail.local
pour correspondre à vos préférences.
# ban time in seconds. Use -1 for forever. Example is 1 week.
bantime = 604800
# number of failures before banning
maxretry = 5
fail2ban a déjà une prison pour interdire la récidive. Si vous regardez /etc/fail2ban/jail.conf
, vous trouverez:
# Jail for more extended banning of persistent abusers
# !!! WARNING !!!
# Make sure that your loglevel specified in fail2ban.conf/.local
# is not at DEBUG level -- which might then cause fail2ban to fall into
# an infinite loop constantly feeding itself with non-informative lines
[recidive]
enabled = false
filter = recidive
logpath = /var/log/fail2ban.log
action = iptables-allports[name=recidive]
sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]
bantime = 604800 ; 1 week
findtime = 86400 ; 1 day
maxretry = 5
[recidive]
enabled = true
bantime = 31536000 ; 1 year
findtime = 18144000 ; 1 month
maxretry = 2
Pour vérifier votre niveau de connexion, vous pouvez faire: fail2ban-client get loglevel
.
Avec l'ancienne version de fail2ban, vous pouvez obtenir ce bug .
Allez dans vim, ouvrez /etc/fail2ban/jail.conf
et juste modifier après fail2ban service restart
:
# "bantime" is the number of seconds that a Host is banned.
bantime = ***1296000***
# A Host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = ***60000***
# "maxretry" is the number of failures before a Host get banned.
maxretry = ***3***