DDoS en andere aanvallen versus iptables (Anti-DDoS-beveiliging in iptables)

Voorkom een ​​aanval DDoS met iptables Het heeft veel manieren om dit te doen, op pakketgrootte, op verbindingslimiet, enz. Hier zullen we zien hoe we, op een gemakkelijke, intuïtieve en goed toegelichte manier, het doel zullen bereiken en ook andere vervelende aanvallen op onze servers zullen stoppen.

# 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

Wat het doet is het aantal SYN-pakketten tellen (Start van de TCP-verbinding) voor elk IP-adres in de afgelopen 10 seconden. Als het 30 bereikt, wordt dat pakket verwijderd, zodat de verbinding niet tot stand kan worden gebracht (TCP zal het verschillende keren proberen, als het onder de limiet komt, kan het worden ingesteld).

#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

Hier is het script in onze Plakken: Plakken.DesdeLinux.net (vorig script)

referenties:


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   KZKG ^ Gaara zei

    En daarom heb ik een tutorial geplaatst voordat DDoS-aanvallen 😉
    Om de reden of het probleem uit te leggen / uit te leggen (vorige tutorial), en ook de oplossing te geven (deze tutorial) 🙂

    1.    diazepam zei

      perfect.

  2.   koratsuki zei

    Snoep voor kinderen ...

  3.   Hugo zei

    Goed artikel

    Mijn twee cent:

    In het geval van UDP-pakketten is er geen SYN-vlag omdat het een protocol is zonder staatscontrole. Paradoxaal genoeg bestaan ​​de staten NEW en ESTABLISHED echter wel omdat iptables voor dit doel intern tabellen bevat.

    Aan de andere kant is het naar mijn mening beter om een ​​DROP-bestemming te gebruiken in plaats van REJECT, en wel om twee redenen: ten eerste geeft een afwijzing informatie aan een mogelijke aanvaller, en ook gebruikt de computer een deel van zijn connectiviteit om melding aan het aanvallende team.

    Een ander ding is dat het in het geval van het ICMP-protocol (en in het algemeen) handig is om zowel de verzoeken als de antwoorden te reguleren, omdat we waarschijnlijk op een bepaald moment geïnteresseerd zijn om onszelf te pingen, en door deze functionaliteit in te schakelen, zou iemand een botnet en vervalst het Van het bronadres, voer een eindeloze ping uit naar veel van deze gecompromitteerde pc's, en de antwoorden zouden naar onze server gaan en deze laten instorten als er geen limieten werden opgelegd.

    Ik sta meestal ICMP-typen 0,3,8,11 en 12 toe met een invoerlimiet van één per seconde en een burst van maximaal twee of vier, en al het andere wordt overgelaten aan DROP.

    Eigenlijk, behalve het TCP-protocol dat beter kan worden geregeld, moeten alle andere worden beschermd met een anti-DDoS-maatregel door middel van een recente typematch. Wat dit betreft, als een curiositeit, plaatst de auteur van deze module graag eerst de update en daarna de set.

    Iptables is echt heel flexibel en krachtig, tot nu toe is het enige dat ik heb voorgesteld te doen en ik heb het nog niet bereikt (hoewel ik het bijna haal), is om de psd-module in staat te stellen poortscans te vermijden, maar zelfs met alles Ik heb over deze tool geleerd, ik denk dat ik nog niet eens aan het oppervlak heb gekrast. 😉

    Hoe dan ook, in deze wereld moet je altijd studeren.

  4.   koratsuki zei

    Goede punten Hugo, geregistreerd voor onze woordenlijst: D, zoals altijd, aan het leren ...

    1.    Hugo zei

      Overigens heb ik de psd-module al voor me aan het werk. Het probleem was dat het aanvankelijk afhankelijk was van een kernelfunctionaliteit die samen met patch-o-matic was verouderd, dus werd het standaard verwijderd uit de ingebouwde modules in netfilter. Om nu in Debian de psd-extensie te gebruiken, moet u dit eerst doen:


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

      Het kan dan normaal worden gebruikt, volgens de instructies:

      man xtables-addons

      1.    weg zei

        Hugo, waarom publiceer je geen iptables.sh met je suggesties om het script van dit bericht te verbeteren (wat goed is) inclusief psd

        bedankt

  5.   Nelson zei

    Uitstekend artikel, uitstekende iptables en uitstekende uitleg van @hugo. Ik raak er steeds meer van overtuigd dat ik nog veel te leren heb.

  6.   koratsuki zei

    Jij bent niet alleen, ik tenminste ... ik mis een miljoen ... 😀

  7.   Miguel Angel zei

    Hallo allemaal, en bedankt voor de bijdrage, maar de waarheid is dat we wanhopig zijn, we weten niet wat we nu moeten doen, en we komen naar jullie toe voor dit van de iptables waarvan we weten dat jullie experts zijn in systemen.
    Ik ben de leider van een gemeenschap in Spanje met een bron van tegenaanvallen en we zijn een van de weinigen die nog nauwelijks staan, we ontvangen constante aanvallen van de machine en andere aanvallen met tussenpozen, de constante verwijdert weinig maar lekt de server een beetje maar degene die van de tijd is, doet meer schade. Onze machine is gemonteerd op een 6.2 centos
    en we hebben de tcadmin om de servers te besturen. Je zou een configuratie voor ons kunnen maken die dit type aanval zelfs maar een beetje zou kunnen stoppen, het is dat we al wanhopig zijn,
    en we weten niet tot wie we ons moeten wenden, we weten dat er twee botnets zijn, de ene zelfgemaakt en de andere betaald voor tijd en kracht. We hebben dus al bijna een jaar brute aanvallen van dit type doorstaan, als je ons zou kunnen helpen, zouden we je eeuwig dankbaar zijn omdat het nu onhoudbaar is, ik ben dol op het configureren van servers zoals hoobie, en ik ben geen kind dat ik je verzeker, maar dit is veel voor mij. Als je wilt dat mijn ts3 praat of wat dan ook, zou ik het geweldig vinden als je ons zou kunnen helpen, zodat we hier de resultaten zouden posten en alles wat is opgelost voor het welzijn van veel mensen, het zou de meest bezochte blog van het jaar zijn die ik je verzeker omdat het ongelooflijk is hoe het deze aanvallen ddo's irriteert. Omdat we het zelf probeerden te configureren en de toegang tot de machine blokkeerden, moesten we het formatteren vanuit de bios, dus stel je voor hoe het met ons gaat.
    Ik stuur een hartelijke groet. En mijn felicitaties voor de ontbrekende blog, veel mensen vinden er een die is bijgewerkt met deze. -Miguel Angel-

    1.    KZKG ^ Gaara zei

      Hallo hoe gaat het 🙂
      Schrijf naar mijn e-mail, we helpen je graag verder 😀 -» kzkggaara[@]desdelinux[.]netto

  8.   Arthur Shelby zei

    Hallo jongens tot nu toe dat ik aan het werk ben, neem dit script trouwens heel goed ... slechts één twijfel: vermindert de "recente" module de prestaties niet?

    Groeten - Dank u / wie vindt u leuk?

  9.   Jose tapia zei

    Uitstekende bijdrage mijn vriend, ik zal je in de referenties plaatsen van een instructievideo die we aan het monteren zijn, een knuffel uit Costa Rica

  10.   Cristian Ivory Reinoso zei

    Hallo,

    Kunt u het script niet op meerdere poorten gebruiken?
    Ik heb een gameserver en krijg aanvallen op zowel het web als de gameserverpoorten.

    Een groet.