Jak * dodać * reguły w lokalnej definicji filtra fail2ban?

10

Zainstalowałem fail2ban w pakiecie Debiana na serwerze pod moją kontrolą. Ponieważ mam wcześniej niektóre błędy generujące błędy, umieszczam je w pliku definicji filtra lokalnego, aby również zostały uwzględnione. Dlatego kończę na np. /Etc/fail2ban/filter.d/sshd.conf i /etc/fail2ban/filter.d/sshd.local. Jest to sposób, w jaki zaleca się konfigurację i wydaje się, że działa dobrze dla tego, czym jest.

Jednak w pliku .local w rzeczywistości zastępuję całą listę kodów błędów z pliku .conf. Dokumentacja nie wydaje się wskazywać, że istnieje inny sposób, aby to zrobić, a żeby go uruchomić, po prostu skopiowałem dostarczony plik dystrybucyjny .conf do pliku .local i dodałem kilka dodatków.

Byłoby naprawdę miło, gdybym mógł po prostu zmienić listę, korzystając z pracy nadrzędnych i opiekunów Debiana, aby być na bieżąco ze zmianami w utrzymywanych przez dystrybucję filtrach wpisów dziennika.

Jedynym prawdziwym obejściem, jakie mogę wymyślić, jest utworzenie dwóch więzień, jednego przy użyciu konfiguracji dostarczonej przez dystrybucję, a drugiego przy użyciu własnego. Wydaje się, że ma to (dość znaczącą) wadę, że są traktowani jako niezależne więzienia (czego można by oczekiwać przy takiej konfiguracji).

Z pewnością nie mogę być jedyną, która chce po prostu dodać kilka własnych poprawek błędów do już istniejącej kolekcji, przy minimum problemów związanych z konserwacją.

Czy można zmienić listy failregex i ignoreregex w definicji filtru fail2ban poprzez plik lokalny lub lokalny host, bez wprowadzania zmian w odpowiednim pliku globalnym lub dostarczonym przez dystrybucję? Jeśli tak, to jak to zrobić?

CVn
źródło

Odpowiedzi:

4

Rzućmy okiem na część /etc/fail2ban/filter.d/sshd.confpliku.

[INCLUDES]

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

Możesz więc pomyśleć, że możesz dodać tutaj: after = sshd.locali spowodować odczytanie takiego pliku; wszelkie ustawienia w nim zastąpiłyby te w tym pliku.

I to działa. Z wyjątkiem tego, że nie możesz po prostu zmieniać wpisów do failregexżadnej innej dyrektywy; możesz je tylko wymienić.

Twoje uczucie jest poprawne. Jest to zdecydowanie wada formatów plików konfiguracyjnych fail2ban. Złożyłbym skargę do programisty.

Michael Hampton
źródło
2

Miałem ten sam wymóg i opublikowałem go jako problem. Wydaje się, że autor nad tym pracuje: https://github.com/fail2ban/fail2ban/issues/867 .

Po połączeniu powinien on działać w ten sposób (ten przykład udostępniono dzięki uprzejmości programisty Serga Brestera):

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

i wyrażenia regularne można dodawać do więzień w ten sam sposób ...

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

w wyniku:

$ 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
źródło