DDoS at iba pang mga pag-atake vs iptables (Anti-DDoS security sa iptables)

Iwasan ang isang atake DDoS sa iptables Maraming paraan ito upang gawin ito, sa laki ng packet, sa limitasyon ng koneksyon, atbp. Makikita rito kung paano, sa isang madali, madaling maunawaan at mahusay na naipaliwanag na paraan makakamtan natin ang layunin, pati na rin ihinto ang iba pang mga nakakainis na pag-atake sa aming mga server.

# 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

Ang ginagawa nito ay bilangin ang bilang ng mga packet ng SYN (Pagsisimula ng koneksyon sa TCP) para sa bawat IP address sa huling 10 segundo. Kung umabot sa 30, itatapon ang packet na iyon upang ang koneksyon ay hindi maitatag (Muling susubukan ang TCP ng maraming beses, kapag bumaba ito sa ibaba ng limitasyon maaari itong maitakda).

#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

Narito ang script sa aming Paste: IdikitDesdeLinux.net (Nakaraang script)

Mga sanggunian:


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   KZKG ^ Gaara dijo

    At ito ang dahilan kung bakit naglalagay ako ng isang tutorial bago mag-atake ang DDoS 😉
    Upang mailagay / ipaliwanag ang dahilan o problema (nakaraang tutorial), at bibigyan ka rin ng solusyon (ang tutorial na ito) 🙂

    1.    diazepam dijo

      perpekto

  2.   koratsuki dijo

    Kendi ng mga bata ...

  3.   Hugo dijo

    Magandang artikulo.

    Ang aking dalawang sentimo:

    Sa kaso ng mga packet ng UDP, walang flag ng SYN dahil ito ay isang protokol na walang kontrol sa estado. Gayunpaman, kabalintunaan, ang BAGONG at NAGTATAYANG mga estado ay mayroon dahil ang mga iptable na panloob ay nagdadala ng mga talahanayan para sa hangaring ito.

    Sa kabilang banda, sa aking palagay mas mahusay na gumamit ng patutunguhan ng DROP sa halip na Tanggihan, para sa dalawang kadahilanan: una, na may isang tanggihan ang pagbibigay ng impormasyon sa isang posibleng magsasalakay, at pati na rin ang computer ay gumagamit ng bahagi ng pagkakakonekta nito upang maipadala abiso sa pangkat ng umaatake.

    Ang isa pang bagay ay sa kaso ng ICMP protocol (at sa pangkalahatan) maginhawa upang makontrol ang parehong mga kahilingan at mga tugon, dahil malamang na interesado kami sa ilang mga punto sa pag-ping sa ating sarili, at sa pamamagitan ng pagpapagana ng pagpapaandar na ito, ang isang tao ay maaaring gumamit ng isang botnet at palsipikahin ang pinagmulang address sa pag-ping sa marami sa mga nakompromisong PC na ito nang walang katapusan, at ang mga tugon ay pupunta sa aming server, pagbagsak nito kung walang mga limitasyon na ipinataw.

    Karaniwan kong pinapayagan ang mga uri ng ICMP na 0,3,8,11 at 12 na may limitasyon ng pag-input na isa bawat segundo at isang pagsabog ng dalawa o apat na maximum, at lahat ng iba pa ay naiwan sa DROP.

    Sa totoo lang, maliban sa TCP protocol na maaaring mas mahusay na maayos, ang lahat ng iba pa ay dapat protektahan ng isang panukalang anti-DDoS sa pamamagitan ng isang kamakailang tugma sa uri. Tungkol dito, bilang isang pag-usisa, ang may-akda ng modyul na ito ay nais na ilagay muna ang pag-update at pagkatapos ay ang set.

    Ang Iptables ay talagang napaka-kakayahang umangkop at makapangyarihan, sa ngayon ang tanging bagay na iminungkahi kong gawin at hindi ko pa ito nakakamit (bagaman malapit na akong makamit ito), ay paganahin ang psd module upang maiwasan ang mga portcans, ngunit kahit na sa lahat Natutunan ko ang tungkol sa tool na ito, sa palagay ko ay hindi ko pa nasasgas ang ibabaw. 😉

    Gayunpaman, sa mundong ito palagi kang kailangang mag-aral.

  4.   koratsuki dijo

    Magandang mga puntos Hugo, nasa file para sa aming glossary: ​​D, tulad ng lagi, natututo ...

    1.    Hugo dijo

      Sa pamamagitan ng paraan, nakuha ko na ang module ng psd upang gumana para sa akin. Ang problema ay na sa una ay nakasalalay sa isang pagpapaandar ng kernel na hindi na ginagamit kasama ang patch-o-matic, kaya't tinanggal ito mula sa mga built-in na module sa netfilter bilang default. Kaya ngayon sa Debian upang magamit ang extension ng psd, kailangan mo munang gawin ito:


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

      Maaari itong magamit nang normal, ayon sa mga tagubilin:

      man xtables-addons

      1.    palayo dijo

        Hugo, bakit hindi ka mag-publish ng isang iptables.sh kasama ang iyong mga mungkahi upang mapabuti ang script ng post na ito (na mabuti) kasama ang psd

        Salamat

  5.   Nelson dijo

    Mahusay na artikulo, mahusay na mga iptable at mahusay na paliwanag mula sa @hugo. Sa tuwing mas nakakumbinsi ako na marami pa akong dapat matutunan.

  6.   koratsuki dijo

    Hindi ka nag-iisa, kahit papaano ... Nawawalan ako ng isang milyon ... 😀

  7.   Miguel Angel dijo

    Kamusta sa lahat, at salamat sa kontribusyon, ngunit ang totoo ay desperado kami, hindi namin alam kung ano ang gagawin ngayon, at dumating kami sa iyo para sa mga ito sa mga iptable na alam namin na eksperto ka sa mga system.
    Pinuno ako ng isang pamayanan sa Espanya ng mapagkukunan ng counter strike at kami ay isa sa iilan na hindi pa rin nakatayo, nakakatanggap kami ng patuloy na pag-atake mula sa makina at iba pang mga pag-atake sa agwat ng oras, ang pare-pareho ay nagtanggal ng kaunti ngunit hinihimok ang server kaunti ngunit ang nasa oras ay mas maraming pinsala. Ang aming makina ay naka-mount sa isang 6.2 centos
    at mayroon kaming tcadmin upang makontrol ang mga server. Maaari mo kaming gawing isang pagsasaayos na maaaring tumigil sa ganitong uri ng pag-atake kahit kaunti, ito ay na desperado na kami,
    at hindi namin alam kung kanino pupunta, alam namin na mayroong dalawang botnet, isang homemade at ang isa ay nagbayad para sa oras at lakas. Sa gayon ay nagtitiis kami ng mga brutal na pag-atake ng ganitong uri sa loob ng halos isang taon, kung matutulungan mo kami na magpasalamat kami magpakailanman dahil hindi ito napapanatili ngayon, gusto kong i-configure ang mga server tulad ng hoobie, at hindi ako isang bata na sinisiguro ko sa iyo ngunit marami ito para sa akin. Kung nais mong pag-usapan ang aking ts3 o anumang bagay ay gusto ko kang tulungan sa amin upang mai-post namin dito ang mga resulta at lahat ng nalutas para sa ikabubuti ng maraming tao, ito ang magiging pinakapasyang blog ng taon na tiniyak ko sa iyo dahil ito ay hindi kapani-paniwala kung paano ito nakakainis ng mga pag-atake ddos. Dahil sinubukan naming i-configure ito sa aming sarili at nag-block ng pag-access sa makina, kailangan naming i-format ito mula sa mga bios kaya isipin kung kamusta kami.
    Nagpadala ako ng isang mabuting pagbati. At ang aking pagbati para sa nawawalang blog, maraming mga tao ang nakakahanap ng isa na na-update sa isang ito. -Miguel Angel-

    1.    KZKG ^ Gaara dijo

      Hello kamusta ka na 🙂
      Sumulat sa aking email, ikalulugod naming tulungan ka 😀 -» kzkggaara[@]desdelinux[.]net

  8.   ArthurShelby dijo

    Kumusta mga tao, hanggang ngayon na nagtatrabaho ako, kunin ang script na ito, napakahusay by the way ... isang pag-aalinlangan lamang: Hindi ba binabawasan ng "kamakailang" module ang pagganap?

    Pagbati - Salamat / Sino ang gusto mo?

  9.   Jose tapia dijo

    Mahusay na kontribusyon aking kaibigan, ilalagay kita sa mga sanggunian ng isang tutorial na video na pinapataas namin, isang yakap mula sa Costa Rica

  10.   Cristian Ivory Reinoso dijo

    Hello,

    Hindi magamit ang script sa maraming port?
    Mayroon akong isang server ng laro at nakakakuha ako ng mga pag-atake sa parehong web at mga port ng server ng laro.

    Isang pagbati.