Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 13773|Atbildi: 0

[Drošības apmācība] SYN plūdu uzbrukumi, SYN sīkfailu aizsardzība un kodola parametru modifikācija Linux/FreeBSD

[Kopēt saiti]
Publicēts 27.10.2014 21:37:19 | | |

HakerisTā ir vēlama un daudzsološa karjera. Es novērtēju labus hakerus un ienīstu sliktus hakerus. Tā sauktais sliktais hakeris ir tāds puisis, kurš liek kādam no otras puses strādāt virsstundas.

    SYN plūdu uzbrukumi ir tipisks pakalpojuma atteikuma uzbrukums. Tā sauktais pakalpojuma atteikuma uzbrukums ir netieši sasniegt uzbrukuma mērķi, padarot cietušo resursdatoru vai tīklu nespējīgu sniegt labu pakalpojumu. Hakeriem patīk to spēlēt, lai parādītu, ka viņi ir vienmērīgi, spējīgi un drosmīgi, liekot otrai pusei strādāt virsstundas, bet patiesībā tas nav nekas.

   1: Kas ir SYN plūdu uzbrukums?

    SYN Flood uzbrukumi izmanto IPv4 TCP protokola trīsvirzienu rokasspiediena procesu. Šis protokols nosaka, ka, ja viens gals vēlas uzsākt TCP savienojumu ar otru galu, tam vispirms ir jānosūta TCP SYN (sinhronizācijas) pakete otrai pusei, un otra puse nosūta TCP SYN + ACK paketi atpakaļ pēc tās saņemšanas, un pēc tam iniciators nosūta TCP ACK (ACKnowledge Character) paketi atpakaļ, lai trīs rokasspiedieni būtu beigušies.

    Iepriekš minētajā procesā ir daži svarīgi jēdzieni:

    Rinda nav savienota: trīsvirzienu rokasspiediena protokolā serveris uztur nesavienotu rindu, kas atver ierakstu katra klienta SYN paketei (syn=j), kas norāda, ka serveris ir saņēmis SYN paketi, un izsniedz klientam apstiprinājumu, gaidot klienta apstiprinājuma paketi. Šo ierakstu identificētais savienojums serverī ir Syn_RECV stāvoklī, un, kad serveris saņem apstiprinājuma paketi no klienta, ieraksts tiek izdzēsts un serveris nonāk stāvoklī IZVEIDOTS. Citiem vārdiem sakot, kad TCP serveris saņem TCP SYN pieprasījuma paketi, pirms TCP SYN+ACK paketes nosūtīšanas atpakaļ TCP klientam, TCP serverim vispirms ir jāpiešķir datu apgabals, lai apkalpotu TCP savienojumu, ko veido šī roka. Parasti savienojuma stāvoklis, kad tiek saņemta SYN pakete, bet ACK pakete vēl nav saņemtaDaļēji atvērts savienojums(Pusatvērts savienojums)。

    Uzkrājuma parametrs: norāda maksimālo nesavienoto rindu skaitu.

    SYN-ACK retranslāciju skaits: Pēc tam, kad serveris nosūta SYN-ACK paketi, ja klienta apstiprinājuma pakete netiek saņemta, serveris veic pirmo retranslāciju, gaida kādu laiku un nesaņem klienta apstiprinājuma paketi, un veic otro retranslāciju, ja retranslāciju skaits pārsniedz sistēmas norādīto maksimālo retranslāciju skaitu, sistēma izdzēš savienojuma informāciju no pussavienojuma rindas. Ņemiet vērā, ka katras atkārtotas kārtas gaidīšanas laiks ne vienmēr ir vienāds.

    Daļēji savienots izdzīvošanas laiks: attiecas uz maksimālo laiku, kad ieraksts pussavienojuma rindā saglabājas, tas ir, maksimālo laiku no brīža, kad pakalpojums saņem SYN paketi, līdz brīdim, kad pakete tiek apstiprināta kā nederīga, un laika vērtība ir maksimālā gaidīšanas laika summa visām retranslācijas pieprasījuma paketēm. Dažreiz mēs saucam arī daļēji saistītu izdzīvošanas laiku SYN_RECV izdzīvošanas laiku.

    Visbiežāk sastopamajā SYN plūdu uzbrukumā uzbrucējs īsā laika periodā nosūta cietušajam lielu skaitu TCP SYN pakešu, un šajā brīdī uzbrucējs ir TCP klients un upuris ir TCP serveris. Saskaņā ar iepriekš minēto aprakstu upuris katrai TCP SYN paketei piešķirs īpašu datu zonu, ja vien SYN paketēm ir atšķirīgas avota adreses (kuras uzbrucējiem būtu viegli viltot). Tas radīs lielu slodzi TCP servera sistēmai un galu galā izraisīs sistēmas nepareizu darbību.

    2. SYN sīkdatņu princips

    Viens no veidiem, kā efektīvi novērst SYN Flood uzbrukumus, ir SYN sīkdatnes. SYN sīkdatnes iemesls D. Izgudroja J. Bernstain un Eric Schenk.

    SYN sīkfaili ir TCP servera puses trīsvirzienu rokasspiediena protokola modifikācija, lai novērstu SYN Flood uzbrukumus.Tās princips ir:Kad TCP serveris saņem TCP SYN paketi un atgriež TCP SYN+ACK paketi, tas nepiešķir īpašu datu apgabalu, bet aprēķina sīkfaila vērtību, pamatojoties uz šo SYN paketi. Kad tiek saņemta TCP ACK pakete, TCP serveris pārbauda TCP ACK paketes likumību, pamatojoties uz šo sīkfaila vērtību. Ja tas ir likumīgi, tiek piešķirts īpašs datu apgabals, lai apstrādātu turpmākos TCP savienojumus.

    Runāsim par to, kā konfigurēt kodola parametrus, lai ieviestu SYN sīkfailus Linux un FreeBSD

    Trīs: Linux iestatījumi

    Ja jūsu servera konfigurācija nav laba, TCP TIME_WAIT ligzdu skaits sasniedz 20 000 vai 30 000, un serveri var viegli vilkt līdz nāvei. Mainot Linux kodola parametrus, serverī var samazināt TIME_WAIT ligzdu skaitu.

    TIME_WAIT var apskatīt ar šādu komandu:

  1. 以下是代码片段:
  2. netstat -an | grep "TIME_WAIT" | wc -l
Kopēt kodu

Operētājsistēmā Linux, piemēram, CentOS, to var panākt, modificējot failu /etc/sysctl.conf.

    Pievieno šādas rindas:

  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
Kopēt kodu

Ilustrētu:

net.ipv4.tcp_syncookies = 1 nozīmē, ka ir iespējoti SYN sīkfaili, kas ir BOOLEAN. Kad SYN gaida, kamēr rinda pārpildās, iespējojiet sīkfailus, lai ar to tiktu galā, kas var novērst nelielu skaitu SYN uzbrukumu, un noklusējums ir 0, kas nozīmē, ka tas ir aizvērts.
net.ipv4.tcp_tw_reuse = 1 nozīmē, ka atkārtota izmantošana ir iespējota, kas ir BOOLEAN. Ļauj atkārtoti izmantot TIME-WAIT ligzdas jauniem TCP savienojumiem, noklusējot 0, norādot aizvēršanu;
net.ipv4.tcp_tw_recycle = 1 nozīmē, lai iespējotu ātru TIME-WAIT ligzdu pārstrādi TCP savienojumos, kas ir BOOLEAN, un noklusējums ir 0, kas nozīmē, ka tas ir slēgts.
net.ipv4.tcp_fin_timeout = 30 nozīmē, ka, ja ligzda ir aizvērta ar vietējo pieprasījumu, šis parametrs nosaka, cik ilgi tas paliks FIN-WAIT-2 stāvoklī. Vienība ir sekundes.
net.ipv4.tcp_keepalive_time = 1200 norāda, cik bieži TCP sūta keepalive ziņojumus, kad tiek izmantots keepalive. Noklusējums ir 2 stundas, mainīts uz 20 minūtēm. Vienība ir sekundes.
net.ipv4.ip_local_port_range = 1024 65000 norāda pieslēgvietu diapazonu, ko izmanto ārējiem savienojumiem. Noklusējuma reģistrs ir mazs: no 32768 līdz 61000, mainīts uz 1024 uz 65000.
net.ipv4.tcp_max_syn_backlog = 8192 norāda SYN rindas garumu, kas pēc noklusējuma ir 1024, un palielinātās rindas garums ir 8192, lai pielāgotu vairāk tīkla savienojumu, kas gaida savienojumu.
net.ipv4.tcp_max_tw_buckets = 5000 norāda maksimālo ligzdu skaitu, ko sistēma uztur TIME_WAIT vienlaikus, un, ja šis skaits tiek pārsniegts, TIME_WAIT ligzdas tiks nekavējoties notīrītas un tiks izdrukāts brīdinājuma ziņojums. Noklusējums ir 180000, mainīts uz 5000. Tādiem serveriem kā Apache un Nginx iepriekšējo rindu parametri var TIME_WAIT samazināt ligzdu skaitu, bet Squid efekts nav liels. Šis parametrs kontrolē maksimālo TIME_WAIT ligzdu skaitu, lai novērstu Squid servera izvilkšanu ar lielu skaitu TIME_WAIT ligzdu.
net.ipv4.tcp_synack_retries un net.ipv4.tcp_syn_retries definē SYN mēģinājumu skaitu.

Palaidiet šādu komandu, lai konfigurācija stātos spēkā:

  1. 以下是代码片段:
  2. /sbin/sysctl -p
Kopēt kodu

Ja nevēlaties modificēt /etc/sysctl.conf, varat arī izmantot komandu, lai to izdarītu:

  1. 以下是代码片段:
  2. /sbin/sysctl -w key=value
Kopēt kodu

Ceturtkārt, iestatīts saskaņā ar FreeBSD

    Yayu personīgais mācīšanās viedoklis: aizsardzība pret syn FreeBSD var nebūt tāda pati kā Linux, konfigurētie parametri nav tieši tādi paši, un attiecīgā konfigurācija un izpratne var nebūt pareiza :)

    TCP saitē ir tādsMSL(maksimālais segmenta kalpošanas laiks)JēdziensMaksimālais ražošanas laiksMSL vērtība tiek ņemta 30 sekundes vispārējā ieviešanā, un dažas ieviešanas aizņem 2 minūtes. "Pasīvā izslēgšana" TCP stāvokļa mašīnā: no CLOSE_WAIT līdz LAST_ACK ir šāds noteikums: Kad TCP veic aktīvu izslēgšanu un nosūta atpakaļ pēdējo ACK, savienojumam jāpaliek TIME_WAIT stāvoklī divreiz ilgāk nekā MSL. Tas ļauj TCP nosūtīt pēdējo ACK vēlreiz, ja tas tiek zaudēts (otrs beigu taimauts un atkārtoti nosūta pēdējo FIN).

    Šī noteikuma esamības sekas ir tādas, ka saiti (klienta adrese, porta un servera puses adrese, ports) šajā adresē nevar izmantot šajā 2*MSL laikā. Piemēram, ja mēs aizveram saiti pēc tās izveides un pēc tam ātri restartējam saiti, tad osta nebūs pieejama.

    TIME_WAIT laiks ir 2 * MSL. Tātad jūs varat samazināt TIME_WAIT laiku, pielāgojot net.inet.tcp.msl. Tīmekļa serverim šo vērtību var pielāgot uz 7500 vai 2000 (piekļūstiet tīmeklim, lapu nevar mirgot ilgāk par 4 ~ 15 sekundēm, varat apsvērt atteikšanos -_-)

    Parametru iestatīšanas atsauce:

  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
Kopēt kodu

FreeBSD yayu neredzēja tādu komandu kā "/sbin/sysctl -p", kas varētu padarīt /etc/sysctl.conf saturu efektīvu, tāpēc viņš vienkārši izmantoja komandu:

  1. 以下是代码片段:
  2. sysctl net.inet.tcp.syncookies=1 net.inet.tcp.msl=7500 net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1
Kopēt kodu






Iepriekšējo:Vučangas Tehnoloģiju institūta studenta vēstule ziņu medijiem
Nākamo:Atjaunojiet patiesību par prostitūcijas organizēšanu viesnīcās koledžās un universitātēs "Wuchang Tehnoloģiju institūts: baumas apstājas...
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com