Comment * ajouter * des règles dans la définition du filtre fail2ban local?

10

J'ai installé fail2ban tel que conditionné par Debian sur un serveur sous mon contrôle. Étant donné que j'ai des échecs de référence antérieurs, je les mets dans le fichier de définition de filtre local afin qu'ils soient également pris en compte. Par conséquent, je me retrouve par exemple avec /etc/fail2ban/filter.d/sshd.conf et /etc/fail2ban/filter.d/sshd.local. C'est la façon dont il est recommandé d'être configuré et il semble fonctionner très bien pour ce qu'il est.

Cependant, dans le fichier .local, je remplace en fait toute la liste des échecs de référence du fichier .conf. La documentation ne semble pas indiquer qu'il existe un autre moyen de le faire, et pour le faire fonctionner, j'ai simplement copié le fichier .conf fourni par la distribution dans un fichier .local et fait quelques ajouts.

Ce serait vraiment bien si je pouvais simplement modifier la liste, en profitant du travail des responsables en amont et Debian pour se tenir au courant des changements apportés aux regexes du filtre d'entrée de journal géré par la distribution.

La seule vraie solution de contournement à laquelle je peux penser est de créer réellement deux prisons, l'une en utilisant la configuration fournie par la distribution et l'autre en utilisant la mienne. Cela semblerait avoir l'inconvénient (assez important) du fait qu'ils sont traités comme des prisons indépendantes (ce à quoi vous vous attendriez avec une telle configuration).

Je ne peux certainement pas être le seul à vouloir simplement ajouter quelques échecs de référence à une collection déjà existante, avec un minimum de tracas de maintenance.

Est-il possible de modifier les listes de failregex et ignoreregex dans une définition de filtre fail2ban via un fichier site-local ou hôte-local, sans apporter de modifications au fichier correspondant global ou fourni par la distribution? Si c'est le cas, comment faire?

un CVn
la source

Réponses:

4

Jetons un coup d'œil à une partie du /etc/fail2ban/filter.d/sshd.confdossier.

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

Vous pourriez donc penser que vous pourriez ajouter ici: after = sshd.localet le faire lire un tel fichier; tous les paramètres qu'il contiendrait remplaceraient alors ceux de ce fichier.

Et il fonctionne. Sauf que vous ne pouvez pas simplement modifier les entrées failregexou toute autre directive; vous ne pouvez que les remplacer.

Votre sentiment est correct. Il s'agit certainement d'une lacune des formats de fichier de configuration fail2ban. Je me plaindrais au développeur.

Michael Hampton
la source
2

J'avais la même exigence et l'ai posté comme un problème. L'auteur semble y travailler: https://github.com/fail2ban/fail2ban/issues/867 .

Une fois fusionné, cela devrait fonctionner comme ceci (cet exemple est une gracieuseté du développeur, Serg Brester):

# filter test.conf:
[Definition]
failregex = failure test 1 (filter.d/test.conf) <HOST>

# filter test.local:
[Definition]
failregex = %(known/failregex)s
            failure test 2 (filter.d/test.local) <HOST>

et les regex peuvent être ajoutés dans les prisons de la même manière ...

# jail.local
[test3known-interp]
filter=test
enabled = true
failregex = %(known/failregex)s
            failure test 3 (jail.local) <HOST>

pour un résultat de:

$ bin/fail2ban-client -d -c config | grep addfail
['set', 'test3known-interp', 'addfailregex', 'failure test 1 (filter.d/test.conf)]
['set', 'test3known-interp', 'addfailregex', 'failure test 2 (filter.d/test.local)]
['set', 'test3known-interp', 'addfailregex', 'failure test 3 (jail.local) <HOST>']
Raman
la source