DDoS a další útoky vs iptables (zabezpečení anti-DDoS v iptables)

Vyhněte se útoku DDoS s iptables Má mnoho způsobů, jak to udělat, podle velikosti paketu, omezení připojení atd. Zde uvidíme, jak snadným, intuitivním a dobře vysvětleným způsobem dosáhneme cíle a zastavíme další otravné ú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

Počítá počet paketů SYN (Spuštění připojení TCP) pro každou adresu IP za posledních 10 sekund. Pokud dosáhne 30, zahodí tento paket, takže připojení nebude navázáno (TCP se pokusí několikrát, když klesne pod limit, který lze nastavit).

#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

Zde je skript v našem Paste: Vložit.DesdeLinux.net (předchozí skript)

reference:


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   KZKG ^ Gaara řekl

    A proto jsem před útoky DDoS dal tutoriál 😉
    Vysvětlit / vysvětlit důvod nebo problém (předchozí tutoriál) a také vám dát řešení (tento tutoriál) 🙂

    1.    diazepam řekl

      perfektní.

  2.   koratsuki řekl

    Dětská cukrovinka ...

  3.   Hugo řekl

    Dobrý článek.

    Moje dva centy:

    V případě UDP paketů příznak SYN neexistuje, protože se jedná o protokol bez řízení stavu. Paradoxně však existují stavy NEW a ESTABLISHED, protože iptables interně přenáší tabulky pro tento účel.

    Na druhou stranu je podle mého názoru lepší použít místo DROP místo ODMÍTNUTÍ cíl, a to ze dvou důvodů: za prvé, s odmítnutím poskytuje informace možnému útočníkovi a také počítač používá část své konektivity k odesílání oznámení útočícímu týmu.

    Další věc je, že v případě protokolu ICMP (a obecně) je vhodné regulovat jak požadavky, tak odpovědi, protože nás pravděpodobně v určitém okamžiku zajímá ping, a povolením této funkce může někdo použít botnet a zfalšovat Ze zdrojové adresy proveďte nekonečný ping na mnoho z těchto kompromitovaných počítačů a odpovědi by šly na náš server a sbalily by je, kdyby nebyly stanoveny žádné limity.

    Obvykle povoluji typy ICMP 0,3,8,11 a 12 se vstupním limitem jeden za sekundu a výbuch maxima dvou nebo čtyř a vše ostatní je ponecháno na DROP.

    Ve skutečnosti, kromě protokolu TCP, který lze lépe regulovat, by všechny ostatní měly být chráněny pomocí anti-DDoS opatření pomocí nedávné shody typu. Z tohoto důvodu autor tohoto modulu jako zvědavost rád umístí nejprve aktualizaci a poté sadu.

    Iptables je opravdu velmi flexibilní a výkonný, zatím jediná věc, kterou jsem navrhoval udělat a dosud jsem toho nedosáhl (i když jsem blízko k jeho dosažení), je umožnit modulu psd vyhnout se portcanům, ale i se vším, co jsem se o tom naučil nástroj, myslím, že jsem povrch ještě nepoškrábal. 😉

    V tomto světě musíte vždy studovat.

  4.   koratsuki řekl

    Dobré body, Hugo, ke spisu pro náš glosář: D, jako vždy, učení ...

    1.    Hugo řekl

      Mimochodem, už jsem dostal modul psd, aby pro mě pracoval. Problém spočíval v tom, že to původně záviselo na funkčnosti jádra, která byla zastaralá spolu s patch-o-matic, takže byla ve výchozím nastavení odstraněna z vestavěných modulů v netfilteru. Chcete-li tedy v Debianu použít rozšíření psd, musíte to udělat nejdříve:


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

      Poté jej lze normálně použít podle pokynů:

      man xtables-addons

      1.    pryč řekl

        Hugo, proč nezveřejníte iptables.sh se svými návrhy na vylepšení skriptu tohoto příspěvku (což je dobré) včetně psd

        díky

  5.   Nelson řekl

    Vynikající článek, vynikající iptables a vynikající vysvětlení od @hugo. Stále více jsem přesvědčen, že se musím ještě hodně učit.

  6.   koratsuki řekl

    Nejsi to ty sám, alespoň já ... chybí mi milion ... 😀

  7.   Miguel Angel řekl

    Ahoj všichni a děkuji za příspěvek, ale pravdou je, že jsme zoufalí, nevíme, co dělat teď, a přijdeme k vám kvůli této tabulce iptables, o které víme, že jste odborníky na systémy.
    Jsem vůdcem španělské komunity protiútoku a jsme jedni z mála, kteří stále sotva stojí, dostáváme neustálé útoky ze stroje a další útoky v časových intervalech, konstanta málo odstraňuje, ale zneklidňuje server trochu, ale ten, který je čas, způsobí větší škody. Náš stroj je namontován na 6.2 centu
    a máme tcadmin k ovládání serverů. Mohli byste z nás udělat konfiguraci, která by tento typ útoku mohla i trochu zastavit, je to, že už jsme zoufalí,
    a nevíme, na koho se obrátit, víme, že existují dva botnety, jeden domácí a druhý placený za čas a sílu. Trváme tedy brutální útoky tohoto typu téměř rok, pokud byste nám mohli pomoci, byli bychom věčně vděční, protože je to nyní neudržitelné, rád konfiguruji servery jako hoobie a nejsem dítě, o kterém vás ujišťuji, ale to je pro mě hodně. Pokud chcete, aby můj ts3 mluvil nebo cokoli jiného, ​​rád bych vám pomohl, abychom zde zveřejnili výsledky a vše, co bylo vyřešeno pro dobro mnoha lidí, byl by to nejnavštěvovanější blog roku, o kterém vás ujišťuji, protože je neuvěřitelné, jak tyto útoky obtěžuje ddos. Protože jsme se to pokusili nakonfigurovat sami a zablokovali jsme přístup ke stroji, museli jsme to naformátovat z biosu, takže si představte, jak se máme.
    Posílám srdečný pozdrav. A gratuluji k chybějícímu blogu, mnoho lidí najde ten, který byl aktualizován tímto. -Miguel Angel-

    1.    KZKG ^ Gaara řekl

      Ahoj jak se máš 🙂
      Napište na můj email, rádi vám pomůžeme 😀 -» kzkggaara[@]desdelinux[.]síť

  8.   ArthurShelby řekl

    Ahoj kluci, až dosud pracuji, vezměte si tento skript, mimochodem velmi dobrý ... jen jedna pochybnost: Nesnižuje modul «recent» výkon?

    Zdravím - děkuji / Kdo vás má rád?

  9.   José Tapia řekl

    Vynikající příspěvek, příteli, uvedu vás do odkazů na výukové video, které připevňujeme, objetí z Kostariky

  10.   Cristian Ivory Reinoso řekl

    Dobrý den,

    Nemůžete použít skript na více portech?
    Mám herní server a dostávám útoky na web i na porty herního serveru.

    Pozdrav.