DDoS un citi uzbrukumi pret iptables (Anti-DDoS drošība iptables)

Izvairieties no uzbrukuma DDoS ar iptables Tam ir daudz veidu, kā to izdarīt, pēc pakešu lieluma, pēc savienojuma ierobežojuma utt. Šeit mēs redzēsim, kā mēs viegli, intuitīvi un labi izskaidrotā veidā sasniegsim mērķi, kā arī apturēsim citus kaitinošus uzbrukumus mūsu serveriem.

# 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

Tas tiek skaitīts SYN pakešu skaits (TCP savienojuma sākums) katrai IP adresei pēdējās 10 sekundēs. Ja tas sasniedz 30, tas izmet šo pakešu, tāpēc savienojums netiks izveidots (TCP mēģinās atkārtot vairākas reizes, kad tas nokritīsies zem tā iestatāmās robežas).

#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

Šis ir mūsu ielīmēšanas skripts: Paste.FromLinux.net (iepriekšējais skripts)

Norādes:

 


Raksta saturs atbilst mūsu principiem redakcijas ētika. Lai ziņotu par kļūdu, noklikšķiniet uz šeit.

14 komentāri, atstājiet savus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   KZKG ^ Gaara teica

    Tāpēc es ievietoju apmācību pirms DDoS uzbrukumiem 😉
    Ievietot / izskaidrot iemeslu vai problēmu (iepriekšējā apmācība), kā arī sniegt risinājumu (šī apmācība) 🙂

    1.    diazepans teica

      Perfecto.

  2.   Koratsuki teica

    Bērnu konfektes ...

  3.   Hugo teica

    Labs raksts.

    Mani divi centi:

    UDP pakešu gadījumā nav SYN karoga, jo tas ir protokols bez valsts kontroles. Tomēr paradoksālā kārtā pastāv JAUNIE un Dibinātie stāvokļi, jo iptables iekšēji šim nolūkam nes tabulas.

    No otras puses, manuprāt, REJECT vietā labāk izmantot DROP galamērķi divu iemeslu dēļ: pirmkārt, ar noraidījumu tiek sniegta informācija iespējamam uzbrucējam, kā arī dators daļu no savienojamības izmanto, lai nosūtītu paziņojums uzbrūkošajai komandai.

    Cita lieta, ka ICMP protokola gadījumā (un vispār) ir ērti regulēt gan pieprasījumus, gan atbildes, jo mēs, iespējams, esam ieinteresēti kādā brīdī sevi pingināt, un, iespējojot šo funkcionalitāti, kāds varētu izmantot robots un viltot no avota adreses, veiciet bezgalīgu pingēšanu daudziem no šiem apdraudētajiem datoriem, un atbildes tiks novirzītas uz mūsu serveri, sabrūkot, ja netiek noteikti ierobežojumi.

    Parasti es atļauju ICMP tipus 0,3,8,11 un 12 ar ievades ierobežojumu viens sekundē un divu vai četru sprādzienu maksimumu, un viss pārējais tiek atstāts DROP.

    Faktiski, izņemot TCP protokolu, kuru var labāk regulēt, visi pārējie būtu jāaizsargā ar anti-DDoS pasākumu, izmantojot nesen notikušu sakritību. Attiecībā uz to kā ziņkārību šī moduļa autoram patīk vispirms ievietot atjauninājumu un pēc tam kopu.

    Iptables patiešām ir ļoti elastīgs un spēcīgs, līdz šim vienīgais, ko esmu ierosinājis darīt, un es to vēl neesmu sasniedzis (lai gan esmu tuvu tam, lai to sasniegtu), ir ļaut psd modulim izvairīties no portu skenēšanas, bet pat ar visu Esmu uzzinājis par šo rīku, nedomāju, ka vēl esmu pat saskrāpējis virsmu. 😉

    Jebkurā gadījumā šajā pasaulē jums vienmēr ir jāmācās.

  4.   Koratsuki teica

    Labi punkti Hugo, mūsu glosārija failā: D, kā vienmēr, mācās ...

    1.    Hugo teica

      Starp citu, es jau saņēmu psd moduli, kas man strādā. Problēma bija tā, ka sākotnēji tā bija atkarīga no kodola funkcionalitātes, kas tika novecojusi kopā ar patch-o-matic, tāpēc pēc noklusējuma tā tika noņemta no iebūvētajiem moduļiem netfilter. Tātad tagad Debianā, lai izmantotu paplašinājumu psd, vispirms jums tas jādara:


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

      Pēc tam to var izmantot normāli saskaņā ar instrukcijām:

      man xtables-addons

      1.    prom teica

        Hugo, kāpēc tu nepublicē iptables.sh ar saviem ieteikumiem, kā uzlabot šīs ziņas skriptu (kas ir labi), ieskaitot psd

        Gracias

  5.   nelsons teica

    Izcils raksts, lieliski iptables un lielisks paskaidrojums no @hugo. Es arvien vairāk pārliecinos, ka man vēl ir daudz jāmācās.

  6.   Koratsuki teica

    Tas nav tu viens, vismaz es ... man pietrūkst miljona ... 😀

  7.   Migels Eņģelis teica

    Sveiki, visi, un paldies par ieguldījumu, bet patiesība ir tāda, ka mēs esam izmisuši, mēs nezinām, ko tagad darīt, un mēs vēršamies pie jums par šo iptables, ka mēs zinām, ka jūs esat sistēmu eksperti.
    Es esmu kopienas vadītājs Spānijā, kurā darbojas pretstreiku avots, un mēs esam vieni no nedaudzajiem, kuri joprojām tikko stāv uz vietas, mēs periodiski saņemam pastāvīgus uzbrukumus mašīnai un citus uzbrukumus, konstante maz noņem, bet nomierina serveri nedaudz, bet tas, kuram ir laiks, nodara lielāku kaitējumu. Mūsu mašīna ir uzstādīta uz 6.2 centu
    un mums ir tcadmin, lai kontrolētu serverus. Jūs varētu izveidot mums konfigurāciju, kas varētu kaut nedaudz apturēt šāda veida uzbrukumus, mēs jau esam izmisuši,
    un mēs nezinām, pie kā vērsties, mēs zinām, ka ir divi robottīkli, viens paštaisīts un otrs samaksāts par laiku un spēku. Tādējādi mēs gandrīz gadu esam izturējuši šāda veida brutālus uzbrukumus, ja jūs varētu mums palīdzēt, mēs būtu mūžīgi pateicīgi, jo tas tagad nav ilgtspējīgi, man patīk konfigurēt tādus serverus kā hoobie, un es neesmu bērns, par kuru es jums apliecinu, bet tas man ir daudz. Ja vēlaties, lai mans ts3 runā vai ko es labprāt vēlētos, ja jūs varētu mums palīdzēt, lai mēs šeit ievietotu rezultātus un visu, kas tika atrisināts daudzu cilvēku labā, tas būtu gada apmeklētākais emuārs, ko es jums apliecinu jo tas ir neticami, kā tas kaitina šos uzbrukumus ddos. Tā kā mēs mēģinājām to konfigurēt paši un bloķējām piekļuvi mašīnai, mums tas bija jāformatē no BIOS, lai iedomāties, kā mēs esam.
    Es sūtu sirsnīgu apsveikumu. Un es apsveicu ar trūkstošo emuāru, daudziem cilvēkiem ir tāds, kas tika atjaunināts ar šo. -Migels Eņģelis-

    1.    KZKG ^ Gaara teica

      Sveiki, kā tev iet 🙂
      Rakstiet uz manu e-pastu, mēs jums ar prieku palīdzēsim 😀 - »kzkggaara [@] desdelinux [.] Net

  8.   ArtūrsŠelbijs teica

    Sveiki puiši, līdz šim brīdim, kad es strādāju, paņemiet šo skriptu, starp citu, ļoti labu ... tikai vienas šaubas: vai «nesenais» modulis nesamazina veiktspēju?

    Sveiciens - paldies / kam tu patīk?

  9.   Hosē Tapija teica

    Lielisks ieguldījums, mans draugs, es jūs ievietošu atsaucēs uz mācību video, kuru mēs uzstādām, apskāviens no Kostarikas

  10.   Kristians Marfils Reinoso teica

    Hello,

    Vai nevarat izmantot skriptu vairākās ostās?
    Man ir spēļu serveris, un es saņemu uzbrukumus gan tīmeklim, gan spēļu serveru portiem.

    Sveiciens.