Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 14188|Atsakyti: 0

[Saugos pamoka] SYN Flood atakos, SYN slapukų gynyba ir branduolio parametrų modifikavimas Linux/FreeBSD

[Kopijuoti nuorodą]
Paskelbta 2014-10-27 21:37:19 | | |

ĮsilaužėlisTai geidžiama ir perspektyvi karjera. Aš vertinu gerus hakerius ir nekenčiu blogų hakerių. Vadinamasis blogas įsilaužėlis yra toks vaikinas, kuris priverčia ką nors iš kitos pusės dirbti viršvalandžius.

    SYN Flood atakos yra tipiška paslaugų atsisakymo ataka. Vadinamoji paslaugų atsisakymo ataka yra netiesiogiai pasiekti atakos tikslo, kad auka pagrindinis kompiuteris ar tinklas negalėtų teikti geros paslaugos. Įsilaužėliai mėgsta tai žaisti, norėdami parodyti, kad jie yra lygūs, pajėgūs ir drąsūs, priversdami kitą šalį dirbti viršvalandžius, bet iš tikrųjų tai nieko.

   1: Kas yra SYN potvynio ataka?

    SYN Flood atakos pasinaudoja trijų krypčių TCP protokolo rankos paspaudimo procesu IPv4. Šis protokolas numato, kad jei vienas galas nori inicijuoti TCP ryšį su kitu galu, jis pirmiausia turi išsiųsti TCP SYN (sinchronizavimo) paketą kitai šaliai, o kita šalis siunčia TCP SYN + ACK paketą atgal, o tada iniciatorius siunčia TCP ACK (ACKnowledge Character) paketą atgal, kad trys rankų paspaudimai baigtųsi.

    Aukščiau pateiktame procese yra keletas svarbių sąvokų:

    Eilė neprijungta: trijų krypčių rankos paspaudimo protokole serveris palaiko neprijungtą eilę, kuri atidaro kiekvieno kliento SYN paketo įrašą (syn=j), nurodantį, kad serveris gavo SYN paketą, ir išduoda patvirtinimą klientui, laukdamas kliento patvirtinimo paketo. Šiais įrašais identifikuotas ryšys serveryje yra Syn_RECV būsenos, o kai serveris gauna patvirtinimo paketą iš kliento, įrašas ištrinamas ir serveris pereina į būseną NUSTATYTA. Kitaip tariant, kai TCP serveris gauna TCP SYN užklausos paketą, prieš siųsdamas TCP SYN+ACK paketą atgal į TCP klientą, TCP serveris pirmiausia turi paskirti duomenų sritį, kad aptarnautų TCP ryšį, suformuotą šia ranka. Paprastai ryšio būsena, kai gaunamas SYN paketas, bet ACK paketas dar negautasPusiau atviras ryšys(Pusiau atviras ryšys)。

    Įsiskolinimo parametras: nurodo maksimalų neprijungtų eilių skaičių.

    SYN-ACK retransliacijų skaičius: Serveriui išsiuntus SYN-ACK paketą, jei kliento patvirtinimo paketas negaunamas, serveris atlieka pirmąjį pakartotinį perdavimą, laukia tam tikrą laiką ir negauna kliento patvirtinimo paketo, ir atlieka antrą pakartotinį perdavimą, jei pakartotinių transliacijų skaičius viršija maksimalų sistemos nurodytą pakartotinių transliacijų skaičių, sistema ištrina ryšio informaciją iš pusiau ryšio eilės. Atkreipkite dėmesį, kad kiekvieno pakartotinio leidimo laukimo laikas nebūtinai yra vienodas.

    Pusiau sujungtas išgyvenimo laikas: nurodo maksimalų laiką, kurį įrašo pusiau ryšio eilėje išlieka, tai yra maksimalų laiką nuo to laiko, kai paslauga gauna SYN paketą, iki to laiko, kai paketas patvirtinamas kaip negaliojantis, o laiko reikšmė yra maksimalaus visų pakartotinio perdavimo užklausos paketų laukimo laiko suma. Kartais mes taip pat vadiname pusiau susietą išgyvenimo laiką SYN_RECV išgyvenimo laiką.

    Dažniausios SYN potvynio atakos metu užpuolikas per trumpą laiką aukai išsiunčia daug TCP SYN paketų, tuo metu užpuolikas yra TCP klientas, o auka yra TCP serveris. Pagal aukščiau pateiktą aprašymą, auka kiekvienam TCP SYN paketui priskirtų konkrečią duomenų zoną, jei SYN paketai turėtų skirtingus šaltinio adresus (kuriuos užpuolikams būtų lengva suklastoti). Tai labai apkraus TCP serverio sistemą ir galiausiai sistema neveiks tinkamai.

    2. SYN slapukų principas

    Vienas iš būdų veiksmingai užkirsti kelią SYN Flood atakoms yra SYN slapukai. SYN slapuko priežastis D. Išrado J. Bernstainas ir Ericas Schenkas.

    SYN slapukai yra TCP serverio trijų krypčių rankos paspaudimo protokolo modifikacija, siekiant užkirsti kelią SYN Flood atakoms.Jo principas yra:Kai TCP serveris gauna TCP SYN paketą ir grąžina TCP SYN+ACK paketą, jis nepriskiria tam skirtos duomenų srities, o apskaičiuoja slapuko reikšmę pagal šį SYN paketą. Kai gaunamas TCP ACK paketas, TCP serveris patikrina TCP ACK paketo teisėtumą pagal tą slapuko reikšmę. Jei teisėta, skiriama speciali duomenų sritis būsimiems TCP ryšiams tvarkyti.

    Pakalbėkime apie tai, kaip sukonfigūruoti branduolio parametrus, kad būtų įdiegti SYN slapukai Linux ir FreeBSD

    Trys: "Linux" nustatymai

    Jei jūsų serverio konfigūracija nėra gera, TCP TIME_WAIT lizdų skaičius siekia 20 000 arba 30 000, o serverį galima lengvai nutempti į mirtį. Pakeitus Linux branduolio parametrus, serveryje galima sumažinti TIME_WAIT lizdų skaičių.

    TIME_WAIT galima peržiūrėti naudojant šią komandą:

  1. 以下是代码片段:
  2. netstat -an | grep "TIME_WAIT" | wc -l
Kopijuoti kodą

"Linux", pvz., "CentOS", tai galite pasiekti pakeisdami failą /etc/sysctl.conf.

    Pridėkite šias eilutes:

  1. 以下是代码片段:
  2. net.ipv4.tcp_fin_timeout = 30
  3. net.ipv4.tcp_keepalive_time = 1200
  4. net.ipv4.tcp_syncookies = 1
  5. net.ipv4.tcp_tw_reuse = 1
  6. net.ipv4.tcp_tw_recycle = 1
  7. net.ipv4.ip_local_port_range = 1024    65000
  8. net.ipv4.tcp_max_syn_backlog = 8192
  9. net.ipv4.tcp_max_tw_buckets = 5000
  10. net.ipv4.tcp_synack_retries = 2
  11. net.ipv4.tcp_syn_retries = 2
Kopijuoti kodą

Iliustruoti:

net.ipv4.tcp_syncookies = 1 reiškia, kad įjungti SYN slapukai, o tai yra BOOLEAN. Kai SYN laukia, kol eilė perpildys, įgalinkite slapukus, kad jie su ja susidorotų, o tai gali užkirsti kelią nedideliam SYN atakų skaičiui, o numatytasis nustatymas yra 0, o tai reiškia, kad jis uždarytas.
net.ipv4.tcp_tw_reuse = 1 reiškia, kad pakartotinis naudojimas yra įjungtas, o tai yra BOOLEAN. Leidžia pakartotinai naudoti TIME-WAIT lizdus naujiems TCP ryšiams, numatytasis 0, nurodantis uždarymą;
net.ipv4.tcp_tw_recycle = 1 reiškia, kad galima greitai perdirbti TIME-WAIT lizdus TCP jungtyse, o numatytasis yra 0, o tai reiškia, kad jis uždarytas.
net.ipv4.tcp_fin_timeout = 30 reiškia, kad jei lizdas uždaromas vietine užklausa, šis parametras nustato, kiek laiko jis išliks FIN-WAIT-2 būsenoje. Vienetas yra sekundės.
net.ipv4.tcp_keepalive_time = 1200 nurodo, kaip dažnai TCP siunčia keepalive pranešimus, kai naudojamas keepalive. Numatytoji trukmė yra 2 valandos, pakeista į 20 minučių. Vienetas yra sekundės.
net.ipv4.ip_local_port_range = 1024 65000 nurodo prievadų, naudojamų išorinėms jungtims, diapazoną. Numatytasis atvejis yra mažas: nuo 32768 iki 61000, pakeistas į 1024 į 65000.
net.ipv4.tcp_max_syn_backlog = 8192 nurodo SYN eilės ilgį, kuris pagal numatytuosius nustatymus yra 1024, o padidintos eilės ilgis yra 8192, kad tilptų daugiau tinklo ryšių, laukiančių ryšio.
net.ipv4.tcp_max_tw_buckets = 5000 nurodo maksimalų lizdų skaičių, kurį sistema palaiko TIME_WAIT pačiu metu, o jei šis skaičius bus viršytas, TIME_WAIT lizdai bus nedelsiant išvalyti ir bus išspausdintas įspėjamasis pranešimas. Numatytoji reikšmė yra 180000, pakeista į 5000. Tokiems serveriams kaip "Apache" ir "Nginx" ankstesnėse eilutėse esantys parametrai gali TIME_WAIT sumažinti lizdų skaičių, tačiau "Squid" efektas nėra didelis. Šis parametras kontroliuoja maksimalų TIME_WAIT lizdų skaičių, kad "Squid" serverio neištemptų daugybė TIME_WAIT lizdų.
net.ipv4.tcp_synack_retries ir net.ipv4.tcp_syn_retries apibrėžia SYN bandymų skaičių.

Vykdykite šią komandą, kad konfigūracija įsigaliotų:

  1. 以下是代码片段:
  2. /sbin/sysctl -p
Kopijuoti kodą

Jei nenorite keisti /etc/sysctl.conf, taip pat galite naudoti komandą:

  1. 以下是代码片段:
  2. /sbin/sysctl -w key=value
Kopijuoti kodą

Ketvirta, nustatyta pagal FreeBSD

    Yayu asmeninis mokymosi požiūris: gynyba nuo syn FreeBSD gali būti ne tokia pati kaip Linux, sukonfigūruoti parametrai nėra visiškai vienodi, o atitinkama konfigūracija ir supratimas gali būti neteisingi :)

    TCP nuorodoje yra vienasMSL (maksimalus segmento tarnavimo laikas)SąvokaMaksimalus generavimo laikasMSL reikšmė imama 30 sekundžių bendrajame diegime, o kai kurie diegimai trunka 2 minutes. "Pasyvus išjungimas" TCP būsenos kompiuteryje: Nuo CLOSE_WAIT iki LAST_ACK galioja tokia taisyklė: Kai TCP atlieka aktyvų išjungimą ir siunčia atgal paskutinį ACK, ryšys turi išlikti TIME_WAIT būsenoje dvigubai ilgiau nei MSL. Tai leidžia TCP vėl išsiųsti paskutinį ACK, jei jis būtų prarastas (kitas pabaigos laikas baigiasi ir iš naujo siunčia paskutinį FIN).

    Šios taisyklės egzistavimas reiškia, kad nuoroda (kliento adresas, prievadas ir serverio adresas, prievadas) tame adrese negali būti naudojama per šį 2 * MSL laiką. Pavyzdžiui, jei sukūrę nuorodą uždarysime ir greitai paleisime nuorodą iš naujo, prievadas bus nepasiekiamas.

    TIME_WAIT laikas yra 2*MSL. Taigi galite sutrumpinti TIME_WAIT laiką koreguodami net.inet.tcp.msl. Žiniatinklio serveriui šią reikšmę galima reguliuoti iki 7500 arba 2000 (prieiga prie žiniatinklio, puslapis negali mirksėti ilgiau nei 4 ~ 15 sekundžių, galite apsvarstyti galimybę atsisakyti -_-)

    Parametrų nustatymo nuoroda:

  1. 以下是引用片段:
  2. net.inet.tcp.syncookies=1
  3. 防止DOS攻击

  4. net.inet.tcp.msl=7500
  5. 防止DOS攻击,默认为30000

  6. net.inet.tcp.blackhole=2
  7. 接收到一个已经关闭的端口发来的所有包,直接drop,如果设置为1则是只针对TCP包

  8. net.inet.udp.blackhole=1
  9. 接收到一个已经关闭的端口发来的所有UDP包直接drop
Kopijuoti kodą

FreeBSD yayu nematė tokios komandos kaip "/sbin/sysctl -p", kuri galėtų padaryti /etc/sysctl.conf turinį efektyvų, todėl jis tiesiog panaudojo komandą:

  1. 以下是代码片段:
  2. sysctl net.inet.tcp.syncookies=1 net.inet.tcp.msl=7500 net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1
Kopijuoti kodą






Ankstesnis:Vučango technologijos instituto studento laiškas žiniasklaidai
Kitą:Atkurkite tiesą apie prostitucijos organizavimą kolegijų ir universitetų viešbučiuose "Wuchang technologijos institutas: gandai sustoja...
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com