DDoS og andre angrep mot iptables (Anti-DDoS-sikkerhet i iptables)

Unngå et angrep DDoS med iptables Det har mange måter å gjøre det på, etter pakkestørrelse, etter tilkoblingsgrense osv. Her vil vi se hvordan vi på en enkel, intuitiv og godt forklart måte vil nå målet, samt stoppe andre irriterende angrep på serverne våre.

# 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

Hva den gjør er å telle antall SYN-pakker (Start av TCP-tilkobling) for hver IP-adresse de siste 10 sekundene. Hvis den når 30, forkastes den pakken, slik at forbindelsen ikke blir opprettet (TCP vil prøve på nytt flere ganger, når det faller under grensen, kan det settes).

#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 manuset i vår lim: Lim inn.DesdeLinux.net (tidligere skript)

referanser:


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   KZKG ^ Gaara sa

    Og det er derfor jeg la en opplæring før DDoS angrep 😉
    Å sette / forklare årsaken eller problemet (forrige opplæring), og også gi deg løsningen (denne opplæringen) 🙂

    1.    diazepam sa

      perfekt.

  2.   koratsuki sa

    Barnas godteri ...

  3.   Hugo sa

    God artikkel.

    Mine to øre:

    Når det gjelder UDP-pakker, er det ikke noe SYN-flagg fordi det er en protokoll uten statlig kontroll. Men paradoksalt nok eksisterer de NYE og ESTABLISERTE statene fordi iptables internt har bord for dette formålet.

    På den annen side er det etter min mening bedre å bruke en DROP-destinasjon i stedet for REJECT, av to grunner: For det første gir man med avslag informasjon til en mulig angriper, og datamaskinen bruker også en del av tilkoblingen for å sende varsling til det angripende teamet.

    En annen ting er at når det gjelder ICMP-protokollen (og generelt), er det praktisk å regulere både forespørslene og svarene, fordi vi sannsynligvis er interessert på et tidspunkt å pinge oss selv, og ved å aktivere denne funksjonaliteten kan noen bruke en botnet og forfalsk kildeadressen for å pinge mange av disse kompromitterte PC-ene uten ende, og svarene vil gå til serveren vår og kollapse den hvis ingen grenser ble pålagt.

    Jeg tillater vanligvis ICMP-typer 0,3,8,11 og 12 med en inngangsgrense på en per sekund og en burst på maksimalt to eller fire, og alt annet er overlatt til DROP.

    Egentlig, bortsett fra TCP-protokollen som kan reguleres bedre, bør alle de andre beskyttes med et anti-DDoS-tiltak ved hjelp av en nylig type tilfeldighet. Når det gjelder dette, som en kuriositet, liker forfatteren av denne modulen å plassere oppdateringen først og deretter settet.

    Iptables er veldig fleksibel og kraftig, så langt er det eneste jeg har foreslått å gjøre, og jeg har ennå ikke oppnådd det (selv om jeg er i nærheten av å oppnå det), er å gjøre det mulig for psd-modulen å unngå porter, men til og med med alt Jeg har lært om dette verktøyet, jeg tror jeg ikke en gang har klø på overflaten ennå. 😉

    Uansett, i denne verden må du alltid studere.

  4.   koratsuki sa

    Gode ​​poeng Hugo, på filen for vår ordliste: D, som alltid, læring ...

    1.    Hugo sa

      Forresten, jeg har allerede fått psd-modulen til å fungere for meg. Problemet var at det i utgangspunktet var avhengig av en kjernefunksjonalitet som ble avviklet sammen med patch-o-matic, så den ble fjernet fra de innebygde modulene i netfilter som standard. Så nå i Debian for å bruke psd-utvidelsen, må du først gjøre dette:


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

      Den kan deretter brukes normalt, som beskrevet:

      man xtables-addons

      1.    borte sa

        Hugo, hvorfor publiserer du ikke en iptables.sh med forslagene dine for å forbedre skriptet til dette innlegget (som er bra) inkludert psd

        Takk

  5.   nelson sa

    Utmerket artikkel, gode iptables og utmerket forklaring fra @hugo. Jeg blir mer og mer overbevist om at jeg fortsatt har mye å lære.

  6.   koratsuki sa

    Det er ikke deg alene, i det minste meg ... Jeg savner en million ... 😀

  7.   Miguel Angel sa

    Hei alle sammen, og takk for bidraget, men sannheten er at vi er desperate, vi vet ikke hva vi skal gjøre nå, og vi kommer til dere for dette av iptablene som vi vet at dere er eksperter på systemer.
    Jeg er leder for et samfunn i Spania med motstreikskilde, og vi er en av få som fremdeles knapt står, vi mottar konstante angrep fra maskinen og andre angrep med jevne mellomrom, konstanten fjerner lite, men lokker serveren litt, men den som er av tid gjør mer skade. Maskinen vår er montert på 6.2 cento
    og vi har tcadmin for å kontrollere serverne. Du kan gjøre oss til en konfigurasjon som kan stoppe denne typen angrep til og med litt, det er at vi allerede er desperate,
    og vi vet ikke hvem vi skal henvende oss til, vi vet at det er to botnett, det ene hjemmelaget og det andre betalt for tid og krefter. Vi har dermed utholdt brutale angrep av denne typen i nesten et år. Hvis du kunne hjelpe oss, ville vi være evig takknemlige fordi det ikke er bærekraftig nå, jeg elsker å konfigurere servere som hoobie, og jeg er ikke et barn som jeg forsikrer deg om, men dette er mye for meg. Hvis du vil at ts3-en min skal snakke eller noe, vil jeg gjerne ha hjulpet oss, så vi vil legge ut resultatene her og alt som ble løst til glede for mange mennesker, det ville være den mest besøkte bloggen i året som jeg forsikrer deg om. fordi det er utrolig hvordan det irriterer disse angrepene. Siden vi prøvde å konfigurere den på egenhånd og blokkerte tilgangen til maskinen, måtte vi formatere den fra bios så forestill deg hvordan vi har det.
    Jeg sender en hjertelig hilsen. Og gratulerer for bloggen som mangler, mange finner en som ble oppdatert med denne. -Miguel Angel-

    1.    KZKG ^ Gaara sa

      Hei hvordan har du det 🙂
      Skriv til e-posten min, vi hjelper deg gjerne 😀 -» kzkggaara[@]desdelinux[.]nett

  8.   ArthurShelby sa

    Hei gutter til nå som jeg jobber, ta dette skriptet, veldig bra forresten ... bare en tvil: Reduserer ikke den "siste" modulen ytelsen?

    Hilsen - Takk / Hvem liker deg?

  9.   Jose tapia sa

    Utmerket bidrag min venn, jeg vil sette deg i referansene til en opplæringsvideo som vi monterer, en klem fra Costa Rica

  10.   Cristian Ivory Reinoso sa

    Hei,

    Kan du ikke bruke skriptet på flere porter?
    Jeg har en spillserver og jeg får angrep på både nettet og spillserverportene.

    En hilsen.