Încercarea #1
văzut direct, nu a fost într-adevăr, dar...
Deși cele mai noi versiuni ale fail2ban-regex acceptă parametrii de ieșire, așa că ați putea face ceva de genul acesta:
fail2ban-client set "$jail" banip $(
fail2ban-regex -o 'ip' /var/log/path/some.log some-filter | sortare --unic | tr '\n' ' '
)
ar fi potrivit doar dacă ați găsi IP-uri care au eșecuri indiferent de număr/timp. În cazul dvs., cel puțin ar fi lipsit de sens fără o preprocesare suplimentară.
Încercarea nr. 2 m-am gândit că a face ecoul jurnalelor istorice în jurnalul pe care fail2ban îl urmărește în prezent le-ar face să fie analizate.
Nu ar funcționa, deoarece fail2ban nu ar lua în considerare corect ora mesajului: fie ar fi prea veche (dacă ați înregistrat înregistrarea nemodificată), fie ar fi incorectă (dacă este înregistrată acum ca moment de eșec, deoarece trebuie să luați în considerare maxretry
și găsește timp
privind utilizarea reală).
Rețineți să menționați că fail2ban ar căuta acum - găsiți ora
de la început (pentru că alte mesaje nu sunt interesante pentru el, deoarece sunt prea învechite), vezi https://github.com/fail2ban/fail2ban/issues/2909#issuecomment-758036512.
Oricum, în acest moment, este greu posibil cu instrumentele stock fail2bans scoase din cutie (cel puțin dacă această facilitate de „rescanare” de la RFE de mai sus este implementată și eliberată).
Dar din moment ce fail2ban (precum și fail2ban-regex
) este un modul în python, ar fi posibil cu un filtru de la python scrierea interdicțiilor într-un jurnal sau trimiterea lor direct la instanța principală fail2ban, vezi https://github.com/fail2ban/fail2ban/issues/2909#issuecomment-1039267423 pentru un astfel de exemplu de script.
De asemenea, rețineți că filtrul dvs. este extrem de vulnerabil și lent, mai bine rescrieți-l cât mai precis posibil, cumva ca aici:
failregex = ^"<ADDR>" \S+ \S+ [^"]*"[A-Z]+ /(?:\S+/)*[^\.]*(?:\.(?!ico|jpg|png |gif|js|css|woff|mp4)\w+)? [^"]+"
Și nu în ultimul rând, de ce ai nevoie de asta? Dacă închisoarea cu un astfel de filtru este activă și astfel de crawler-uri revin, vor fi interzise de îndată ce fac maxretry
eşecuri în timpul găsește timp
, configurat pentru închisoare. Interzicerea preventivă nu este cu adevărat necesară și ar deranja subsistemul dvs. net-filter cu o mulțime de IP-uri (probabil că nu vor mai reveni niciodată).