Puncte:0

Creați propriul filtru pentru fail2ban fails

drapel kr

Mă joc cu fail2ban în kubernetes. Pentru asta am creat un pod care creează mesaje de jurnal false: 2021-08-04 18:33:13 Autentificarea eșuată 15.15.15.15 Am creat un filtru personalizat, pentru a testa dacă fail2ban funcționează. Am încercat mai întâi utilitarul fail2ban-regex cu un fișier care conține 10 linii din aceste mesaje de jurnal și am obținut această ieșire:

Executarea testelor
==============

Utilizați fișierul de filtru failregex: test, basedir: /etc/fail2ban
Utilizați fișierul jurnal: /logs.txt
Utilizați codificarea: UTF-8


Rezultate
=======

Failregex: 10 în total
|- #) [# of hits] expresie regulată
| 1) [10] \sAutentificare eșuată\s<HOST>
`-

Ignoreregex: 0 total

Afișări șablon de dată:
|- [# of hits] format de dată
| [10] ExYear(?P<_sep>[-/.])Lună(?P=_sep)Ziua(?:T| ?)24hour:Minute:Second(?:[.,]Microsecunde)?(?:\ s*Zone offset)?
`-

Linii: 10 linii, 0 ignorate, 10 potrivite, 0 ratate
[procesat în 0,12 sec]

dar când încerc apoi același filtru împotriva fișierului, care conține jurnalele continue, primesc această eroare:

Executarea testelor
==============

Utilizați fișierul de filtru failregex: test, basedir: /etc/fail2ban
Utilizați fișierul jurnal: /logs/kubernetes.logs
Utilizați codificarea: UTF-8

Traceback (cel mai recent apel ultimul):
 Fișierul „/usr/bin/fail2ban-regex”, linia 34, în <modul>
   exec_command_line()
 Fișierul „/usr/lib/python3.8/site-packages/fail2ban/client/fail2banregex.py”, linia 836, în exec_command_line
   dacă nu fail2banRegex.start(args):
 Fișierul „/usr/lib/python3.8/site-packages/fail2ban/client/fail2banregex.py”, linia 776, la început
   self.process(linii_test)
 Fișierul „/usr/lib/python3.8/site-packages/fail2ban/client/fail2banregex.py”, linia 584, în proces
   line_datetimestripped, ret, is_ignored = self.testRegex(line)
 Fișierul „/usr/lib/python3.8/site-packages/fail2ban/client/fail2banregex.py”, linia 456, în testRegex
   găsit = self._filter.processLine(linie, dată)
 Fișierul „/usr/lib/python3.8/site-packages/fail2ban/server/filter.py”, linia 613, în processLine
   timeMatch = self.dateDetector.matchTime(line)
 Fișierul „/usr/lib/python3.8/site-packages/fail2ban/server/datedetector.py”, linia 368, în matchTime
   (linie[distanță] == self.__lastPos[2] și nu self.__lastPos[2].isalnum())
IndexError: index de șir în afara intervalului

Și când activez filtrul pentru fail2ban, nu am niciun ip interzis, așa că cred că filtrul meu nu funcționează, dar nu pot găsi greșeala.

filter.conf:

[Definiție]

failregex = \sAutentificare eșuată\s<HOST>
djdomi avatar
drapel za
Cred că a răspuns deja de către [Stackoverflow](https://stackoverflow.com/questions/56158596/how-to-use-fail2ban-under-kubernetes)
Puncte:0
drapel il

Aceasta este o eroare cunoscută (remediată deja între ele), vezi https://github.com/fail2ban/fail2ban/issues/3020

Dar motivul real este datapatternul imprecis și fie un timestamp incomplet (se potrivește în mod implicit cu datapattern-ului) sau o linie fără timestamp deloc. Soluția ar fi fie o actualizare, fie (mai bine) un model de dată precis posibil și, în cel mai bun caz, ancorat la început (sau la sfârșit).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.