Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 13773|Vastaus: 0

[Turvallisuusopas] SYN Flood -hyökkäykset, SYN-evästeiden puolustus ja ytimen parametrien muokkaus Linuxille/FreeBSD:lle

[Kopioi linkki]
Julkaistu 27.10.2014 21.37.19 | | |

HackerSe on toivottava ja lupaava ura. Arvostan hyviä hakkereita ja vihaan huonoja hakkereita. Niin sanottu paha hakkeri on sellainen tyyppi, joka saa toisen puolen tekemään ylitöitä.

    SYN Flood -hyökkäykset ovat tyypillisiä palvelunestohyökkäyksiä. Niin sanottu palvelunestohyökkäys on epäsuorasti tarkoitus saavuttaa tekemällä uhri-isännästä tai verkosta kyvytön tarjoamaan hyvää palvelua. Hakkerit haluavat pelata tätä osoittaakseen olevansa tasapainoisia, kykeneviä ja rohkeita pakottamalla toisen osapuolen tekemään ylitöitä, mutta todellisuudessa se ei ole mitään.

   1: Mikä on SYN Flood -hyökkäys?

    SYN Flood -hyökkäykset hyödyntävät TCP-protokollan kolmisuuntaista kättelyprosessia IPv4:ssä. Tämä protokolla määrää, että jos toinen pää haluaa aloittaa TCP-yhteyden toiseen päähän, sen täytyy ensin lähettää TCP SYN (synkronointi) paketti toiselle osapuolelle, ja toinen osapuoli lähettää TCP SYN + ACK -paketin takaisin vastaanotettuaan, ja sitten aloittaja lähettää TCP ACK (ACKnowledge Character) -paketin takaisin, jotta kolme kättelyä päättyvät.

    Edellä mainitussa prosessissa on joitakin tärkeitä käsitteitä:

    Jono ei ole yhdistetty: Kolmisuuntaisessa kädenpuristusprotokollassa palvelin ylläpitää yhdistämätöntä jonoa, joka avaa merkinnän jokaisen asiakkaan SYN-paketille (syn=j), joka osoittaa, että palvelin on vastaanottanut SYN-paketin ja antaa asiakkaalle vahvistuksen odottaen asiakkaan vahvistuspakettia. Näiden merkintöjen tunnistama yhteys on palvelimella Syn_RECV-tilassa, ja kun palvelin saa vahvistuspaketin asiakkaalta, merkintä poistetaan ja palvelin siirtyy PERUSTETTUUN tilaan. Toisin sanoen, kun TCP-palvelin vastaanottaa TCP SYN -pyyntöpaketin, ennen kuin lähettää TCP SYN+ACK -paketin takaisin TCP-asiakkaalle, TCP-palvelimen on ensin varattava dataalue palvelemaan tämän käden muodostamaa TCP-yhteyttä. Yleensä yhteystila syntyy, kun SYN-paketti vastaanotetaan, mutta ACK-pakettia ei ole vielä vastaanotettuPuoliksi avoin yhteys(Puoliksi auki oleva yhteys)。

    Backlog-parametri: Ilmaisee suurimman määrän yhdistämättömiä jonoja.

    SYN-ACK-uudelleenlähetysten määrä: Kun palvelin on lähettänyt SYN-ACK-paketin, jos asiakasvahvistuspakettia ei vastaanoteta, palvelin suorittaa ensimmäisen uudelleenlähetyksen, odottaa jonkin aikaa eikä vastaanota asiakasvahvistuspakettia, ja suorittaa toisen uudelleenlähetyksen. Jos uudelleenlähetysten määrä ylittää järjestelmän määrittelemän enimmäismäärän uudelleenlähetystä, järjestelmä poistaa yhteystiedot puoliyhteyden jonosta. Huomaa, että jokaisen uudelleenkierroksen odotusaika ei välttämättä ole sama.

    Puoliksi toisiinsa kytkeytynyt selviytymisaika: Viittaa maksimiaikaan, jonka puoliyhteysjonon merkintä säilyy, eli maksimiaikaan siitä, kun palvelu vastaanottaa SYN-paketin, siihen aikaan, kun paketti vahvistetaan virheelliseksi, ja aikaarvo on kaikkien uudelleenlähetyspyyntöpakettien maksimiodotusajan summa. Joskus kutsumme myös puoliksi yhteydessä olevaa selviytymisaikaa SYN_RECV selviytymisaikaa.

    Yleisimmässä SYN-tulvahyökkäyksessä hyökkääjä lähettää suuren määrän TCP SYN -paketteja uhrille lyhyessä ajassa, jolloin hyökkääjä on TCP-asiakas ja uhri TCP-palvelin. Yllä olevan kuvauksen mukaan uhri määrittää tietyn datavyöhykkeen jokaiselle TCP SYN -paketille, kunhan SYN-paketeilla oli eri lähdeosoitteet (mikä olisi hyökkääjille helppoa väärentää). Tämä rasittaa TCP-palvelinjärjestelmää paljon ja lopulta estää järjestelmän toimimasta kunnolla.

    2. SYN-evästeiden periaate

    Yksi tapa estää tehokkaasti SYN Flood -hyökkäykset ovat SYN-evästeet. SYN Cookie Syy D. Keksineet J. Bernstain ja Eric Schenk.

    SYN-evästeet ovat TCP:n palvelinpuolen kolmisuuntaisen handshake-protokollan muokkaus SYN Flood -hyökkäysten estämiseksi.Sen periaate on:Kun TCP-palvelin vastaanottaa TCP SYN -paketin ja palauttaa TCP SYN+ACK -paketin, se ei varaa erillistä dataaluetta, vaan laskee evästearvon tämän SYN-paketin perusteella. Kun TCP ACK -paketti vastaanotetaan, TCP-palvelin tarkistaa TCP ACK -paketin laillisuuden kyseisen evästearvon perusteella. Jos se on laillista, varataan oma tietoalue tulevien TCP-yhteyksien käsittelyyn.

    Puhutaanpa siitä, miten ytimen parametrit voidaan konfiguroida SYN-evästeiden toteuttamiseksi Linuxissa ja FreeBSD:ssä

    Kolme: Linux-asetukset

    Jos palvelimen kokoonpano ei ole hyvä, TCP-TIME_WAIT sokettien määrä nousee 20 000 tai 30 000:een, ja palvelin voidaan helposti raahata hengiltä. Muuttamalla Linux-ytimen parametreja palvelimen TIME_WAIT sokettien määrää voidaan vähentää.

    TIME_WAIT voidaan tarkastella seuraavalla komennolla:

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

Linuxissa, kuten CentOS:ssä, tämän voi saavuttaa muokkaamalla /etc/sysctl.conf-tiedostoa.

    Lisää seuraavat rivit:

  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
Kopioi koodi

Havainnollistaa:

net.ipv4.tcp_syncookies = 1 tarkoittaa, että SYN-evästeet ovat käytössä, mikä on BOOLEAN. Kun SYN odottaa jonon ylivuotoa, ota evästeet käyttöön sen käsittelemiseksi, mikä voi estää pienen määrän SYN-hyökkäyksiä, ja oletusarvo on 0, mikä tarkoittaa, että se on suljettu.
net.ipv4.tcp_tw_reuse = 1 tarkoittaa, että uudelleenkäyttö on käytössä, mikä on BOOLEAN. Mahdollistaa TIME-WAIT-sokettien uudelleenkäytön uusille TCP-yhteyksille, oletuksena 0, mikä tarkoittaa sulkeutumista;
net.ipv4.tcp_tw_recycle = 1 tarkoittaa nopeaa TIME-WAIT-sotilaiden kierrätystä TCP-yhteyksissä, mikä on BOOLEAN, ja oletusarvo on 0, eli se on suljettu.
net.ipv4.tcp_fin_timeout = 30 tarkoittaa, että jos socket suljetaan paikallisella pyynnöllä, tämä parametri määrittää, kuinka kauan se pysyy FIN-WAIT-2-tilassa. Yksikkö on sekunteja.
net.ipv4.tcp_keepalive_time = 1200 kertoo, kuinka usein TCP lähettää keepalive-viestejä käyttäessä. Oletusaika on 2 tuntia, muutettu 20 minuuttiin. Yksikkö on sekunteja.
net.ipv4.ip_local_port_range = 1024 65000 tarkoittaa ulkoisiin yhteyksiin käytettyjen porttien aluetta. Oletustapaus on pieni: 32768–61000, vaihdettu 1024–65000.
net.ipv4.tcp_max_syn_backlog = 8192 tarkoittaa SYN-jonon pituutta, joka on oletuksena 1024, ja jonon pituus on 8192, jotta voidaan ottaa käyttöön enemmän verkkoyhteyksiä, jotka odottavat yhteyttä.
net.ipv4.tcp_max_tw_buckets = 5000 ilmaisee järjestelmän TIME_WAIT samanaikaisesti ylläpitämien sosimien enimmäismäärän, ja jos tämä luku ylittyy, TIME_WAIT kanta tyhjennetään välittömästi ja tulostetaan varoitusviesti. Oletusarvo on 180000, muutettu 5000:een. Palvelimilla kuten Apache ja Nginx aiempien rivien parametrit voivat vähentää sokettien määrää TIME_WAIT hyvin, mutta Squidille vaikutus ei ole suuri. Tämä parametri säätelee TIME_WAIT-sokettien enimmäismäärää estääkseen Squid-palvelimen vetämisen pois suuren TIME_WAIT-sokettien määrästä.
net.ipv4.tcp_synack_retries ja net.ipv4.tcp_syn_retries määrittelevät SYN-yritysten määrän.

Suorita seuraava komento, jotta konfiguraatio astuu voimaan:

  1. 以下是代码片段:
  2. /sbin/sysctl -p
Kopioi koodi

Jos et halua muokata /etc/sysctl.conf -tiedostoa, voit myös käyttää komentoa siihen:

  1. 以下是代码片段:
  2. /sbin/sysctl -w key=value
Kopioi koodi

Neljäs, perustettu FreeBSD:n alaisuuteen

    Yayun henkilökohtainen oppimisnäkökulma: FreeBSD:n syninen puolustus ei välttämättä ole sama kuin Linuxissa, konfiguroidut parametrit eivät ole täysin samat, ja asiaankuuluva konfiguraatio ja ymmärrys eivät välttämättä ole oikein :)

    Yksi on TCP-linkissäMSL (maksimisegmentin käyttöikä)KäsiteMaksimigenerointiaikaMSL-arvo otetaan yleisissä toteutuksissa 30 sekuntia, ja joissain toteutuksissa se kestää 2 minuuttia. "Passiivinen sammutus" TCP-tilakoneessa: CLOSE_WAIT–LAST_ACK on seuraava sääntö: Kun TCP suorittaa aktiivisen sammutuksen ja lähettää viimeisen ACK:n takaisin, yhteyden on pysyttävä TIME_WAIT-tilassa kaksinkertaisen ajan MSL:ään verrattuna. Tämä mahdollistaa TCP:lle viimeisen ACK:n lähettämisen uudelleen, jos se katoaa (toinen pääty ajan loppuu ja lähettää viimeisen FIN:n uudelleen).

    Tämän säännön olemassaolo johtaa siihen, että kyseisen osoitteen linkkiä (asiakasosoite, portti ja palvelinpuolen osoite, portti) ei voida käyttää tämän 2*MSL-ajan aikana. Esimerkiksi, jos suljemme linkin sen luomisen jälkeen ja käynnistämme linkin nopeasti uudelleen, portti ei ole käytettävissä.

    TIME_WAIT aika on 2*MSL. Voit siis vähentää TIME_WAIT aikaa säätämällä net.inet.tcp.msl. Verkkopalvelimelle tämä arvo voidaan säätää arvoon 7500 tai 2000 (käytä verkkoa, sivua ei voi flashata yli 4~15 sekuntia, voit harkita luopumista -_-)

    Parametrien asetusviite:

  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
Kopioi koodi

FreeBSD:ssä yayu ei nähnyt komentoa kuten "/sbin/sysctl -p", joka voisi tehdä /etc/sysctl.conf:n sisällöstä tehokkaan, joten hän käytti vain komentoa:

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






Edellinen:Kirje Wuchangin teknillisen korkeakoulun opiskelijalta uutismedialle
Seuraava:Palauta totuus prostituution järjestämisestä hotelleissa korkeakouluissa ja yliopistoissa "Wuchangin teknillinen instituutti: Huhut pysähtyvät...
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com