Puncte:0

Fail2ban regex nu funcționează

drapel cn

Aș dori să blochez orice solicitare de obținere către /.git, /wp-login,/remote/login/, așa că am creat următorul filtru care include și alte solicitări.

 badagents = 360Spider|ZmEu|Auto Spider 1.0|zgrab/[0-9]*\.[0-9a-zA-Z]*|Wget\(.*\)|MauiBot.*|AspiegelBot.*|SemrushBot.* |PHP/.*

failregex = ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD).*HTTP.*(?:%(badagents)s)"$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /+wp-login\.php.*$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /.git/HEAD.*$
        ^.+?:\d+ <HOST> -.*"GET /.git/.*$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /wp-login/.*$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /.git/objects/.*$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) //.git/objects/.*$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /remote/login/.*$
        ^.+?:\d+ <HOST> -.*"(GET|POST|HEAD) /wp/wp-includes/.*$
        ^.+?:\d+ <HOST> -.*"GET /wp/wp-includes/.*$
        ^.+?:\d+ <HOST> -.*"GET /wp/wp-login.php/.*$
        ^.+?:\d+ <HOST> -.*"GET /test/wp-includes/.*$
        ^.+?:\d+ <HOST> -.*"GET /config/getuser/.*$

De asemenea, am atașat asta la jail.local meu cu

[interdicție o singură dată]
activat = adevărat
port =http,https
logpath = /var/log/nginx/access.log
              /var/log/nginx/prod_test.log
filtru = ban o singură dată
bantime = 300
maxretry = 1
timp de găsire = 10

Am testat acest lucru încercând să accesez /.git pe adresa URL de mai mult de 10 ori, dar tot nu am fost interzis. De ce eșuează acest lucru. Cred că problema este la failregex. De ce am nevoie pentru a adăuga un plus pentru ca fail2ban să funcționeze?

Un eșantion de jurnal arată astfel

3.17.11.219 - - [05/Oct/2021:12:33:15 +0000] „GET //.git/objects/a5/920b6c86cc2d972bde9578c0a5d848dff67354 HTTP/1.1” curl/1.170.11.
drapel cn
Mai întâi creați un exemplu de fișier jurnal care să includă intrările pe care doriți să declanșați o interdicție, apoi utilizați comanda `fail2ban-regex` pentru a vă testa reg-ex-urile. Fără o mostră a jurnalelor de comparat cu ceea ce aveți aici, este greu de ajutat.
Geoff avatar
drapel cn
Am inclus un eșantion de jurnal
Puncte:0
drapel il

Regex-urile tale (de fapt, „vulnerabile”) încep cu ^.+?:\d+ <HOST> -, ceea ce înseamnă: găsiți o adresă IP (sau un nume de gazdă) după două puncte care se potrivesc, cel puțin 1 cifră și spațiu.
Dar linia ta începe cu IP.

Deci regex-urile tale nu se potrivesc deloc cu formatul tău de jurnal.

Fairegex corect (și mai puțin „vulnerabil”) ar fi cam așa:

^<ADDR> \S+ \S+ (?:\[\] )?"[A-Z]+ /\S*(?<=/)(?:\.git|wp-login|remote/login)\b[ ^"]*"\s+

dar mai bine ar fi să le interziceți prin intermediul serverului web (răspuns cu 403) și apoi să găsiți fiecare solicitare greșită cu ceva de genul:

^<ADDR> \S+ \S+ (?:\[\] )?"[A-Z]+ /[^"]*"\s+(?!401)[45]\d\d

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.