DDoS og andre angreb vs iptables (Anti-DDoS-sikkerhed i iptables)

Undgå et angreb DDoS med iptables Det har mange måder at gøre det på, efter pakkestørrelse, efter forbindelsesgrænse osv. Her vil vi se, hvordan vi på en let, intuitiv og godt forklaret måde vil nå målet samt stoppe andre irriterende angreb på vores 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

Hvad det gør er at tælle antallet af SYN-pakker (TCP-forbindelsesstart) for hver IP-adresse i de sidste 10 sekunder. Hvis den når 30, kasseres den pakke, så forbindelsen oprettes ikke (TCP vil prøve igen flere gange, når det falder under grænsen, kan det indstilles).

#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

Her er manuskriptet i vores Indsæt: Sæt ind.DesdeLinux.net (tidligere script)

referencer:


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   KZKG ^ Gaara sagde han

    Og det er derfor, jeg har lagt en tutorial, før DDoS-angreb 😉
    At sætte / forklare årsagen eller problemet (forrige tutorial) og også give dig løsningen (denne tutorial) 🙂

    1.    diazepam sagde han

      perfecto.

  2.   koratsuki sagde han

    Børns slik ...

  3.   Hugo sagde han

    God artikel

    Mine to cent:

    I tilfælde af UDP-pakker er der intet SYN-flag, fordi det er en protokol uden tilstandskontrol. Men paradoksalt nok eksisterer de NYE og ETABLEREDE stater, fordi iptables internt bærer tabeller til dette formål.

    På den anden side er det efter min mening bedre at bruge en DROP-destination i stedet for REJECT af to grunde: For det første giver man med afvisning information til en mulig angriber, og computeren bruger også en del af sin forbindelse til at sende underretning til det angribende hold.

    En anden ting er, at i tilfælde af ICMP-protokollen (og generelt) er det praktisk at regulere både anmodningerne og svarene, fordi vi sandsynligvis på et eller andet tidspunkt er interesseret i at pinge os selv, og ved at aktivere denne funktionalitet kan nogen bruge en botnet og forfalsk Fra kildeadressen, gør en endeløs ping til mange af disse kompromitterede pc'er, og svarene går til vores server og kollapser den, hvis der ikke blev pålagt nogen grænser.

    Jeg tillader normalt ICMP-typer 0,3,8,11 og 12 med en inputgrænse på en pr. Sekund og en burst på to eller fire maksimum, og alt andet overlades til DROP.

    Faktisk, bortset fra TCP-protokollen, der kan reguleres bedre, skal alle de andre beskyttes med en anti-DDoS-foranstaltning ved hjælp af en nylig typematch. Med hensyn til dette, som en nysgerrighed, kan forfatteren af ​​dette modul gerne placere opdateringen først og derefter sættet.

    Iptables er virkelig meget fleksibel og kraftfuld, indtil videre er det eneste, jeg har foreslået at gøre, og jeg har ikke opnået det endnu (selvom jeg er tæt på at opnå det), er at gøre det muligt for psd-modulet at undgå portscans, men selv med alt Jeg har lært om dette værktøj, jeg tror, ​​jeg har ikke engang ridset overfladen endnu. 😉

    I hvert fald er du altid nødt til at studere.

  4.   koratsuki sagde han

    Gode ​​punkter Hugo, på vores ordliste: D, som altid, læring ...

    1.    Hugo sagde han

      Forresten fik jeg allerede psd-modulet til at arbejde for mig. Problemet var, at det oprindeligt var afhængig af en kernefunktionalitet, der blev udfaset sammen med patch-o-matic, så det blev som standard fjernet fra de indbyggede moduler i netfilter. Så nu i Debian for at bruge psd-udvidelsen skal du først gøre dette:


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

      Den kan derefter bruges normalt i henhold til instruktionerne:

      man xtables-addons

      1.    væk sagde han

        Hugo, hvorfor offentliggør du ikke en iptables.sh med dine forslag til at forbedre scriptet til dette indlæg (hvilket er godt) inklusive psd

        Tak

  5.   nelson sagde han

    Fremragende artikel, fremragende iptables og fremragende forklaring fra @hugo. Jeg bliver mere og mere overbevist om, at jeg stadig har meget at lære.

  6.   koratsuki sagde han

    Det er ikke dig alene, i det mindste mig ... Jeg mangler en million ... 😀

  7.   Miguel Angel sagde han

    Hej alle sammen, og tak for bidraget, men sandheden er, at vi er desperate, vi ved ikke, hvad vi skal gøre nu, og vi kommer til jer for dette af de iptables, som vi ved, at I er eksperter i systemer.
    Jeg er leder af et samfund i Spanien med modstrejkskilde, og vi er en af ​​de få, der stadig næsten ikke står, vi modtager konstante angreb fra maskinen og andre angreb med tidsintervaller, konstanten fjerner lidt, men lokker serveren lidt, men den, der er tid, gør mere skade. Vores maskine er monteret på 6.2 centos
    og vi har tcadmin til at kontrollere serverne. Du kan gøre os til en konfiguration, der kan stoppe denne type angreb endda lidt, det er, at vi allerede er desperate,
    og vi ved ikke, hvem vi skal henvende os til, vi ved, at der er to botnet, det ene hjemmelavede og det andet betalt for tid og kraft. Vi har således udholdt brutale angreb af denne type i næsten et år. Hvis du kunne hjælpe os, ville vi være evigt taknemmelige, fordi det ikke er bæredygtigt nu, jeg elsker at konfigurere servere som hoobie, og jeg er ikke et barn, som jeg forsikrer dig om, men dette er meget for mig. Hvis du vil have min ts3 til at tale eller noget, ville jeg elske, hvis du kunne hjælpe os, så vi ville sende resultaterne her og alt, hvad der blev løst til gavn for mange mennesker, det ville være den mest besøgte blog i året, som jeg forsikrer dig om fordi det er utroligt, hvordan det irriterer disse angreb ddos. Da vi forsøgte at konfigurere det alene og blokerede adgangen til maskinen, måtte vi formatere det fra bios, så forestil dig, hvordan vi er.
    Jeg sender en hjertelig hilsen. Og min tillykke med den manglende blog, mange mennesker finder en, der blev opdateret med denne. -Miguel Angel-

    1.    KZKG ^ Gaara sagde han

      Hej hvordan har du det?
      Skriv til min e-mail, vi hjælper dig gerne 😀 -» kzkggaara[@]desdelinux[.]net

  8.   ArthurShelby sagde han

    Hej fyre indtil nu, hvor jeg arbejder, tag dette script, meget godt forresten ... bare en tvivl: Reducerer det "nylige" modul ikke ydeevnen?

    Hilsner - Tak / Hvem kan lide dig?

  9.   Jose tapia sagde han

    Fremragende bidrag min ven, jeg vil sætte dig i referencerne til en tutorial-video, som vi monterer, et knus fra Costa Rica

  10.   Cristian Ivory Reinoso sagde han

    Hej,

    Kan ikke bruge scriptet på flere porte?
    Jeg har en spilserver, og jeg får angreb på både internettet og spilserverportene.

    En hilsen.