Fail2ban ne fonctionne pas

Tags: #<Tag:0x00007f63f1919338>

Bonjour,

J’ai installé récemment mon fail2ban sur un serveur de test sur une debian 12. Je suis bien conscient qu’il serait nécessaire de créer un « jail local », mais pour le moment je veux tester sur jail conf. J’ai changé les paramètres de jail conf , voici un petit résumé des paramètres qui me semble important :

[DEFAULT]
ignorecommand =
bantime  = 1h
findtime  = 1h
maxretry = 3
maxmatches = %(maxretry)s
backend = auto
usedns = warn
logencoding = auto
enabled = true
mode = normal
filter = %(__name__)s[mode=%(mode)s]
destemail = root@localhost
sender = root@<fq-hostname>


mta = sendmail
protocol = tcp

chain = <known/chain>
port = 0:65535
fail2ban_agent = Fail2Ban/%(fail2ban_version)s

banaction = nftables-multiport
banaction_allports = nftables-allports


action_ = %(banaction)s[port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]

action_mw = %(action_)s
            %(mta)s-whois[sender="%(sender)s", dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]


action_mwl = %(action_)s
             %(mta)s-whois-lines[sender="%(sender)s", dest="%(destemail)s", logpath="%(logpath)s", chain="%(chain)s"]


action_xarf = %(action_)s
             xarf-login-attack[service=%(__name__)s, sender="%(sender)s", logpath="%(logpath)s", port="%(port)s"]
action_cf_mwl = cloudflare[cfuser="%(cfemail)s", cftoken="%(cfapikey)s"]
                %(mta)s-whois-lines[sender="%(sender)s", dest="%(destemail)s", logpath="%(logpath)s", chain="%(chain)s"]


action_blocklist_de  = blocklist_de[email="%(sender)s", service="%(__name__)s", apikey="%(blocklist_de_apikey)s", agent="%(fail2ban_>

action_abuseipdb = abuseipdb
action = %(action_)s
# JAILS
#

#
# SSH servers
#

[sshd]
#mode   = normal
enabled = true
port    = ssh
action = %(action_)s
filter  = sshd
logpath = /var/log/auth.log  
backend = auto
maxretry = 3
bantime = 1h

Je précise que le auth.log est bien alimenté, et que lorsque je fais systemctl status fail2ban, il est bien actif.
Cependant, lorsque je rate exprès mes connexions en ssh avec mobaxtern sur mon serveur, le max retry ne fonctionne pas et le ban non plus.

Pouvez-vous m’aidez ? Merci d’avance

Bonjour,
AS-tu quelque chose dans les logs de fail2ban?

Merci de votre réponse rapide. J’ai été voir suite à votre conseil le contenu de fail2ban.log et voilà le résultat :

2024-03-26 10:23:29,681 fail2ban.filter         [1313]: INFO    [sshd] Found 192.168.185.196 - 2024-03-26 10:23:29
2024-03-26 10:24:57,681 fail2ban.filter         [1313]: INFO    [sshd] Found 192.168.185.196 - 2024-03-26 10:24:57
2024-03-26 10:25:45,936 fail2ban.filter         [1313]: INFO    [sshd] Found 192.168.185.196 - 2024-03-26 10:25:45
2024-03-26 10:25:46,516 fail2ban.actions        [1313]: NOTICE  [sshd] Ban 192.168.185.196
2024-03-26 10:25:46,542 fail2ban.utils          [1313]: ERROR   7f752e785480 -- exec: { iptables -w -C f2b-sshd -j RETURN >/dev/null2 &1; } || { iptables -w -N f2b-sshd || true; iptables -w -A f2b-sshd -j RETURN; } for proto in $(echo 'tcp' | sed 's/,/ /g'); do
{ iptables -w -C INPUT -p $proto -m multiport --dports ssh -j f2b-sshd >/dev/null 2>&1; } || { iptables -w -I INPUT -p $proto -m multiport --dports ssh -j f2b-sshd; } done
2024-03-26 10:25:46,543 fail2ban.utils          [1313]: ERROR   7f752e785480 -- stderr: '/bin/sh: 1: iptables: not found'
2024-03-26 10:25:46,543 fail2ban.utils          [1313]: ERROR   7f752e785480 -- stderr: '/bin/sh: 1: iptables: not found'
2024-03-26 10:25:46,544 fail2ban.utils          [1313]: ERROR   7f752e785480 -- stderr: '/bin/sh: 3: iptables: not found'
2024-03-26 10:25:46,544 fail2ban.utils          [1313]: ERROR   7f752e785480 -- returned 127

2024-03-26 10:25:46,544 fail2ban.utils          [1313]: INFO    HINT on 127: "Command not found".  Make sure that all commands in "{ iptables -w -C f2b-sshd -j RETURN >/dev/null 2>&1; } || { iptables -w -N f2b-sshd || true; iptables -w -A f2b-sshd -j RETURN }\nfor proto in $(echo 'tcp' | sed 's/,/ /g'); do\n{ iptables -w -C INPUT -p $proto -m multiport --dports ssh -j f2b-sshd /dev/null 2>&1; } || { iptables -w -I INPUT -p $proto -m multiport --dports ssh -j f2b-sshd; }\ndone" are in the PATH of fail2ban-server process (grep -a PATH= /proc/`pidof -x fail2ban-server`/environ). You may want to start "fail2ban-server -f" separately, initiate it with "fail2ban-client reload" in another shell session and observe if additional informative error messagrately, initiate it with "fail2ban-client reload" in another shell session and observe if additional informative error messag>
2024-03-26 10:25:46,544 fail2ban.actions        [1313]: ERROR   Failed to execute ban jail 'sshd' action 'iptables-multiport' info 'ActionInfo({'ip': '192.168.185.196', 'family': 'inet4', 'fid': <function Actions.ActionInfo.<lambda> at 0x7f752e8dd120>, 'raw-ticket': <function Actions.ActionInfo.<lambda> at 0x7f752e8dd8a0>})': Error starting action Jail('sshd')/iptables-multiport: 'Script error'  
            
[1313]: INFO    [sshd] Found 192.168.185.196 - 2024-03-26 10:25:49

Je ne comprend pas trop pourquoi il parle de iptables alors que j’ai renseigné dans le fichier jail.conf, que je souhaitais utilser nftables.

Merci de votre aide

Le fail2ban est fonctionnel désormais après avoir installé iptables. Cependant cela me semble étrange car dans le jail.conf j’ai renseigné nftables en action.

Cependant j’ai mon fichier jail.local qui est créé mais rien n’est modifié, et donc l’action est jail.iptables. Peut-être que le fichier jail.local prend le dessus sur jail.conf ??

iptables est un frontal à nftabels. Mais comme il est référencés dans fail2ban, tu ne peux pas te contenter de nftables.

Pour la partie jail je ne sais pas par contre.
Active le debug pour en savoir plus.

Merci pour cette réponse, cela m’a beaucoup aidé ! D’autres questions me viennent mais sur d’autres sujet alors peut-être à bientot sur d’autres questions !

1 J'aime