Puncte:2

fail2ban detectează IP-ul atacatorului, dar nu îl interzice și citește lentă jurnalele

drapel br

De câteva zile primesc atacuri de la niște adrese IP către nginx-ul meu. Am decis să folosesc fail2ban pentru a-l interzice automat, dar am observat că nu funcționează foarte bine. Pot vedea în jurnale că detectează adresa IP, dar nu interzice așa cum era de așteptat.

Dosarul meu de închisoare este:

[nginx-40x-req]
activat = adevărat
bantime.rndtime = 2800
bantime.increment = adevărat
port = http,https
filtru = nginx-40x-req
logpath = /var/log/nginx/access.log
maxretry = 5

si filtrul meu arata cam asa:

[Definiție]
failregex = ^{"status": (400|401|403), "request_time": [0-9\.]+,\s+"remote_addr": "<HOST>",

Pe nginx-ul meu am adăugat o hartă pentru a-i detecta solicitările și returnează 403 când este detectat. Jurnalele arată astfel:

{"status": 403, "request_time": 0.000, "remote_addr": "xx.xx.xx.xx", "@timestamp": "2021-09-03T18:32:34+02:00", "type ": "nginx", "hostname": "vps-e642f340", "host": "d.itsyjd.com", "uri": "/v2/speed_test", "request": "GET https://d .itsyjd.com/v2/speed_test HTTP/1.1”, „request_method”: „GET”, „request_proto”: „http”, „request_proto_proxy”: „-”, „request_uri”: „/v2/speed_test”, „request_args” ": "-", "server_proto": "HTTP/1.1", "body_bytes_sent": 552, "http_referer": "-", "http_user_agent": "Mozilla/5.0 (Linux; Android 8.0; MHA-AL00 Build/HUAWEIMHA) -AL00; wv) AppleWebKit/537.36 (KHTML, ca Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/044304 Mobile Safari/537.36 (compatibil; Baiduspider/2.0;+.http://www. search/spider.html)", "msec": 1630686754.923, "upstream_connect_time": -, "upstream_header_time": -, "upstream_response": -, "pipe": "p", "gzip_ratio": "-", "brotli_ratio" ": "-", "remote_user": "-", "bad_request": "1"}

Pe fail2ban-ul meu, pot vedea o mulțime de mesaje care spun că adresa IP a fost detectată:

2021-09-03 18:34:31,494 fail2ban.filter [32586]: INFORMAȚII [nginx-40x-req] Găsit xx.xx.xx.xx - 2021-09-03 18:29:33

Dar încă nu interzice acele adrese IP.

Un lucru pe care l-am observat este că viteza de citire fail2ban este mai mică decât viteza de jurnal, așa că am început să cred că poate asta este problema, pentru că atunci când acele IP sunt interzise și fail2ban citește în timp real, atunci alte adrese IP sunt interzise fără probleme. . Max_retry este 5 și toate adresele IP au fost detectate de mai mult de 5 ori, așa că trebuie să fie interzise.

Oricine știe ce pot greși (pentru că cu siguranță este ceva ce nu văd).

Toate cele bune.

EDIT: După ce am scris acest mesaj, am văzut că este interzis, dar funcționează foarte lent. În aproximativ 15 minute a interzis aproximativ 4 adrese IP de la aproximativ 11, când în fiecare secundă sunt detectate de multe ori.

EDIT2: Ștergerea jurnalului cu o simplă echo "" > <fișier jurnal> a declanșat interdicțiile.

Versiunea mea fail2ban este 0.10.2

Cu atacatorul problematic interzis și primind doar câteva solicitări, fail2ban citește în timp real și interzice:

2021-09-03 18:46:13,759 fail2ban.filter [32586]: INFORMAȚII [nginx-40x-req] S-au găsit XX.XX.XX.XX - 2021-09-03 18:46:13
2021-09-03 18:46:13,909 fail2ban.actions [32586]: NOTIFICARE [nginx-40x-req] Ban XX.XX.XX.XX
2021-09-03 18:46:18,855 fail2ban.filter [32586]: INFORMAȚII [nginx-40x-req] S-au găsit XX.XX.XX.XX - 2021-09-03 18:46:18
2021-09-03 18:47:07,004 fail2ban.filter [32586]: INFORMAȚII [nginx-40x-req] S-au găsit XX.XX.XX.XX - 2021-09-03 18:47:06
2021-09-03 18:48:34,390 fail2ban.filter [32586]: INFORMAȚII [nginx-40x-req] S-au găsit XX.XX.XX.XX - 2021-09-03 18:48:34
2021-09-03 18:48:54,230 fail2ban.filter [32586]: INFORMAȚII [nginx-40x-req] S-au găsit XX.XX.XX.XX - 2021-09-03 18:48:54
2021-09-03 18:48:54,231 fail2ban.filter [32586]: INFORMAȚII [nginx-40x-req] S-au găsit XX.XX.XX.XX - 2021-09-03 18:48:54
2021-09-03 18:48:54,231 fail2ban.filter [32586]: INFORMAȚII [nginx-40x-req] S-au găsit XX.XX.XX.XX - 2021-09-03 18:48:54
2021-09-03 18:48:54,335 fail2ban.actions [32586]: NOTIFICARE [nginx-40x-req] Ban XX.XX.XX.XX
2021-09-03 18:50:08,488 fail2ban.filter [32586]: INFORMAȚII [nginx-40x-req] S-au găsit XX.XX.XX.XX - 2021-09-03 18:50:08

Deci tot ma gandesc ca problema poate este viteza de citire.

EDIT3:

În cele din urmă, am actualizat versiunea fail2ban la 0.11.2, am adăugat un datepattern și am schimbat detectorul de adrese. Acum pare să citești fișierul nginx mult mai repede.

[Definiție]
failregex = ^{"stare": (400|401|403), "request_time": [0-9\.]+,\s+"remote_addr": "<ADDR>",
datapattern = "@timestamp": "%%Y-%%m-%%dT%%H:%%M:%%S%%z"
Michael Hampton avatar
drapel cz
Ce versiune de fail2ban este aceasta?
drapel br
Salut Michael, cel mai recent din Debian 10: 0.10.2. Acum că atacatorul este interzis și celălalt atacator face doar câteva solicitări, pare să funcționeze. Încă mă gândesc că problema este viteza de citire.
Michael Hampton avatar
drapel cz
Jurnalul dvs. poate fi prea mare. Rotiți în mod regulat jurnalele nginx?
drapel br
Problema este că devine mare atunci când atacatorul atacă și fail2ban nu este capabil să-l citească suficient de repede. Am șters fișierul jurnal de mai multe ori în timpul testelor mele, deoarece acesta este primul la care m-am gândit, așa că fișierul jurnal este aproape gol.
drapel br
O întrebare: Fail2ban stochează adresa IP detectată în memorie sau încearcă să citească intervalul „findtime” din fișier?.
Puncte:2
drapel il
  1. Nu este recomandabil să monitorizați jurnalul de acces, vezi fail2ban/wiki :: Cele mai bune practici în special partea „Reducerea traficului de bușteni paraziți”.
  2. Regex-urile neadecvate pot provoca, de asemenea, că fail2bans „viteza de citire poate fi mai mică decât viteza de jurnal”, doar că nu văd că RE nu este bun. Dar se poate face mai rapid, doar că ar trebui să schimbați formatul de înregistrare pentru asta. Precizând, de asemenea, unic și precis datapattern poate ajuta la accelerarea procesării.
  3. Toate într-unul ar putea crea condiția de cursă cunoscută, fail2ban a fost afectat până la v.0.10.5, vezi https://github.com/fail2ban/fail2ban/issues/2660 pentru detalii (remedierea a fost lansată în v.0.10.6 / v.0.11.2)

Rețineți, de asemenea, răspunsurile la probleme similare, de exemplu https://github.com/fail2ban/fail2ban/issues/3021#issuecomment-834287295.

drapel br
Mulțumesc!, nu am reușit să găsesc nimic despre el, dar linkul este clar. Am actualizat la cea mai recentă versiune și am făcut câteva modificări la filtru. Acum pare să fie mai rapid și, de asemenea, se pare că atacatorul s-a oprit.

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.