Installation de Jeedom stable sur un Pi : Erreur fail2ban

Bonjour,

Je viens juste d’installer Jeedom sur un Pi3B+ avec Bookworm 64 bits à jour de tout.
Source de l’installation : https://www.jeedom.com/install dans le contexte : su -

La page santé de Jeedom indique une erreur sur le service fail2ban :

Au cas ou cela est nécessaire, j’ai récupéré le log de l’installation de ce Jeedom

Etat du service :

pi@jeedev:~ $ sudo fail2ban-client status
2024-06-23 10:26:42,657 fail2ban                [2804]: ERROR   Failed to access socket path: /var/run/fail2ban/fail2ban.sock. Is fail2ban running?

Il n’y a pas de dossier /var/run/fail2ban/ sur cette machine, alors qu’il est bien présent sur un autre Jeedom.
Si je le créer manuellement (vu sur le net) il se supprime quand je lance le service sudo service fail2ban start (qui ne se lance pas du coup).

pi@jeedev:~ $ sudo systemctl status fail2ban
× fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
    Drop-In: /usr/lib/systemd/system/fail2ban.service.d
             └─override.conf
     Active: failed (Result: exit-code) since Sun 2024-06-23 10:10:59 CEST; 15min ago
   Duration: 3.066s
       Docs: man:fail2ban(1)
    Process: 574 ExecStart=/usr/bin/fail2ban-server -xf start (code=exited, status=255/EXCEPTION)
   Main PID: 574 (code=exited, status=255/EXCEPTION)
        CPU: 889ms

Jun 23 10:10:55 jeedev systemd[1]: Started fail2ban.service - Fail2Ban Service.
Jun 23 10:10:58 jeedev fail2ban-server[574]: 2024-06-23 10:10:58,708 fail2ban.configreader   [574]: WARNING 'allowipv6' not defined in 'Definition'. Using default one: 'auto'
Jun 23 10:10:58 jeedev fail2ban-server[574]: 2024-06-23 10:10:58,899 fail2ban                [574]: ERROR   Failed during configuration: Have not found any log file for sshd jail
Jun 23 10:10:58 jeedev fail2ban-server[574]: 2024-06-23 10:10:58,900 fail2ban                [574]: ERROR   Async configuration of server failed
Jun 23 10:10:59 jeedev systemd[1]: fail2ban.service: Main process exited, code=exited, status=255/EXCEPTION
Jun 23 10:10:59 jeedev systemd[1]: fail2ban.service: Failed with result 'exit-code'.

Il me semble que cela est débattue ici :
[BR]: Failed during configuration: Have not found any log file for sshd jail · Issue #3567 · fail2ban/fail2ban (github.com)

Avec un renvoi ici :
[BR]: fail2ban does not start on some debian/ubuntu systems - backend should probably be set to systemd on all systemd-based distros · Issue #3292 · fail2ban/fail2ban (github.com)

La solution que j’ai trouvé :

Editer le fichier :
sudo nano /etc/fail2ban/jail.conf

Commenter la ligne : backend = %(sshd_backend)s
La remplacer par : backend=systemd

Dans la section sshd :

[sshd]

# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode   = normal
port    = ssh
logpath = %(sshd_log)s
backend=systemd
# backend = %(sshd_backend)s

Redémarrage du service :
sudo service fail2ban start

Vérification du statut :
sudo service fail2ban status

● fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
    Drop-In: /usr/lib/systemd/system/fail2ban.service.d
             └─override.conf
     Active: active (running) since Sun 2024-06-23 12:01:33 CEST; 4s ago
       Docs: man:fail2ban(1)
   Main PID: 6610 (fail2ban-server)
      Tasks: 11 (limit: 762)
        CPU: 1.890s
     CGroup: /system.slice/fail2ban.service
             └─6610 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Jun 23 12:01:33 jeedev systemd[1]: Started fail2ban.service - Fail2Ban Service.
Jun 23 12:01:35 jeedev fail2ban-server[6610]: Server ready

N’étant pas un connaisseur de cet OS, je ne sais pas si c’est une solution propre.

1 « J'aime »

Bonjour,

C’est juste la configuration de fail2ban qui est incorrecte.
Il faut remplacer dans /etc/fail2ban/jail.conf, backend = %(sshd_backend)d par backend = systemd

ou créer une section sshd dans /etc/fail2ban/jail.d/jeedom.conf et y ajouter la définition de backend sans modifier le fichier jail.conf existant.

[sshd]
backend = systemd
1 « J'aime »

Bonjour,

Je viens de trouver, merci pour ta confirmation du coup.

C’est dans le 2eme liens que j’ai cité pour une possible solution.

Je m’étonne par contre, on a tous ce problème ou c’est juste sur les Pi ?

Je regarde ce soir mais je pense avoir le même souci sur une VM debian 12.

Je l’ai sur une VM virtualbox et sur une VM de mon NAS avec Debian 12.

Dans ta capture d’écran de la page santé, il y a aussi un pb de présentation: 1 seule colonne collée à droite.

Pour la page santé, je l’ai changé entre temps (la capture)
En ajoutant un simple plugin, comme Networks, la présentation est redevenue normale.

J’ai 3 plugins installés virtual, script et meteofrance et elle est toujours collée à droite.


Aucun des plugins installés n’a de santé (fonction health() ) ni de daemon

J’ai installé un plugin avec un Deamon (Networks par exemple), lui, à une Santé :wink:
=> Ce qui permet de retrouver la page santé dans le bon format.

Bonjour jpty

Je valide ta réponse :

créer une section sshd dans /etc/fail2ban/jail.d/jeedom.conf et y ajouter la définition de backend sans modifier le fichier jail.conf existant.

C’est plus propre je pense.
=> il faut faire une demande de modification je pense ?

Note pour vous deux, je confirme, le problème est bien aussi le présent sur ma VM (pas vu avant).

Oui, dans le fichier install/fail2ban.jeedom.conf qui est copié à l’installation de Jeedom dans /etc/fail2ban/jail.d/jeedom.conf

Je pense que c’est une modif lié à debian12 qui pousse vers systemd pour les logs
A voir si changer cela maintenant n’a pas un impact sur debian 11.

1 « J'aime »

Je pense qu’il faut statuer la dessus, je ne vais pas faire le PR ne sachant pas comment est gérer l’équivalent sur Debian 11 qui ne créer par ce défaut.

C’est le mode d’exécution de fail2ban qui a été modifié en Debian 12.

@Loic ?

Il faut juste trouver pourquoi et comment ça fonctionne en Debian 11.
Et vérifier que ca fonctionne.

La ca depose mes competences surtout que si ca marche pas pareils entre Debian 11 et Debian 12 alors je vois pas comment gérer…

Edit j’ai ouvert une issue la [BUG] Issue with fail2ban status · Issue #2705 · jeedom/core · GitHub pour le suivi il faudrait testé si avec la modification de fail2ban.jeedom.conf ca pose pas de soucis en Debian 11.

1 « J'aime »

Bonjour

J’ai installé 2 VM fraiches sous Proxmox:

  • Debian 11
  • Debian 12

Sur la Debian 11 : Installation de fail2ban le service est actif

Sur la Debian 12: Installation de fail2ban le service est failed

Ajout de la directive backend = systemd dans le fichier /etc/fail2ban/jail.d/defaults-debian.conf

Le service fail2ban est actif

Test de fail2ban : connexion en ssh sur la debian avec un mauvais mot de passe :

root@debian12:/var/log# cat fail2ban.log
2024-06-23 16:22:53,836 fail2ban.server         [1141]: INFO    --------------------------------------------------
2024-06-23 16:22:53,836 fail2ban.server         [1141]: INFO    Starting Fail2ban v1.0.2
2024-06-23 16:22:53,836 fail2ban.observer       [1141]: INFO    Observer start...
2024-06-23 16:22:53,845 fail2ban.database       [1141]: INFO    Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
2024-06-23 16:22:53,848 fail2ban.database       [1141]: WARNING New database created. Version '4'
2024-06-23 16:22:53,848 fail2ban.jail           [1141]: INFO    Creating new jail 'sshd'
2024-06-23 16:22:53,862 fail2ban.jail           [1141]: INFO    Jail 'sshd' uses systemd {}
2024-06-23 16:22:53,862 fail2ban.jail           [1141]: INFO    Initiated 'systemd' backend
2024-06-23 16:22:53,863 fail2ban.filter         [1141]: INFO      maxLines: 1
2024-06-23 16:22:53,878 fail2ban.filtersystemd  [1141]: INFO    [sshd] Added journal match for: '_SYSTEMD_UNIT=sshd.service + _COMM=sshd'
2024-06-23 16:22:53,878 fail2ban.filter         [1141]: INFO      maxRetry: 5
2024-06-23 16:22:53,879 fail2ban.filter         [1141]: INFO      findtime: 600
2024-06-23 16:22:53,879 fail2ban.actions        [1141]: INFO      banTime: 600
2024-06-23 16:22:53,879 fail2ban.filter         [1141]: INFO      encoding: UTF-8
2024-06-23 16:22:53,881 fail2ban.filtersystemd  [1141]: INFO    [sshd] Jail is in operation now (process new journal entries)
2024-06-23 16:22:53,881 fail2ban.jail           [1141]: INFO    Jail 'sshd' started
2024-06-23 16:26:43,646 fail2ban.filter         [1141]: INFO    [sshd] Found 192.168.1.166 - 2024-06-23 16:26:43
2024-06-23 16:26:49,415 fail2ban.filter         [1141]: INFO    [sshd] Found 192.168.1.166 - 2024-06-23 16:26:48
2024-06-23 16:26:53,826 fail2ban.filter         [1141]: INFO    [sshd] Found 192.168.1.166 - 2024-06-23 16:26:53
2024-06-23 16:27:02,665 fail2ban.filter         [1141]: INFO    [sshd] Found 192.168.1.166 - 2024-06-23 16:27:02
2024-06-23 16:27:07,915 fail2ban.filter         [1141]: INFO    [sshd] Found 192.168.1.166 - 2024-06-23 16:27:07
2024-06-23 16:27:07,968 fail2ban.actions        [1141]: NOTICE  [sshd] Ban 192.168.1.166
2024-06-23 16:27:07,974 fail2ban.utils          [1141]: ERROR   7f1d7cfad160 -- exec: { iptables -w -C f2b-sshd -j RETURN >/dev/null 2>&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-06-23 16:27:07,975 fail2ban.utils          [1141]: ERROR   7f1d7cfad160 -- stderr: '/bin/sh: 1: iptables: not found'
2024-06-23 16:27:07,975 fail2ban.utils          [1141]: ERROR   7f1d7cfad160 -- stderr: '/bin/sh: 1: iptables: not found'
2024-06-23 16:27:07,975 fail2ban.utils          [1141]: ERROR   7f1d7cfad160 -- stderr: '/bin/sh: 3: iptables: not found'

Dans le journal fail2ban : fail2ban banni l’adresse à la 6ème tentative.

Fail2ban essaye de créer une nouvelle règle dans iptables pour bannir l’adresse.
Iptables n’est pas installé , l’inscription de la nouvelle règle échoue.

Je peux me connecter avec le bon mot de passe sur la Debian12.

J’installe iptables sur la Debian12.

Je recommence le test avec le mauvais mot de passe, Je suis réellement banni.

Conclusion :
1- Fail2ban n’a pas été configuré proprement pour la Debian12
2- Si iptables n’est pas installé les adresses ne seront pas bannies bien que le service fail2ban est actif et OK dans Jeedom.
3- Ce n’est pas parce que le daemon fail2ban est OK dans Jeedom que le process est opérationnel
4- Il faut vérifier le journal fail2ban.log
5- La résolution de ce problème est hors de mes compétences et demande une étude plus approfondie et tests à la clé → équipe Jeedom.
6- Voir les impacts sur Jeedom → équipe Jeedom.

Cordialement

1 « J'aime »

Bonjour
Je pense que je vais pour le moment désactiver le status sur la page santé de fail2ban. On ne peut pas gérer les soucis de compatibilité de produits tiercé entre eux, trop de truc à faire sur jeedom pour pas gérer en plus les soucis des autres

Bonjour Loic

Ce qui est important c’est de connaitre les incidences du paramétrage de fail2ban sur Jeedom pour les effets de bord.
Si il n’y a pas de relation entre les 2 logiciels chacun peut paramétrer fail2ban à sa sauce.

Cordialement

Bonjour
C’est une sécurité en plus mais jeedom intègre déjà un fail2ban en interne donc pas d’impact sur la sécurité de jeedom. Après sur l’os c’est autre chose mais c’est pas forcément à jeedom de gérer ca

OK je comprends. :slightly_smiling_face: