Ta failregex
nu este exact (mai mult este vulnerabil) pentru că caută și poate găsi 400
literalmente peste tot și nu doar ca cod de răspuns.
Ancora de început (^
) lucrează doar pentru <HOST>
etichetați și se oprește să funcționeze de acum înainte din cauza catch-all .*
şi nu la capăt-ancorat, pentru că .*$
nu este deloc o ancoră, așa că, în cele din urmă, regex-ul este neancorat din ambele părți, ceea ce este întotdeauna rău, deoarece:
- este vulnerabil în sensul acurateții (de exemplu, pozitive false)
- face analiza extrem de lentă (în special în cazul unor mesaje lungi)
De asemenea, nu aveți nevoie de filtru suplimentar pentru un lucru atât de simplu, îl puteți seta direct în închisoare, astfel încât acest lucru ar fi suficient în dvs. închisoare.locală
:
[ban-400]
logpath =...
filtru =
port = 80.443
failregex = ^<ADDR> \S+ \S+(?: \[\])? "[^"]*" 400\s
activat = adevărat
Acest failregex
este exact și cât mai rapid posibil (găsește 400 doar ca cod de răspuns).
Observație: (nginx nu este afectat)
Dacă un caracter-ghilime poate fi, de asemenea, închis între ghilimele ca valoare de evadare, cum ar fi \"
(nginx îi scapă ca \x22
, vezi extras, deci este mai degrabă scapat ca valoare hexagonală și "
nu ar trebui să apară deloc), puteți înlocui "[^"]*"
cu "(?:[^"]*|(?:[^"\\]*|\\.)*)"
, care poate fi puțin mai lent decât anterior.
De asemenea, vă rugăm să rețineți fail2ban :: wiki :: Cele mai bune practici.