Skip to content
VDS · Bezbednost

Napadi na mašinu: šta mi radimo i šta ti možeš

Kako izgleda napad na kanal i na aplikaciju, kako se razlikuju, šta možeš da podesiš na svojoj strani i kako da shvatiš da uopšte nije napad.

Ažurirano 23. avgust 2026.

Reč „napad“ zvuči isto u dve potpuno različite situacije: kada ti je kanal preplavljen smeće saobraćajem i kada nekoliko stotina zahteva u sekundi obori tvoju aplikaciju. Tretiraju se drugačije, a prvo što treba da uradiš je da utvrdiš sa kojom se suočavaš.

Kako da razlikuješ jedno od drugog

ZnakKanal zasićenAplikacija preopterećena
Grafikon saobraćaja u „Pregledu“Dostiže plafonNormalne vrednosti
ProcesorNije opterećenPotpuno opterećen
SSHNe može da se povežeRadi, ali sporo
Logovi veb serveraPrazniHiljade identičnih zahteva

Pogledaj grafikone procesora, memorije i saobraćaja u „Pregledu“ na /hosting/vds/m/<id> za poslednja 24 sata. Ako je saobraćaj normalan, a procesor zakucan na plafonu, to je opterećenje aplikacije i moraš da ga rešiš na svojoj strani.

Šta možeš da uradiš

Ograničavanje broja zahteva u nginx-u:

limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=conn:10m;

server {
    limit_req zone=perip burst=20 nodelay;
    limit_conn conn 20;
    client_body_timeout 10s;
    client_header_timeout 10s;
}

Ograničavanje konekcija u firewall-u:

ufw limit 22/tcp

Fleksibilnija pravila su u članku nftables: tamo možeš i da ograničiš nove konekcije i da vodiš listu blokiranih adresa sa rokom trajanja.

Pronađi izvor u logovima:

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
ss -tn state established | awk '{print $4}' | cut -d: -f1 | sort | uniq -c | sort -rn | head

Blokiranje adrese ili mreže jednom:

ufw deny from 203.0.113.0/24

fail2ban može da automatizuje blokiranje na osnovu logova.

Šta mi radimo

Naša infrastruktura filtrira smeće saobraćaj na putu do noda — pre nego što ti potroši propusni opseg. To deluje protiv volumetrijskih napada na kanal i ne zahteva nikakvu konfiguraciju sa tvoje strane.

Šta zaštita na nivou noda ne radi: ne analizira logiku tvoje aplikacije. Zahtevi koji spolja izgledaju normalno stižu do tvoje mašine, a od njih te štiti samo tvoja sopstvena konfiguracija.

Ako tvoja mašina postane izvor napada — na primer, kompromitovana je i učestvuje u tuđoj spam kampanji — pristup će biti ograničen prema politici prihvatljivog korišćenja. Proveri svoju mašinu prema znacima kompromitacije.

Keširanje i statički fajlovi

Najučinkovitija tehnika protiv poplave zahteva je da istu stvar ne računaš dvaput:

location /static/ {
    expires 30d;
    add_header Cache-Control "public";
}

Keširaj teške stranice na strani aplikacije. Zahtev koji se servira iz keša košta stotine puta manje.

Česte greške

  • Postavljanje limit_req bez burst — obični korisnici čija stranica povlači dva desetina fajlova bivaju odsečeni.
  • Ručno blokiranje adresa jednu po jednu tokom distribuiranog napada: ima ih hiljade i nećeš stići.
  • Potpuno blokiranje ICMP — kvari pregovaranje o veličini paketa, vidi MTU.
  • Zamena sopstvenog baga za napad: petlja u kodu, pretraživački bot koji puzi kroz direktorijum koji si zaboravio da isključiš, beskonačni ponovni pokušaji klijenta.

Postavi limite unapred, na mirnoj mašini. Tokom poplave zahteva nećeš moći da podesiš vrednosti rate i burst: menjaćeš konfiguraciju naslepo i u delićima.