DDoS och andra attacker mot iptables (Anti-DDoS-säkerhet i iptables)

Undvik en attack DDoS med iptables Det har många sätt att göra det, efter paketstorlek, efter anslutningsgräns etc. Här kommer vi att se hur vi på ett enkelt, intuitivt och välförklarat sätt kommer att uppnå målet samt stoppa andra irriterande attacker på våra servrar.

# 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

Vad det gör är att räkna antalet SYN-paket (TCP-anslutning startar) för varje IP-adress under de senaste 10 sekunderna. Om den når 30, kasseras det paketet så att anslutningen inte upprättas (TCP kommer att försöka flera gånger, när det sjunker under gränsen kan det ställas in).

#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

Här är manuset i vår klistra in: Paste.FromLinux.net (föregående skript)

referenser:

 


Innehållet i artikeln följer våra principer om redaktionell etik. Klicka på för att rapportera ett fel här.

14 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras.

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   KZKG ^ Gaara sade

    Och det är därför jag lägger in en handledning innan DDoS-attacker 😉
    För att ange / förklara orsaken eller problemet (föregående handledning), och också ge dig lösningen (denna handledning) 🙂

    1.    diazepam sade

      perfekt.

  2.   koratsuki sade

    Barngodis ...

  3.   Hugo sade

    Bra artikel

    Mina två cent:

    När det gäller UDP-paket finns inte SYN-flaggan eftersom det är ett protokoll utan tillståndskontroll. Men paradoxalt nog existerar de NYA och ESTABLERADE staterna eftersom iptables internt bär tabeller för detta ändamål.

    Å andra sidan är det enligt min mening bättre att använda en DROP-destination istället för REJECT, av två skäl: För det första, med en avvisning ger man information till en möjlig angripare, och också använder datorn en del av sin anslutning för att skicka anmälan till det attackerande laget.

    En annan sak är att det i fallet med ICMP-protokollet (och i allmänhet) är bekvämt att reglera både förfrågningarna och svaren, för vi är förmodligen intresserade av någon gång att pinga oss själva, och genom att aktivera denna funktion kan någon använda en botnet och förfalska källadressen för att pinga många av dessa komprometterade datorer utan slut, och svaren skulle gå till vår server och kollapsa den om inga gränser infördes.

    Jag tillåter vanligtvis ICMP-typerna 0,3,8,11 och 12 med en ingångsgräns på en per sekund och en burst på två eller fyra maximalt, och allt annat lämnas till DROP.

    Egentligen, förutom TCP-protokollet som kan regleras bättre, bör alla andra skyddas med en anti-DDoS-åtgärd genom en ny typmatchning. När det gäller detta, som en nyfikenhet, gillar författaren till denna modul att placera uppdateringen först och sedan uppsättningen.

    Iptables är verkligen väldigt flexibla och kraftfulla, hittills är det enda jag har föreslagit att göra och jag har ännu inte uppnått det (även om jag är nära att uppnå det), är att göra det möjligt för psd-modulen att undvika porter, men även med allt Jag har lärt mig om det här verktyget, jag tror att jag inte ens har repat ytan än. 😉

    Hur som helst, i den här världen måste du alltid studera.

  4.   koratsuki sade

    Bra poäng Hugo, registrerad för vår ordlista: D, som alltid, lärande ...

    1.    Hugo sade

      Förresten, jag har redan fått psd-modulen att fungera för mig. Problemet var att det ursprungligen berodde på en kärnfunktionalitet som avskaffades tillsammans med patch-o-matic, så det togs bort från de inbyggda modulerna i netfilter som standard. Så nu i Debian för att använda psd-tillägget måste du först göra detta:


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

      Den kan sedan användas normalt enligt instruktionerna:

      man xtables-addons

      1.    Alej sade

        Hugo, varför publicerar du inte en iptables.sh med dina förslag för att förbättra skriptet för det här inlägget (vilket är bra) inklusive psd

        tack

  5.   nelson sade

    Utmärkt artikel, utmärkta iptables och utmärkt förklaring från @hugo. Jag blir mer och mer övertygad om att jag fortfarande har mycket att lära mig.

  6.   koratsuki sade

    Det är inte du ensam, åtminstone jag ... Jag saknar en miljon ... 😀

  7.   Miguel Angel sade

    Hej alla, och tack för bidraget, men sanningen är att vi är desperata, vi vet inte vad vi ska göra nu, och vi kommer till er för detta av iptabellerna som vi vet att ni är experter på system.
    Jag är ledare för ett samhälle i Spanien med motstridskälla och vi är en av de få som fortfarande knappt står, vi får konstanta attacker från maskinen och andra attacker med jämna mellanrum, konstanten tar bort lite men lägger servern lite men den som är av tid gör mer skada. Vår maskin är monterad på 6.2 cent
    och vi har tcadmin för att styra servrarna. Du kan göra oss till en konfiguration som kan stoppa den här typen av attacker till och med lite, det är att vi redan är desperata,
    och vi vet inte vem vi ska vända oss till, vi vet att det finns två botnät, det ena hemlagat och det andra betalat för tid och kraft. Vi har därmed utsatts för brutala attacker av denna typ i nästan ett år, om du skulle kunna hjälpa oss skulle vi vara evigt tacksamma för att det är ohållbart nu, jag älskar att konfigurera servrar som hoobie, och jag är inte ett barn som jag försäkrar dig men det här är mycket för mig. Om du vill att min ts3 ska prata eller något annat skulle jag älska att du hjälper oss så att vi publicerar här resultaten och allt som löstes för människors bästa, det skulle vara den mest besökta bloggen för året som jag försäkrar dig för det är otroligt hur det irriterar dessa attacker. Eftersom vi försökte konfigurera den på egen hand och blockerade åtkomst till maskinen var vi tvungna att formatera den från bios så föreställ dig hur vi är.
    Jag skickar en hjärtlig hälsning. Och mina gratulationer för den saknade bloggen, många hittar en som har uppdaterats med den här. -Miguel Angel-

    1.    KZKG ^ Gaara sade

      Hej hur mår du 🙂
      Skriv mig till min e-post, vi hjälper dig med nöje 😀 - »kzkggaara [@] desdelinux [.] Net

  8.   ArthurShelby sade

    Hej killar, tills nu när jag arbetar, ta det här skriptet, väldigt bra ... bara ett tvivel: Minskar inte den "senaste" modulen prestanda?

    Hälsningar - Tack / Vem gillar dig?

  9.   Jose tapia sade

    Utmärkt bidrag min vän, jag kommer att lägga dig i referenserna till en tutorial-video som vi monterar, en kram från Costa Rica

  10.   Cristian Ivory Reinoso sade

    Hej,

    Kan du inte använda skriptet på flera portar?
    Jag har en spelserver och jag får attacker på både webben och spelserverportarna.

    En hälsning.