技術共有

[HBZ 共有] TCP フラッド攻撃を回避する方法

2024-07-12

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

従来のフラッド攻撃の原理

  1. TCP の 2 番目のハンドシェイクで半接続が確立されると、この時点でフラッド攻撃が開始される可能性があります。
  2. つまり、2 回目のハンドシェイク中に多数のリクエストが TCP 接続を開始し、サーバーはこれらのリクエストを準接続キューに入れます。これらの悪意のある攻撃クライアントは 3 回目のハンドシェイクを確認しないため、これらの準接続は処理できません。リリースすると、サーバーはタイムアウトになるまで待機します。この時点で、半接続キューがいっぱいになり、通常のリクエスト接続に応答できなくなります。

フラッド攻撃全般を解決する方法

  1. syncookies モードがオンになると、サーバーは最初のハンドシェイクと 2 番目のハンドシェイク中に (送信元アドレス、送信元ポート、宛先アドレス、宛先ポートなど) と乱数に基づいてハッシュ値 (SHA1) を計算します。生成された synccookie がクライアントに返され、クライアントが 3 回目のハンドシェイクを確認すると、サーバーは synccookie が前のハンドシェイクと一致するかどうかを確認し、一致する場合は TCP 接続が行われます。設立。
  2. このアプローチの利点: サーバーが受信しない場合、または受信した syncookies が一致しない場合、TCP 接続は確立されません。また、syncookies を使用すると、サーバーは半接続キューを維持しません。つまり、比較に syncookies を使用すると、半接続の必要がなく、半接続キューが回避されます。いっぱいになり、新しい接続を受信できなくなります。

synccookie が解決できないシナリオ

  1. 大量の DDOS 攻撃が開始されると、syncookies メソッドも麻痺します。麻痺の原因は、CPU が大量の syncookies を計算する必要があり、CPU が強制終了されることです。 syncookies の計算にも CPU パフォーマンスが消費されるため、現時点では、CPU が大量の DDOS を処理することができないため、帯域幅を増やしてハード キャップを構成するしかありません。

その他のソリューション

  1. セミコネクションキューとフルコネクションキューを増やす(この方法は大規模な攻撃には基本的に効果がありません)
  2. SYN+ACK の再送信の数を減らします (TCP は安定した接続を維持するために再送信に依存します)。つまり、多数の syn 要求によるフラッド攻撃を受信した場合、サーバーは応答を受信できない場合は再試行を続けます。この最大回数を減らすと、いくらか緩和されます。

洪水に襲われているかどうかを確認する方法

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