DDoS i drugi napadi na iptables (Anti-DDoS sigurnost u iptablesima)

Izbjegavajte napad DDoS con iptables Ima mnogo načina da to učini, prema veličini paketa, prema ograničenju veze itd. Ovdje ćemo vidjeti kako ćemo na jednostavan, intuitivan i dobro objašnjen način postići cilj, kao i zaustaviti druge dosadne napade na naše servere.

# Iptables

IPT="/sbin/iptables"
ETH="eth0"

#Todo el tráfico syn
$IPT -P INPUT DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -P OUTPUT DROP
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A OUTPUT -m state --state INVALID -j DROP
$IPT -P FORWARD DROP
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A FORWARD -m state --state INVALID -j DROP
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A FORWARD -i lo -o lo -j ACCEPT

#Cuando sube la carga
$IPT -A INPUT -p tcp --syn -j REJECT --reject-with icmp-port-unreachable

#La que mejor va
$IPT -N syn-flood
$IPT -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
$IPT -A syn-flood -j LOG --log-prefix "SYN flood: "
$IPT -A syn-flood -j DROP

#Igual que el de arriba pero muy raw
$IPT -N syn-flood
$IPT -A INPUT -i eth0:2 -p tcp --syn -j syn-flood
$IPT -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A syn-flood -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT

#Descartar paquetes mal formados
$IPT -N PKT_FAKE
$IPT -A PKT_FAKE -m state --state INVALID -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 ! --syn -m state --state NEW -j DROP
$IPT -A PKT_FAKE -f -j DROP
$IPT -A PKT_FAKE -j RETURN

#Syn-flood
$IPT -N syn-flood
$IPT -A INPUT -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A FORWARD -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A syn-flood -m limit --limit 4/s --limit-burst 16 -j RETURN
$IPT -A syn-flood -m limit --limit 75/s --limit-burst 100 -j RETURN -A syn-flood -j LOG --log-prefix "SYN FLOOD " --log-tcp-sequence --log-tcp-options --log-ip-options -m limit --limit 1/second
$IPT -A syn-flood -j DROP

#Requiere módulo "recent"
modprobe ipt_recent
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j DROP

# explicación:
# Se añade cada ip que se conecte a la tabla de recent
# Por por cada ip en la tabla de recent si hace mas de x hits en x segundos, se dropea.
$IPT -I INPUT -p tcp --syn -m recent --set
$IPT -I INPUT -p tcp --syn -m recent --update --seconds 10 --hitcount 30 -j DROP

#UDP Flood
$IPT -A OUTPUT -p udp -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -p udp -m limit --limit 100/s -j ACCEPT
$IPT -A OUTPUT -p udp -j DROP

Ono što radi je prebrojati broj SYN paketa (Početak TCP veze) za svaku IP adresu u zadnjih 10 sekundi. Ako dosegne 30, odbacuje taj paket, tako da veza neće biti uspostavljena (TCP će pokušati nekoliko puta, kada padne ispod granice, to se može postaviti).

#Evitando Layer7 DoS limitando a 80 la máxima cantidad de conexiones
$IPT -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-upto 50/min --hashlimit-burst 80 --hashlimit-mode srcip --hashlimit-name http -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -j DROP

#Permitir el ping, pero a 1 paquete por segundo, para evitar un ataque ICMP Flood
$IPT -A INPUT -p icmp -m state --state NEW --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT
$IPT -A INPUT -p icmp -j DROP

#Evitando que escaneen la máquina
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,RST SYN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,RST FIN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,FIN FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,URG URG –j DROP

Evo skripte u našoj Paste: Paste.FromLinux.net (Prethodna skripta)

Reference:

 


Sadržaj članka pridržava se naših principa urednička etika. Da biste prijavili grešku, kliknite ovdje.

14 komentara, ostavi svoj

Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   KZKG ^ Gaara rekao je

    I zato sam stavio vodič prije DDoS napada 😉
    Da biste stavili / objasnili razlog ili problem (prethodni vodič), a također vam dali rješenje (ovaj vodič) 🙂

    1.    diazepan rekao je

      perfektno.

  2.   Koratsuki rekao je

    Dječji slatkiš ...

  3.   hugo rekao je

    Dobar članak.

    Moja dva centa:

    U slučaju UDP paketa, SYN zastavica ne postoji jer je to protokol bez državne kontrole. Međutim, paradoksalno, NOVA i USTANOVLJENA stanja postoje jer iptables interno nosi tablice u tu svrhu.

    S druge strane, po mom mišljenju bolje je koristiti DROP odredište umjesto REJECT iz dva razloga: prvo, odbijanjem se daju informacije mogućem napadaču, a takođe računar koristi dio svoje veze za slanje obavijest napadačkom timu.

    Druga stvar je da je u slučaju ICMP protokola (i općenito) pogodno regulirati i zahtjeve i odgovore, jer smo u određenom trenutku vjerojatno zainteresirani za pinganje, a omogućavanjem ove funkcionalnosti neko bi mogao koristiti botnet i krivotvori izvornu adresu da bi pingirao mnoga od ovih kompromitovanih računara bez kraja, a odgovori bi išli na naš server, urušavajući ga ako ne bi bilo ograničenja.

    Obično dopuštam ICMP tipove 0,3,8,11 i 12 s ulaznim ograničenjem od jedne u sekundi i rafalom od dva ili četiri, a sve ostalo je prepušteno DROP-u.

    Zapravo, osim TCP protokola koji se može bolje regulirati, svi ostali trebali bi biti zaštićeni anti-DDoS mjerom kroz nedavno podudaranje tipa. U vezi s tim, kao zanimljivost, autor ovog modula voli prvo staviti ažuriranje, a zatim set.

    Iptables je zaista vrlo fleksibilan i moćan, do sada je jedina stvar koju sam predložio da učinim, a još nisam postigao (iako sam blizu postizanja), omogućiti psd modulu da izbjegne portscans, ali čak i uz sve Naučio sam o ovom alatu, mislim da još nisam ni ogrebao površinu. 😉

    Svejedno, na ovom svijetu uvijek moraš učiti.

  4.   Koratsuki rekao je

    Dobre točke Hugo, u evidenciji za naš pojmovnik: D, kao i uvijek, učim ...

    1.    hugo rekao je

      Inače, psd modul je već radio za mene. Problem je bio u tome što je u početku ovisio o funkcionalnosti jezgre koja je zastarjela zajedno s patch-o-matic, pa je prema zadanim postavkama uklonjena iz ugrađenih modula u netfilteru. Dakle, sada u Debianu da biste koristili psd ekstenziju, prvo morate to učiniti:


      aptitude -RvW install iptables-dev xtables-addons-{common,source} module-assistant
      module-assistant auto-install xtables-addons-source

      Tada se može normalno koristiti, prema uputama:

      man xtables-addons

      1.    daleko rekao je

        Hugo, zašto ne objaviš iptables.sh sa svojim prijedlozima za poboljšanje skripte ovog posta (što je dobro), uključujući psd

        hvala

  5.   Nelson rekao je

    Odličan članak, izvrsni iptables i izvrsno objašnjenje od @hugo. Sve sam više uvjeren da moram još puno naučiti.

  6.   Koratsuki rekao je

    Nisi samo ti, barem ja ... Nedostaje mi milion ... 😀

  7.   Miguel Angel rekao je

    Pozdrav svima i hvala na doprinosu, ali istina je da smo očajni, ne znamo što sada učiniti i dolazimo k vama zbog ove pogodnosti za koju znamo da ste stručnjaci za sisteme.
    Ja sam vođa zajednice u Španiji izvora kontra udara i mi smo jedan od rijetkih koji još uvijek jedva stoji, primamo stalne napade sa stroja i druge napade u intervalima, konstanta malo uklanja, ali zastaje na serveru malo, ali onaj koji je na vrijeme napravi veću štetu. Naša mašina je postavljena na 6.2 centos
    a mi imamo tcadmin za kontrolu servera. Možete nam napraviti konfiguraciju koja bi mogla zaustaviti ovu vrstu napada makar, to je da smo već očajni,
    i ne znamo kome se obratiti, znamo da postoje dvije botnete, jedna domaća i druga koja plaća vrijeme i silu. Stoga trpimo brutalne napade ove vrste već gotovo godinu dana, ako biste nam mogli pomoći, bili bismo vam vječno zahvalni jer je to sada neodrživo, volim konfigurirati servere poput hoobija i nisam dijete, uvjeravam vas, ali ovo je puno za mene. Ako želite da moj ts3 razgovara ili nešto slično, volio bih da nam pomognete kako bismo ovdje objavili rezultate i sve što je riješeno za dobro mnogih ljudi, bio bi to najposjećeniji blog godine u koji vas uvjeravam jer nevjerovatno je kako to smeta tim napadima ddos. Budući da smo ga pokušali sami konfigurirati i blokirali pristup stroju, morali smo ga formatirati iz bios datoteke, pa zamislite kako smo.
    Šaljem srdačan pozdrav. I moje čestitke za nestali blog, mnogi ljudi pronalaze jedan koji je ažuriran ovim. -Miguel Angel-

    1.    KZKG ^ Gaara rekao je

      Pozdrav kako ste 🙂
      Napišite mi na moj e-mail, sa zadovoljstvom ćemo vam pomoći 😀 - »kzkggaara [@] desdelinux [.] Net

  8.   ArthurShelby rekao je

    Pozdrav, momci, do sada dok radim, uzmite ovu skriptu, vrlo dobru usput ... samo jedna sumnja: Da li «nedavni» modul ne smanjuje performanse?

    Pozdrav - hvala / kome se sviđate?

  9.   Jose tapia rekao je

    Izvrstan doprinos, prijatelju, stavit ću vas u reference video vodiča koji montiramo, zagrljaj iz Kostarike

  10.   Cristian Marfil Reinoso rekao je

    zdravo,

    Ne možete koristiti skriptu na više portova?
    Imam server za igre i napadam i na web i na portove servera za igre.

    A pozdrav.