Wie * Regeln * in die lokale Fail2Ban-Filterdefinition einfügen?

10

Ich habe fail2ban wie von Debian gepackt auf einem Server unter meiner Kontrolle installiert. Da ich einige Failregexe von früher habe, füge ich diese in die lokale Filterdefinitionsdatei ein, damit sie ebenfalls berücksichtigt werden. Daher habe ich zB /etc/fail2ban/filter.d/sshd.conf und /etc/fail2ban/filter.d/sshd.local. Auf diese Weise wird empfohlen, es einzurichten, und es scheint für das, was es ist, einwandfrei zu funktionieren.

In der .local-Datei ersetze ich jedoch tatsächlich die gesamte Liste der Failregexes aus der .conf-Datei. Die Dokumentation scheint nicht darauf hinzudeuten, dass es eine andere Möglichkeit gibt, und damit es funktioniert, habe ich einfach die von der Distribution bereitgestellte .conf-Datei in eine .local-Datei kopiert und einige Ergänzungen vorgenommen.

Es wäre wirklich schön, wenn ich die Liste einfach ändern könnte , um von der Arbeit der Upstream- und Debian-Betreuer zu profitieren und mich über Änderungen an den regulären Ausdrücken der von der Verwaltung gepflegten Protokolleintragsfilter auf dem Laufenden zu halten.

Die einzige wirkliche Problemumgehung, die ich mir vorstellen kann, besteht darin, zwei Jails zu erstellen, eines mit der von der Distribution bereitgestellten Konfiguration und eines mit meiner eigenen. Dies scheint den (ziemlich bedeutenden) Nachteil zu haben, dass sie als unabhängige Gefängnisse behandelt werden (was Sie bei einem solchen Setup erwarten würden).

Sicherlich kann ich nicht der einzige sein, der nur ein paar eigene Failregexe zu einer bereits vorhandenen Sammlung hinzufügen möchte, mit einem Minimum an Wartungsaufwand.

Ist es möglich, die Listen von failregex und ignoreregex innerhalb einer fail2ban-Filterdefinition über eine standortlokale oder hostlokale Datei zu ändern , ohne Änderungen an der entsprechenden globalen oder von der Distribution bereitgestellten Datei vorzunehmen? Wenn ja, wie geht das?

ein CVn
quelle

Antworten:

4

Schauen wir uns einen Teil der /etc/fail2ban/filter.d/sshd.confDatei an.

[INCLUDES]

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

Sie könnten also denken, Sie könnten hier hinzufügen: after = sshd.localund veranlassen, dass es eine solche Datei liest; Alle darin enthaltenen Einstellungen würden dann die in dieser Datei enthaltenen überschreiben.

Und es funktioniert. Es sei denn, Sie können Einträge failregexoder andere Richtlinien nicht einfach ändern . Sie können sie nur ersetzen.

Dein Gefühl ist richtig. Dies ist definitiv ein Mangel der Fail2Ban-Konfigurationsdateiformate. Ich würde mich beim Entwickler beschweren.

Michael Hampton
quelle
2

Ich hatte die gleiche Anforderung und habe sie als Problem veröffentlicht. Der Autor scheint daran zu arbeiten: https://github.com/fail2ban/fail2ban/issues/867 .

Nach dem Zusammenführen sollte es folgendermaßen funktionieren (dieses Beispiel wurde vom Entwickler Serg Brester zur Verfügung gestellt):

# 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>

und reguläre Ausdrücke können auf die gleiche Weise in Gefängnissen hinzugefügt werden ...

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

für ein Ergebnis von:

$ 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
quelle