[Réglé] Fail2ban et Mageia 7
Ça marche pô.
Système et matériels / Réseau Internet Wi-Fi

gustine Membre non connecté
-
- Voir le profil du membre gustine
- Inscrit le : 26/09/2010
- Site internet
- Groupes :
J'utilise toujours Mageia 7 pour mon serveur web car le logiciel que j'utilise n'est pas compatible avec php 8.
J'ai activé fail2ban (le serveur tourne) pour essayer de bloquer par exemple les rigolos qui essayent d'accéder à phpmyadmin ou à la configuration Wordpress (que je n'utilise pas). De toute évidence, je ne l'ai pas bien paramétré car rien ne se passe ; le lien avec shorewall ne semble pas s'établir.
Dans quel répertoire faut-il placer jail.local ?
Dans la section [INCLUDES] faut-il pointer sur paths-fedora.conf ? Les chemins sont-ils vraiment ceux de Mageia 7 ?
Merci d'avance.
Édité par gustine Le 13/08/2021 à 10h38
I7-8700 - UHD Graphics 630 - 2x8 MO - Mageia 9 - Mate - serveur LAMP.

squid-f Membre non connecté
-
- Voir le profil du membre squid-f
- Inscrit le : 03/04/2016
- Groupes :
-
Membre d'Honneur

Quels sont les filtres que tu veux appliquer ?
C'est un serveur apache ou nginx?
jail.local est à placer dans /etc/fail2ban
Je te conseille de limiter jail.local au changement de paramètres par défaut et de créer des fichiers jail spécifiques à ce que tu veux filtrer dans /etc/fail2ban/jail.d
Pour ma part, j'ai aussi créé un fichier /etc/fail2ban/paths-overrides.local inspiré du paths-fedora.conf car je trouve étrange que Mageai importe le paths-debian.conf
A rediscuter en fonction de ce que tu veux faire.
A+
« Plus les hommes seront éclairés et plus ils seront libres. » ~ Voltaire

gustine Membre non connecté
-
- Voir le profil du membre gustine
- Inscrit le : 26/09/2010
- Site internet
- Groupes :
Mon jail.local est bien dans /etc/fail2ban. Il pointe sur paths-fedora.conf et non le paths-debian.conf que je trouvais moi aussi suspect.
Dans le sous-répertoire filter.d j'ai par exemple un fichier apache-phpmyadmin.conf qui ressemble ça :
[Definition]
docroot = /var/www
badadmin = PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2
failregex = [[]client <HOST>[]] File does not exist: %(docroot)s/(?:%(badadmin)s)
ignoreregex =
I7-8700 - UHD Graphics 630 - 2x8 MO - Mageia 9 - Mate - serveur LAMP.

squid-f Membre non connecté
-
- Voir le profil du membre squid-f
- Inscrit le : 03/04/2016
- Groupes :
-
Membre d'Honneur
Peux-tu poster cela ?
A+
Edit: apache-phpmyadmin.conf a été créé par toi ? Je ne le trouve pas dans les configurations par défaut de fail2ban.
Édité par squid-f Le 12/08/2021 à 12h08
« Plus les hommes seront éclairés et plus ils seront libres. » ~ Voltaire

gustine Membre non connecté
-
- Voir le profil du membre gustine
- Inscrit le : 26/09/2010
- Site internet
- Groupes :
[apache-phpmyadmin]
enabled = true
port = http,https
filter = apache-phpmyadmin
maxretry = 1
I7-8700 - UHD Graphics 630 - 2x8 MO - Mageia 9 - Mate - serveur LAMP.

squid-f Membre non connecté
-
- Voir le profil du membre squid-f
- Inscrit le : 03/04/2016
- Groupes :
-
Membre d'Honneur
Edit: et quelle banaction demandes-tu ?
Édité par squid-f Le 12/08/2021 à 12h28
« Plus les hommes seront éclairés et plus ils seront libres. » ~ Voltaire

gustine Membre non connecté
-
- Voir le profil du membre gustine
- Inscrit le : 26/09/2010
- Site internet
- Groupes :
- Dans paths-fedora.conf : apache_error_log = /var/log/httpd/error_log et apache_access_log = /var/log/httpd/access_log
- Dans fail.local : banaction = shorewall
Est-ce que ça répond à la question ?
I7-8700 - UHD Graphics 630 - 2x8 MO - Mageia 9 - Mate - serveur LAMP.

squid-f Membre non connecté
-
- Voir le profil du membre squid-f
- Inscrit le : 03/04/2016
- Groupes :
-
Membre d'Honneur
En fait, permets moi de t'expliquer la logique de fail2ban, avec mes mots. Désolé si tu as déjà compris tout cela ou si c'est trop simpliste.
Fail2ban va lire les fichiers log à la recherche de mots clés liés généralement à des erreurs de requête ou d'accès.
Pour cela, il va utiliser les règles que tu as défini dans /etc/fail2ban/filter.d.
Ensuite, selon tes critères (nombre d'essais entre autres), il va effectuer une action (banaction) que tu auras définie ; en général, bloquer l'IP du vilain par le pare-feu.
Il faut donc indiquer à fail2ban quel log inspecter, quoi chercher et quelle action mettre en œuvre.
Si tu as défini ton propre filter, c'est que tu as dû potasser un peu. Ou l'as-tu récupéré de quel part ?
Pour savoir ce que tu veux filtrer, pourrais-tu poster ici le fichier log d'erreur (error.log ou error_log) qui doit se trouver dans /var/log/httpd/ ou /var/log/apache2 ?
Désolé, j'utilise Nginx et non Apache, je ne peux pas être plus précis à l'instant. Si tu ne trouves pas, je chercherai.
Ce qu'il y a depuis le dernier boot me suffit. Tu enlèves ton adresse IP et le mac.
Cela va permettre de mieux cibler le filtre.
Tu peux aussi commencer à tester le filter apache-botsearch.conf
Pour cela inclus cela dans ton jail.local :
Code BASH :
[apache-botsearch] enabled = true filter = apache-botsearch backend = polling journalmatch = bantime = 30m findtime = 1800 banaction = shorewall logpath = /var/log/apache2/error.log
ATTENTION : logpath doit être le fichier d'erreur d'apache. Vérifie bien que c'est celui-là.
Edite ensuite /etc/fail2ban/action.d/shorewall.conf
pour remplacer blocktype = reject
par blocktype = drop
Pour finir, édite /etc/shorewall/shorewall.conf
pour remplacer BLACKLIST="NEW,INVALID,UNTRACKED"
par BLACKLIST="ALL"
C'est pour bloquer l'IP dès que fail2ban la bannit.
Pour finir, en root :
Code BASH :
shorewall reload systemctl reload fail2ban
Au bout de quelques temps, tu devrais voir fail2ban en action. Par exemple, en faisant un :
Code BASH :
tail /var/log/fail2ban.log
qui devrait indiquer quelque chose comme :
2021-08-12 12:16:00,654 fail2ban.filter [2323]: INFO [apache-botsearch] Found ip_du_vilain - 2021-08-12 12:16:00
La commande ci-dessous, en root, de donne le statut du filter à l'instant :
Code BASH :
fail2ban-client status apache-botsearch
La commande suivante est aussi instructive :
Code BASH :
shorewall show log
Tiens nous au courant.
A+
« Plus les hommes seront éclairés et plus ils seront libres. » ~ Voltaire

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

gustine Membre non connecté
-
- Voir le profil du membre gustine
- Inscrit le : 26/09/2010
- Site internet
- Groupes :
Voilà le genre d'erreur que je veux traiter : [Thu Aug 12 16:19:52.452692 2021] [authz_core:error] [pid 26358] [client xx.xxx.12.17:54644] AH01630: client denied by server configuration: /usr/share/phpmyadmin
J'ai ajouté la ligne logpath = /var/log/httpd/error_log
modifié /etc/fail2ban/action.d/shorewall.conf et /etc/shorewall/shorewall.conf
et relancé les deux services comme indiqué dans ton message.
Pour tester j'ai tenté d'accéder à phpmyadmin via un VPN. Même message d'erreur. La commande fail2ban-client status apache-phpmyadmin donne failed = 0 et banned = 0. Je n'ai rien trouvé d'autre de récent dans fail2ban.log que Jail 'apache-phpmyadmin' started
Pour finir, le regex est indiqué plus haut : failregex = [[]client <HOST>[]] File does not exist: %(docroot)s/(?:%(badadmin)s)
mais il n'est peut-être pas adapté au vrai message d'erreur.
I7-8700 - UHD Graphics 630 - 2x8 MO - Mageia 9 - Mate - serveur LAMP.

squid-f Membre non connecté
-
- Voir le profil du membre squid-f
- Inscrit le : 03/04/2016
- Groupes :
-
Membre d'Honneur
gustine : effectivement, le filtre ne correspond pas à ce que tu veux filtrer. Par contre, apache-auth.conf pourrait faire le job.
Peux-tu me confirmer le fichier log d'où tu as extrait ce que tu veux bloquer ?
Pour vérifier que apache-auth.conf bloque ce que tu souhaites, tu peux exécuter, en root :
Code BASH :
fail2ban-regex /var/log/le_fichier_log /etc/fail2ban/filter.d/apache-auth.conf -v
Sinon, il va falloir bosser sur le filtre.
A+
« Plus les hommes seront éclairés et plus ils seront libres. » ~ Voltaire

xuo Membre non connecté
-
- Voir le profil du membre xuo
- Inscrit le : 23/10/2011
- Groupes :
Le debug des expressions régulières de fail2ban est ardu (sans doute car je ne connais pas le Python).
Pour les déboguer :
fail2ban-regexp <log file> /etc/fail2ban/filter.d/xxx.conf --print-all-missed
Cela permet de savoir si une erreur attendue dans le log est bien capturée par l'expression régulière. J'ai déjà eu des problèmes car j'avais un format de date (français je crois) qu'il ne comprenait pas.
Xuo.

gustine Membre non connecté
-
- Voir le profil du membre gustine
- Inscrit le : 26/09/2010
- Site internet
- Groupes :
@squid-f
J'ai lancé la commande fail2ban-regex /var/log/fail2ban.log /etc/fail2ban/filter.d/apache-auth.conf -v et la même avec apache-phpmyadmin.
Ça retourne Lines: 7584 lines, 0 ignored, 0 matched, 7584 missed dans les deux cas.
@xuo
J'ai lancé la commande fail2ban-regex /var/log/fail2ban.log /etc/fail2ban/filter.d/apache-auth.conf --print-all-missed et la même avec apache-phpmyadmin.
Ça semble retourner uniquement les messages d'arrêts et de démarrages de fail2ban mais rien qui montrerait que fail2ban analyse les logs.
Je vais relire vos messages, réfléchir un peu (ça peut aider) et si je trouve la solution, je reviendrai vous en informer.
Merci à tous.
Édité par gustine Le 12/08/2021 à 20h34
I7-8700 - UHD Graphics 630 - 2x8 MO - Mageia 9 - Mate - serveur LAMP.

squid-f Membre non connecté
-
- Voir le profil du membre squid-f
- Inscrit le : 03/04/2016
- Groupes :
-
Membre d'Honneur
ce n'est pas /var/log/fail2ban.log qu'il faut spécifier comme fichier log mais celui d'apache.
Peux-tu d'ailleurs me confirmer le nom de ce fichier ? Si c'est /var/log/httpd/error_log comme l'un de tes posts le suggère, as-tu bien vérifié qu'il existe et qu'il contient ce que tu cherches à filtrer ? C'est important, car sans cela, on va tourner en rond.
Si tu confirmes /var/log/httpd/error_log , la commande a exécuter en root est :
Code BASH :
fail2ban-regex /var/log/httpd/error_log /etc/fail2ban/filter.d/apache-auth.conf -v
A+
« Plus les hommes seront éclairés et plus ils seront libres. » ~ Voltaire

gustine Membre non connecté
-
- Voir le profil du membre gustine
- Inscrit le : 26/09/2010
- Site internet
- Groupes :
Failregex: 38 total
|- #) [# of hits] regular expression
| 1) [33] ^client (?:denied by server configuration|used wrong authentication scheme)\b
...
Lines: 2079 lines, 0 ignored, 38 matched, 2041 missed
Mais shorewall ne semble jamais avoir reçu d'instructions.
J'ai essayé de modifié le regex de « mon » apache-phpmyadmin sans succès. Essaie encore

Mais si apache-auth fonctionne, je n'en aurai pas besoin.
Édité par gustine Le 13/08/2021 à 08h02
I7-8700 - UHD Graphics 630 - 2x8 MO - Mageia 9 - Mate - serveur LAMP.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie