DDoS dhe sulme të tjera vs iptables (Siguria anti-DDoS në iptables)

Shmangni një sulm DDoS me iptables Ka shumë mënyra për ta bërë atë, sipas madhësisë së paketës, sipas kufirit të lidhjes, etj. Këtu do të shohim se si, në një mënyrë të lehtë, intuitive dhe të shpjeguar mirë, ne do të arrijmë objektivin, si dhe do të ndalojmë sulmet e tjera të bezdisshme ndaj serverave tanë.

# 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

Ajo që bën është të numërojë numrin e paketave SYN (Fillimi i lidhjes TCP) për secilën adresë IP në 10 sekondat e fundit. Nëse arrin 30, ajo e hedh atë paketë në mënyrë që lidhja të mos vendoset (TCP do të riprovojë disa herë, kur të bjerë nën kufirin që mund të caktohet).

#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

Këtu është skenari në ngjitjen tonë: Ngjit.DesdeLinux.net (Skenari i mëparshëm)

referencat:


14 komente, lini tuajën

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   KZKG ^ Gaara dijo

    Dhe kjo është arsyeja pse unë vendos një manual para sulmeve DDoS
    Të vendosni / shpjegoni arsyen ose problemin (tutorialin e mëparshëm), dhe gjithashtu t'ju jap zgjidhjen (ky tutorial)

    1.    diazepani dijo

      Perfecto.

  2.   koratsuki dijo

    Candmbëlsira për fëmijë ...

  3.   Hugo dijo

    Artikull i mirë

    Dy centë e mi:

    Në rastin e paketave UDP, nuk ka asnjë flamur SYN sepse është një protokoll pa kontroll shtetëror. Sidoqoftë, në mënyrë paradoksale, shtetet e REA dhe TST THEMELUARA ekzistojnë sepse iptabelët mbartin brenda tabela për këtë qëllim.

    Nga ana tjetër, për mendimin tim është më mirë të përdorësh një destinacion DROP në vend të REJECT, për dy arsye: së pari, me një refuzim po i jep informacion një sulmuesi të mundshëm, dhe gjithashtu kompjuteri po përdor një pjesë të lidhjes së tij për të dërguar njoftimi për ekipin sulmues.

    Një tjetër gjë është që në rastin e protokollit ICMP (dhe në përgjithësi) është e përshtatshme të rregullojmë si kërkesat ashtu edhe përgjigjet, sepse ne ndoshta jemi të interesuar në një moment të pinging veten, dhe duke mundësuar këtë funksionalitet, dikush mund të përdorë një botnet dhe të falsifikojë adresa e burimit për të ping shumë nga këta PC të kompromentuar pa fund, dhe përgjigjet do të shkonin te serveri ynë, duke e shembur atë nëse nuk vendoseshin kufij.

    Zakonisht lejoj llojet e ICMP 0,3,8,11 dhe 12 me një kufi hyrës prej një për sekondë dhe një breshëri prej dy ose katër maksimalisht, dhe gjithçka tjetër i lihet DROP.

    Në të vërtetë, përveç protokollit TCP që mund të rregullohet më mirë, të gjithë të tjerët duhet të mbrohen me një masë anti-DDoS me anë të një ndeshjeje të tipit të fundit. Lidhur me këtë, si një kuriozitet, autori i këtij moduli pëlqen të vendosë së pari azhurnimin dhe më pas setin.

    Iptables është me të vërtetë shumë fleksibël dhe i fuqishëm, deri më tani e vetmja gjë që unë kam propozuar të bëj dhe ende nuk e kam arritur atë (megjithëse jam afër arritjes së tij), është të mundësosh që moduli psd të shmangë portscans, por edhe me gjithçka Unë kam mësuar për këtë mjet, mendoj se nuk e kam gërvishtur ende sipërfaqen. 😉

    Sidoqoftë, në këtë botë gjithmonë duhet të studiosh.

  4.   koratsuki dijo

    Pika të mira Hugo, në dosje për fjalorin tonë: D, si gjithmonë, duke mësuar ...

    1.    Hugo dijo

      Nga rruga, unë tashmë kam modulin psd për të punuar për mua. Problemi ishte që fillimisht varej nga një funksionalitet i kernelit që ishte zhvlerësuar së bashku me patch-o-matic, kështu që u hoq nga modulet e integruara në filtër neto si parazgjedhje. Kështu që tani në Debian për të përdorur shtesën psd, së pari duhet ta bëni këtë:


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

      Pastaj mund të përdoret normalisht, sipas udhëzimeve:

      man xtables-addons

      1.    larg dijo

        Hugo, pse nuk botoni një iptables.sh me sugjerimet tuaja për të përmirësuar skenarin e këtij postimi (i cili është i mirë) përfshirë psd

        Falënderim

  5.   kapje me duart pas zverkut të kundërshtarit dijo

    Artikull i shkëlqyeshëm, iptable të shkëlqyeshëm dhe shpjegim i shkëlqyeshëm nga @hugo. Jam duke u bindur gjithnjë e më shumë se kam ende shumë për të mësuar.

  6.   koratsuki dijo

    Nuk je vetëm ti, të paktën unë ... më mungon një milion ...

  7.   Miguel Angel dijo

    Përshëndetje të gjithëve, dhe faleminderit për kontributin, por e vërteta është që ne jemi të dëshpëruar, nuk dimë çfarë të bëjmë tani, dhe ne vijmë tek ju për këtë nga iptables që ne e dimë që ju jeni ekspert në sisteme.
    Unë jam udhëheqësi i një komuniteti në Spanjë të burimit të kundërsulmit dhe ne jemi një nga të paktët që ende mezi qëndrojmë, po marrim sulme të vazhdueshme nga makina dhe sulme të tjera në intervale kohore, konstantja heq pak, por lodh serveri pak por ai që është i kohës bën më shumë dëm. Makina jonë është e montuar në një 6.2 centos
    dhe ne kemi tcadmin për të kontrolluar serverat. Ju mund të na bëni një konfigurim që mund të ndalojë edhe pak këtë lloj sulmi, është se ne tashmë jemi të dëshpëruar,
    dhe ne nuk e dimë kujt t’i drejtohemi, ne e dimë që ka dy botneta, njëri i bërë në shtëpi dhe tjetri i paguar për kohë dhe forcë. Ne kështu kemi duruar sulme brutale të këtij lloji për gati një vit, nëse do të na ndihmonit do të ishim përjetësisht mirënjohës sepse është e paqëndrueshme tani, unë dua të konfiguroj servera si hoobie, dhe unë nuk jam një fëmijë që ju siguroj por kjo është shumë për mua. Nëse doni që ts3 im të flasë ose ndonjë gjë tjetër do të doja të na ndihmonit kështu që të postonim këtu rezultatet dhe gjithçka që u zgjidh për të mirën e shumë njerëzve, do të ishte blogu më i vizituar i vitit që ju siguroj sepse është e pabesueshme se si i bezdis këto sulme ddos Meqenëse u përpoqëm ta konfiguronim vetë dhe të bllokonim hyrjen në makinë, na duhej ta formatonim nga bios, kështu që imagjinoni si jemi.
    Dërgoj një përshëndetje të përzemërt. Dhe urimet e mia për blogun e humbur, shumë njerëz gjejnë një që është azhurnuar me këtë. -Miguel Angel-

    1.    KZKG ^ Gaara dijo

      Pershendetje si jeni
      Shkruani në emailin tim, ne do të jemi të lumtur t'ju ndihmojmë 😀 -» kzkggaara[@]desdelinux[.]neto

  8.   ArthurShelby dijo

    Përshëndetje djema, deri tani që jam duke punuar, merrni këtë skenar, shumë mirë nga rruga ... vetëm një dyshim: A nuk e zvogëlon performancën moduli «i fundit»?

    Përshëndetje - Faleminderit / Kush ju pëlqen?

  9.   Jose tapia dijo

    Kontribut i shkëlqyeshëm miku im, unë do t'ju vë në referencat e një video tutoriale që po përgatisim, një përqafim nga Kosta Rika

  10.   Cristian Ivory Reinoso dijo

    Përshëndetje,

    Nuk mund ta përdorni skenarin në shumë porte?
    Unë kam një server lojë dhe kam sulme si në internet ashtu edhe në portet e serverit të lojës.

    Një përshëndetje.