Fail2ban déporté sur reverse proxy swag (nginx)

A ma connaissance, pas de possibilité de déclencheur provoqué.

Salut,

Tout d’abord par rapport au statut http, lorsqu’un user est banni par jeedom, c’est une 404 qui est renvoyée donc tu peux intercepter ca sur le reverse proxy; pas pour une authentification ratée mais un ban oui
et l’ip sera donc ban après x tentatives échouées; je pense même que c’est ce qu’y a le plus de sens

Par contre en voulant tester, j’ai trouvé un bug sur les appels à jeeApi (les autres pages ne semblent pas affectées mais je n’ai pas tout vérifié)

La session n’est pas correctement initialisée et par conséquent isBan ne récupère jamais la variable de session « failed_count » et donc ne banni jamais les tentatives sur jeeApi.

Je propose le fix ici security fix: session not always initialized before accessing session data by Mips2648 · Pull Request #2622 · jeedom/core · GitHub et il devrait couvrir tous les cas similaires (si d’autres pages étaient concernées)

@Loic si tu peux regarder rapidement :wink:


Concernant la demande d’avoir un autre trigger (ce qui était mon but initial), j’ai fait un autre PR: new event ip_ban in case of ban (to use un scenario) by Mips2648 · Pull Request #2623 · jeedom/core · GitHub
Cela permet d’avoir un nouveau trigger de scénario dans le cas d’une tentative d’accès depuis une ip bannie:
image

avec en tag l’ip et l’heure en timestamp:
voici les logs en exemple

------------------------------------
[2024-05-11 12:47:31][SCENARIO] -- Début : Scenario execute sur evenement : #ip_ban#. Tags : {"ip":"x.x.x.x","datetime":1715424240}
[2024-05-11 12:47:31][SCENARIO] Fin correcte du scénario

l’ip reçue sera non masquée bien sur, ici c’est juste pour l’exemple

attention avec ce genre de trigger, potentiellement ca peut déclencher très souvent :wink:

3 « J'aime »

Bonjour,
Merci pour les 2 PR, j’ai validé de mon coté reste a attendre la validation coté Jeedom SAS

1 « J'aime »

Bonjour

Si j’ai bien compris, il y a 2 mécanismes de bannissement, fail2ban et le mécanisme de Jeedom.
Est il possible de rassembler les adresses ip bannies en dissociant les 2 mécanismes soit dan le core de Jeedom avec affichage dans la page sécurité ou dans le plugin fail2ban de Mips. Cela simplifierait les recherches et rassurerait les utilisateurs sur la sécurité.

Cordialement

Je n’ai pas bien compris:

  • oui jeedom banni les ips lorsque trop de tentatives de connexion échouées, les ip bannies sont déjà visible dans la page sécu:
  • en plus de ça, tu peux (ou pas) avoir fail2ban actif qui fonctionne indépendamment de jeedom sur base des logs apache

Bonjour Mips

D’un côté on a fail2ban qui bannit des adresses ip, non visibles par l’utilisateur sauf utilisation de ton plugin et de l’autre le mécanisme de Jeedom qui bannit des adresses ip visibles dans la page sécurité.
Cela ne me parait pas très sain. Il serait souhaitable que l’ensemble soit regroupé sur une seule page soit dans le core ou dans ton plugin.

Sauf que fail2ban est pas toujours là alors que le système de ban interne de jeedom si. Fail2ban s’occupe aussi d’autre type de ban (ssh et autre) c’est pas le cas de jeedom. Même si la finalité est la même les 2 sont complètement différent et ne vise pas la même chose. De plus jeedom n’a pas vocation à une interface web pour un os mais un système domotique. Il apporte une couche de gestion de l’os dans certain cas mais il va déjà trop loin.

1 « J'aime »

Bonjour Loic

Je suis d’accord avec toi, d’où l’intérêt du plugin de Mips pour des utilisateurs qui veulent superviser la sécurité plus finement au moins sur fail2ban et si la supervision de la sécurité de Jeedom était aussi intégré dans son plugin cela n’en serait que mieux.

Waouh quelle machine !!!

Heu pour le 404 je reste perplexple car mon reverse proxy ne voit que des HTTP POST 200 de jeedom et jamais un 404 lors du ban. (alors que c’est ok sur d’autre site web que j’heberge, où j’ai loupé un truc sur mon reverse proxy swag qui analyse tout ce qui passe sur access.log y’a pas de raison).

Pour le trigger, bah c’est nikel !!! :partying_face:

Merci encore :+1:

Je vais re-tester pour le 404 car c’est sensé être le cas

Peux-tu donner ta page santé stp?

edit:
sur un debian12/php8 j’ai bien une 404 lors d’un ban (donc surement le cas pour les versions antérieurs)
image

Debian 10 php 7.3

Debian 12 je suis pas trop joueur, deja que debian 11 j’ai des fuites mémoires dans tous les sens avec python 3.9.2.