DDoS a ďalšie útoky vs iptables (Anti-DDoS zabezpečenie v iptables)

Vyvarujte sa útoku DDoS s iptables Existuje mnoho spôsobov, ako to urobiť, podľa veľkosti paketu, limitu pripojenia atď. Tu uvidíme, ako ľahkým, intuitívnym a dobre vysvetleným spôsobom dosiahneme cieľ a zastavíme ďalšie nepríjemné útoky na naše servery.

# 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

Čo to robí, je spočítať počet paketov SYN (TCP pripojenie sa spustilo) pre každú adresu IP za posledných 10 sekúnd. Ak dosiahne 30, zahodí tento paket, takže sa spojenie nenadviaže (TCP sa pokúsi niekoľkokrát, keď klesne pod limit, ktorý je možné nastaviť).

#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

Tu je skript v našej paste: Vložiť.DesdeLinux.net (predchádzajúci skript)

Referencias:


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   KZKG ^ Gaara dijo

    A to je dôvod, prečo som dal DDoS útokom tutoriál 😉
    Uviesť / vysvetliť dôvod alebo problém (predchádzajúci tutoriál) a tiež vám dať riešenie (tento tutoriál) 🙂

    1.    diazepam dijo

      perfektné.

  2.   koratsuki dijo

    Detský cukrík ...

  3.   Hugo dijo

    Dobrý článok.

    Moje dva centy:

    V prípade paketov UDP neexistuje príznak SYN, pretože ide o protokol bez riadenia stavu. Paradoxne však existujú NOVÉ a ZOSTAVENÉ stavy, pretože iptables interne prenáša tabuľky na tento účel.

    Na druhej strane je podľa môjho názoru lepšie použiť miesto DROP miesto ODMIETNUTIE, a to z dvoch dôvodov: po prvé, pri odmietnutí poskytuje informácie možnému útočníkovi a tiež počítač využíva časť svojej konektivity na odosielanie oznámenie útočiacemu tímu.

    Ďalšia vec je, že v prípade protokolu ICMP (a všeobecne) je vhodné regulovať požiadavky aj odpovede, pretože pravdepodobne máme v určitom okamihu záujem pingovať sami seba a povolením tejto funkcie môže niekto použiť botnet a sfalšovať zdrojovú adresu na ping mnohých z týchto kompromitovaných počítačov bez konca a odpovede by sa dostali na náš server, ktorý by sa zbalil, keby neboli stanovené žiadne limity, a zbalili by ho.

    Zvyčajne povoľujem typy ICMP 0,3,8,11 a 12 so vstupným limitom jeden za sekundu a výbuch dvoch alebo štyroch max. A všetko ostatné je ponechané na DROP.

    Vlastne, s výnimkou protokolu TCP, ktorý je možné lepšie regulovať, by všetky ostatné mali byť chránené pomocou opatrenia proti DDoS prostredníctvom nedávnej zhody typu. Z tohto dôvodu, ako zaujímavosť, autor tohto modulu rád umiestni najskôr aktualizáciu a až potom sadu.

    Iptables je naozaj veľmi flexibilný a výkonný, zatiaľ jediná vec, ktorú som navrhol urobiť a ešte som ju nedosiahol (aj keď som blízko k jej dosiahnutiu), je umožniť modulu psd vyhnúť sa portom, ale aj pri všetkom Dozvedel som sa o tomto nástroji, myslím, že som ešte ani len nepoškriabal povrch. 😉

    V každom prípade, na tomto svete musíte vždy študovať.

  4.   koratsuki dijo

    Dobré body, Hugo, k nášmu slovníku: D, ako vždy, učenie sa ...

    1.    Hugo dijo

      Mimochodom, modul psd som už dostal, aby pracoval pre mňa. Problém bol v tom, že spočiatku závisel od funkcionality jadra, ktorá bola zastaraná spolu s patch-o-matic, takže bola štandardne odstránená zo zabudovaných modulov v netfilteri. Takže aby ste teraz v Debiane mohli používať rozšírenie psd, musíte to urobiť najskôr:


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

      Potom sa môže normálne používať podľa pokynov:

      man xtables-addons

      1.    preč dijo

        Hugo, prečo nezverejníš iptables.sh so svojimi návrhmi na zlepšenie skriptu tohto príspevku (čo je dobré) vrátane psd

        vďaka

  5.   Nelson dijo

    Vynikajúci článok, vynikajúce iptables a vynikajúce vysvetlenie od @hugo. Čoraz viac som presvedčený, že sa musím ešte veľa učiť.

  6.   koratsuki dijo

    Nie si to sám, aspoň ja ... chýba mi milión ... 😀

  7.   Miguel Angel dijo

    Ahojte všetci a ďakujem za príspevok, ale pravdou je, že sme zúfalí, nevieme, čo máme robiť teraz, a prichádzame k vám kvôli tejto tabuľke iptables, o ktorej vieme, že ste odborníkmi na systémy.
    Som vodcom španielskej komunity zdrojov Counter Strike a sme jedni z mála, ktorí stále sotva stoja, dostávame neustále útoky zo stroja a ďalšie útoky v časových intervaloch, konštanta odstraňuje málo, ale servera uráža trochu, ale ten, ktorý je čas, spôsobí väčšie škody. Náš stroj je namontovaný na 6.2 centos
    a máme tcadmin na kontrolu serverov. Mohli by ste nám urobiť konfiguráciu, ktorá by tento typ útoku mohla čo i len trochu zastaviť, to znamená, že sme už zúfalí,
    a nevieme, na koho sa obrátiť, vieme, že existujú dva botnety, jeden domáci a druhý platený za čas a silu. Trváme tak brutálne útoky tohto typu už takmer rok, ak by ste nám mohli pomôcť, boli by sme vám večne vďační, pretože to je teraz neudržateľné, rád konfigurujem servery ako hoobie a nie som dieťa, o ktorom vás ubezpečujem, ale toto je pre mňa veľa. Ak chcete, aby môj ts3 hovoril alebo čokoľvek, bol by som rád, keby ste nám pomohli, aby sme sem zverejnili výsledky a všetko, čo bolo vyriešené pre blaho mnohých ľudí, bol by to najnavštevovanejší blog roka, o ktorom vás ubezpečujem, pretože je neuveriteľné, ako to tieto útoky otravuje. Pretože sme sa to pokúsili nakonfigurovať sami a zablokovať prístup k zariadeniu, museli sme ho naformátovať z biosu, tak si predstavte, ako sa máme.
    Posielam srdečný pozdrav. A gratulujem k chýbajúcemu blogu, veľa ľudí nájde ten, ktorý bol aktualizovaný týmto. -Miguel Angel-

    1.    KZKG ^ Gaara dijo

      Ahojte ako sa máte 🙂
      Napíšte mi na môj email, radi vám pomôžeme 😀 -» kzkggaara[@]desdelinux[.]netto

  8.   ArthurShelby dijo

    Ahojte chlapci, až doteraz pracujem, vezmite si tento skript, mimochodom veľmi dobrý ... len jedna pochybnosť: Neznižuje "nedávny" modul výkon?

    Zdravím - ďakujem / Kto ťa má rád?

  9.   Jose tapia dijo

    Vynikajúci príspevok môj priateľ, uvediem vás v odkazoch na inštruktážne video, ktoré montujeme, objatie z Kostariky

  10.   Cristian Ivory Reinoso dijo

    Dobrý deň,

    Nemôžete použiť skript na viacerých portoch?
    Mám herný server a dostávam útoky na web aj na porty herného servera.

    Pozdrav.