Puncte:-1

Atacul DDOS la serverul http și iptables nu ajută (am access_log)

drapel in

Sunt sub un atac DDOS care vizează serverul http, încerc iptables și alte măsuri, dar nimic nu pare să funcționeze. Iată o parte din access_log:

https://pastebin.com/6JFKmUi8

Multe conexiuni, dar iptables nu va opri atacul, există regulile mele pentru iptables:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 147.135.37.113 -j ACCEPT

iptables -A INPUT -f -j DROP
iptables -A INPUT -m stare --state INVALID -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp ! --syn -m stare --state NEW -j DROP

iptables -N LOG_AND_DROP

iptables -N PORT21
iptables -A PORT21 -m recent --set --name lp21
iptables -A PORT21 -m recent --update --seconds 30 --hitcount 3 --name lp21 -j DROP
iptables -A PORT21 -m recent --update --seconds 300 --hitcount 10 --name lp21 -j LOG_AND_DROP

iptables -N PORT22
iptables -A PORT22 -m recent --set --name lp22
iptables -A PORT22 -m recent --update --seconds 30 --hitcount 3 --name lp22 -j DROP
iptables -A PORT22 -m recent --update --seconds 300 --hitcount 10 --name lp22 -j LOG_AND_DROP

iptables -N PORT80
iptables -A PORT80 -m recent --set --name lp80
iptables -A PORT80 -m recent --update --seconds 30 --hitcount 20 --name lp80 -j LOG_AND_DROP

iptables -N PORT443
iptables -A PORT443 -m recent --set --name lp433
iptables -A PORT443 -m recent --update --seconds 30 --hitcount 20 --name lp443 -j LOG_AND_DROP

iptables -N PORT10000
iptables -A PORT10000 -m recent --set --name lp10000
iptables -A PORT10000 -m recent --update --seconds 30 --hitcount 20 --name lp10000 -j LOG_AND_DROP

iptables -N PORT6900
iptables -A PORT6900 -m recent --set --name lp6900
iptables -A PORT6900 -m recent --update --seconds 30 --hitcount 10 --name lp6900 -j LOG_AND_DROP
iptables -A PORT6900 -m recent --update --seconds 50 --hitcount 20 --name lp6900 -j LOG_AND_DROP

iptables -N PORT6121
iptables -A PORT6121 -m recent --set --name lp6121
iptables -A PORT6121 -m recent --update --seconds 30 --hitcount 10 --name lp6121 -j LOG_AND_DROP
iptables -A PORT6121 -m recent --update --seconds 50 --hitcount 20 --name lp6121 -j LOG_AND_DROP

iptables -N PORT5121
iptables -A PORT5121 -m recent --set --name lp5121
iptables -A PORT5121 -m recent --update --seconds 30 --hitcount 10 --name lp5121 -j LOG_AND_DROP
iptables -A PORT5121 -m recent --update --seconds 50 --hitcount 20 --name lp5121 -j LOG_AND_DROP

iptables -A INPUT -p icmp --icmp-type echo-request -m hashlimit --hashlimit-name pings --hashlimit-mode srcip --hashlimit 10/min --hashlimit-burst 10 --hashlimit-htable-expire 30000 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/min -j LOG --log-prefix „[Pings]”
iptables -A INPUT -p icmp -j DROP

iptables -A INPUT -m stare --state RELATED,STABLISHED -j ACCEPT

iptables -A INPUT -p tcp --dport 21 -m stare --state NOU -j PORT21
iptables -A INPUT -p tcp --dport 22 -m stare --state NOU -j PORT22
iptables -A INPUT -p tcp --dport 80 -m stare --state NOU -j PORT80
iptables -A INPUT -p tcp --dport 443 -m stare --state NOU -j PORT443
iptables -A INPUT -p tcp --dport 10000 -m stare --state NOU -j PORT10000

iptables -A INPUT -p tcp --dport 6900 -m stare --state NOU -j PORT6900
iptables -A INPUT -p tcp --dport 6121 -m stare --state NOU -j PORT6121
iptables -A INPUT -p tcp --dport 5121 -m stare --state NOU -j PORT5121

iptables -A INTRARE -p tcp --dport 21 -j ACCEPT
iptables -A INTRARE -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-name p80 --hashlimit-mode srcip --hashlimit 50/min --hashlimit-burst 100 --hashlimit-htable-expire 10000 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m hashlimit --hashlimit-name p443 --hashlimit-mode srcip --hashlimit 50/min --hashlimit-burst 100 --hashlimit-htable-expire 10000 -j ACCEPT
iptables -A INPUT -p tcp --dport 10000 -m hashlimit --hashlimit-name p10000 --hashlimit-mode srcip --hashlimit 50/min --hashlimit-burst 100 --hashlimit-htable-expire 10000 -j ACCEPT

iptables -A INTRARE -p tcp --dport 6900 -j ACCEPT
iptables -A INTRARE -p tcp --dport 6121 -j ACCEPT
iptables -A INTRARE -p tcp --dport 5121 -j ACCEPT

iptables -A LOG_AND_DROP -m limit --limit 10/min -j LOG --log-prefix „[Log]”
iptables -A LOG_AND_DROP -j DROP

#iptables -A INPUT -m limit --limit 10/min -j LOG --log-prefix „[Implicit]”
iptables -A INPUT -d 147.135.37.113 -j DROP

Orice sfat va fi binevenit. Încerc totul, dar nimic nu funcționează.

Puncte:1
drapel in

Discutați cu furnizorul dvs. (seamănă cu OVH) despre protecțiile lor anti-ddos pe sistemul dvs. Nu toți, dar majoritatea furnizorilor de renume au modalități prin care vă pot ajuta în acest sens.În afară de asta, s-ar putea să vă gândiți să faceți o regulă fail2ban care urmărește jurnalele serverului dvs. web pentru orice client care lovește acea adresă URL foro și să adăugați automat o regulă IPTables pentru ele. În afară de asta, poți pune ceva acolo... poate un fișier foarte mic de 1 octet? Sau puneți-vă serverul web în spatele a ceva precum cloudflare sau alt serviciu CDN. Majoritatea acestui trafic poate fi tratat cu mai multe moduri și nu ar trebui să pună atât de mult stres pe serverul tău sau pe tine. Totuși, aveți grijă ca fișierele jurnal să vă umple sistemul de fișiere! Asta poate crea o cu totul altă problemă pe care nimeni nu și-o dorește.

Consultați acest lucru pentru mai multe informații despre utilizarea fail2ban pentru a proteja apache de atacurile DoS: https://apache.tutorials24x7.com/blog/protect-apache-from-brute-force-and-ddos-attacks-using-fail2ban

Nikita Kipriyanov avatar
drapel za
Am încercat să folosesc fail2ban pentru a atenua atacul DDoS. Este inutilizabil pentru asta. De exemplu, când îl porniți/opreșteți sau reîncărcați (ceea ce veți face des pentru DDoS), mai întâi *unbanizează* pe toată lumea, iar apoi îl interzice din nou. Acest proces durează aproximativ o oră în cazul în care aveți peste 20000 de adrese interzise, ​​nu foarte promițător! De fapt fail2ban este un software de calitate destul de scăzută, în ciuda popularității sale, chiar și pentru problema pe care este conceput să o rezolve.
t3ln3t avatar
drapel in
Dacă aveți peste 20.000 de adrese în listele dvs. de interdicție, fail2ban nu este o soluție adecvată! Aveți nevoie de o soluție hardware care să facă acest lucru. CiscoGuard sau cu ce au înlocuit acel produs. Majoritatea software-ului UNIX/Linux începe să sughițească atunci când aveți acel număr de intrări de text în liste. Postfix și sendmail s-au mutat în DB și hashuri compilate acum 20 de ani, deoarece fișierele text nu au putut fi analizate rapid.
Nikita Kipriyanov avatar
drapel za
Nu, hardware dedicat nu este necesar. Amintiți-vă, orice „hardware dedicat” ca acesta nu este altceva decât un siliciu antic extrem de scump, care rulează un software inteligent. Dacă reușiți să rulați un astfel de software pe același computer, va funcționa bine. De exemplu, dacă intenționați să blocați ceva folosind linux netfilter, utilizați ipset (care folosește bitmaps sau hash-uri, adică un „software CAM”), iar principala problemă este cum să umpleți ipset. fail2ban cu greu poate ajuta. Problema este că, dacă aveți DDoS „exhaustiv”, cu siguranță *veți* avea peste 20000 de adrese de interzis, așa că fail2ban nu vă va ajuta cu un astfel de DDoS.
Hermenegildo Gonzalez avatar
drapel in
Mulțumiri. Voi încerca fail2ban și da ajutor Cloudflare. Jurnalele http sunt dezactivate în timp ce atacul continuă.
Puncte:0
drapel in

Problema rezolvată cu acest simplu iptables (poate că celelalte reguli au fost prea dezordonate)

iptables -A INPUT -i eno1 -m stare --state RELATED,STABLISHED -j ACCEPT
iptables -A INPUT -i eno1 -m stare --state INVALID -j DROP
iptables -A INPUT -i eno1 -p tcp -m tcp --dport 22 -m stare --state NOU -j ACCEPT
iptables -A INPUT -i eno1 -p tcp -m tcp --dport 21 -m stare --state NOU -j ACCEPT
iptables -A INPUT -i eno1 -p tcp -m tcp --dport 80 -m stare --state NOU -j ACCEPT
iptables -A INPUT -i eno1 -p tcp -m tcp --dport 443 -m state --state NOU -j ACCEPT
iptables -A INPUT -i eno1 -p icmp -j ACCEPT
iptables -A INPUT -i eno1 -j DROP

Atacurile continuă să vină, dar nu colapsează serverul.

exeral avatar
drapel lk
conform jurnalelor dvs., DDOS pare solicitări http(e) nedorite. Nu înțeleg cum ar atenua atacul aceste reguli care permit și http(e). dar problema ta este rezolvată, cu atât mai importantă!
Puncte:0
drapel id

Îmi vin în minte câteva lucruri:

  1. Ai putea folosi string-match cu iptables:

iptables -A INPUT -m șir --algo bm --șir "GET /foro" -j DROP

sau dacă este posibil în sistemul dumneavoastră, cu TARPIT

iptables -A INPUT -m șir --algo bm --șir "GET /foro" -j TARPIT

  1. În loc să utilizați fail2ban, creați-vă propriul script care scanează pentru jurnalele cu ultimele 1000 de linii, de exemplu, și blochează potrivirile cu ipset-uri. Adăugați asta la scriptul dvs. iptables:
  • ipset distruge toaleta
  • ipset -N toaletă iphash
  • toaletă cu apă ipset

Apoi utilizați scriptul pentru a adăuga adrese IP pe care doriți să le blocați în fișierul text.În cele din urmă, trebuie doar să buclați toate adresele IP la acea listă de toalete.

  • ipset -O toaletă „$ipaddress”

Utilizarea ipset și în special a măștilor este o modalitate mult mai eficientă decât blocarea adreselor IP. Am aproximativ 20 000 de adrese blocate și aproximativ 200 de rețele.

S-ar putea să ai câteva idei despre scenariul meu foarte dezordonat. https://pastebin.com/4v5se0kh

Știu că este dezordonat, dar funcționează pentru mine mult mai rapid și este mult mai ușor decât fail2ban. Am numit acel script suc2ban. Trebuie doar să găsiți propriile potriviri pentru fișierul dvs. de jurnal (probabil aveți apache access.log, în loc de exemplul meu care folosește auth.log).

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.