[HBZ 共有] TCP フラッド攻撃を回避する方法
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
従来のフラッド攻撃の原理
- TCP の 2 番目のハンドシェイクで半接続が確立されると、この時点でフラッド攻撃が開始される可能性があります。
- つまり、2 回目のハンドシェイク中に多数のリクエストが TCP 接続を開始し、サーバーはこれらのリクエストを準接続キューに入れます。これらの悪意のある攻撃クライアントは 3 回目のハンドシェイクを確認しないため、これらの準接続は処理できません。リリースすると、サーバーはタイムアウトになるまで待機します。この時点で、半接続キューがいっぱいになり、通常のリクエスト接続に応答できなくなります。
フラッド攻撃全般を解決する方法
- syncookies モードがオンになると、サーバーは最初のハンドシェイクと 2 番目のハンドシェイク中に (送信元アドレス、送信元ポート、宛先アドレス、宛先ポートなど) と乱数に基づいてハッシュ値 (SHA1) を計算します。生成された synccookie がクライアントに返され、クライアントが 3 回目のハンドシェイクを確認すると、サーバーは synccookie が前のハンドシェイクと一致するかどうかを確認し、一致する場合は TCP 接続が行われます。設立。
- このアプローチの利点: サーバーが受信しない場合、または受信した syncookies が一致しない場合、TCP 接続は確立されません。また、syncookies を使用すると、サーバーは半接続キューを維持しません。つまり、比較に syncookies を使用すると、半接続の必要がなく、半接続キューが回避されます。いっぱいになり、新しい接続を受信できなくなります。
synccookie が解決できないシナリオ
- 大量の DDOS 攻撃が開始されると、syncookies メソッドも麻痺します。麻痺の原因は、CPU が大量の syncookies を計算する必要があり、CPU が強制終了されることです。 syncookies の計算にも CPU パフォーマンスが消費されるため、現時点では、CPU が大量の DDOS を処理することができないため、帯域幅を増やしてハード キャップを構成するしかありません。
その他のソリューション
- セミコネクションキューとフルコネクションキューを増やす(この方法は大規模な攻撃には基本的に効果がありません)
- 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