Teknologian jakaminen

[HBZ-jakaminen] Kuinka välttää TCP-tulvahyökkäykset

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Perinteisen tulvahyökkäyksen periaate

  1. Kun TCP toinen kättely muodostaa puoliyhteyden, tulvahyökkäys voidaan käynnistää tällä hetkellä
  2. Toisin sanoen suuri määrä pyyntöjä käynnistää TCP-yhteydet Toisen kättelyn aikana palvelin laittaa nämä pyynnöt puoliyhteysjonoon. Koska nämä haitalliset hyökkäävät asiakkaat eivät vahvista kolmatta kättelyä, näitä puoliyhteyksiä ei voida käsitellä. Vapauta, palvelin odottaa aikakatkaisuun asti. Tällä hetkellä puoliyhteysjono on täytetty, eikä normaaliin pyyntöön voida vastata. Tämä on tulvahyökkäystapa.

Kuinka ratkaista tulvahyökkäykset yleensä

  1. Kun syncookies-tila on käytössä, palvelin laskee hash-arvon (SHA1) perustuen (lähdeosoite, lähdeportti, kohdeosoite, kohdeportti jne.) ja satunnaisluku ensimmäisen kättelyn aikana ja sitten toisen kättelyn aikana. käyttää tätä Luodut syncookie-tiedostot palautetaan asiakkaalle perusti.
  2. Tämän lähestymistavan etu: Kun palvelin ei vastaanota tai vastaanotetut syncookies eivät täsmää, TCP-yhteyttä ei muodosteta. Ja syncookeja käytettäessä palvelin ei ylläpidä puoliyhteysjonoa, eli puoliyhteystilaa ei ole. Koska syncookien käyttäminen vertailuun ei vaadi puoliyhteyttä, joten se välttää puoliyhteysjonon. täytetään ja estetään uusien yhteyksien vastaanottaminen.

Skenaariot, joita syncookies ei pysty ratkaisemaan

  1. Kun suuri määrä DDOS-hyökkäyksiä käynnistetään, myös syncookies-menetelmä halvaantuu. Lamauksen syy on se, että suorittimen on laskettava suuri määrä syncookeja, mikä aiheuttaa CPU:n tappamisen. Koska syncookien laskeminen kuluttaa myös suorittimen suorituskykyä, CPU ei pysty käsittelemään valtavaa määrää DDOS:ia. Tällä hetkellä ainoa vaihtoehto on lisätä kaistanleveyttä ja määrittää kovakatto.

Muut ratkaisut

  1. Kasvata puoliyhteyden jonoa ja täyden yhteyden jonoa (tämä menetelmä on periaatteessa tehoton massiivisissa hyökkäyksissä)
  2. Vähennä SYN+ACK-uudelleenlähetysten määrää (TCP luottaa uudelleenlähetyksiin ylläpitääkseen vakaan yhteyden), eli kun se vastaanottaa tulvahyökkäyksen suuresta määrästä synkronointipyyntöjä, palvelin jatkaa yrittämistä uudelleen, jos se ei voi saada vastausta ennen kuin Kertojen enimmäismäärä

Kuinka tarkistaa, oletko joutunut tulvan kimppuun

1. 先进行流量查看:
sar -n DEV 1 -h

然后只看eth0即可-->用rxkb/s 和 rxpck/s 这两列相除-->如果得出的包就50-60几字节,
那就说明是小包搞鬼,有可能遭受洪水攻击了,一般来说最大MTU = 1460

2. 如果发现是小包搞鬼,那就再进行网络抓包, 输入如下命令
tcpdump -i eth0 -n tcp port 80

3. 看有多少个[S], 这个表示发起TCP请求阶段,如果[S]过多,那就说明是洪水攻击,这是洪水攻击的特征


4. 进一步确认是洪水攻击,查询半连接的池子大小,以及当前半连接数量
半连接总大小: cat /proc/sys/net/ipv4/tcp_max_syn_backlog
当前半连接数: ss -s 或 netstat -n -p | grep SYN_RECV | wc -1



[S]: SYN,开始连接
[P]: PSH, 推送数据
[F]: FIN, 结束连接
[R]: RST, 重置连接
[.]: 没有Flag,可能是ACK 也可能是URG

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24