Technologieaustausch

[HBZ-Freigabe] So vermeiden Sie TCP-Flood-Angriffe

2024-07-12

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

Das Prinzip des konventionellen Hochwasserangriffs

  1. Wenn der zweite TCP-Handshake eine Halbverbindung herstellt, kann zu diesem Zeitpunkt ein Flutangriff gestartet werden
  2. Das heißt, eine große Anzahl von Anfragen initiiert TCP-Verbindungen. Während des zweiten Handshakes stellt der Server diese Anfragen in die Halbverbindungswarteschlange. Da diese böswilligen angreifenden Clients den dritten Handshake nicht bestätigen, können diese Halbverbindungen nicht verarbeitet werden. Wenn Sie loslassen, wartet der Server bis zum Timeout. Zu diesem Zeitpunkt ist die Halbverbindungswarteschlange gefüllt und normale Anforderungsverbindungen können nicht beantwortet werden. Dies ist die Art und Weise eines Flutangriffs.

Wie man Überschwemmungsangriffe im Allgemeinen löst

  1. Wenn der Syncookies-Modus aktiviert ist, berechnet der Server beim ersten Handshake und dann beim zweiten Handshake einen Hash-Wert (SHA1) basierend auf (Quelladresse, Quellport, Zieladresse, Zielport usw.) und einer Zufallszahl Die generierten Syncookies werden an den Client zurückgegeben. Wenn der Client den dritten Handshake bestätigt, sendet er die Syncookies an den Server. Wenn es übereinstimmt, wird eine TCP-Verbindung hergestellt gegründet.
  2. Der Vorteil dieses Ansatzes: Wenn der Server keine Syncookies empfängt oder die empfangenen Syncookies nicht übereinstimmen, wird die TCP-Verbindung nicht aufgebaut. Und wenn Syncookies verwendet werden, verwaltet der Server die Halbverbindungswarteschlange nicht, das heißt, es gibt keinen Halbverbindungsstatus. Da für den Vergleich keine Halbverbindung erforderlich ist, wird die Halbverbindungswarteschlange vermieden gefüllt werden und der Empfang neuer Verbindungen verhindert wird.

Szenarien, die Syncookies nicht lösen können

  1. Wenn eine große Anzahl von DDOS-Angriffen gestartet wird, wird auch die Syncookies-Methode gelähmt. Der Grund für die Lähmung liegt darin, dass die CPU eine große Anzahl von Syncookies berechnen muss, wodurch die CPU getötet wird. Da die Berechnung von Syncookies auch CPU-Leistung beansprucht, kann die CPU die große Menge an DDOS nicht verarbeiten. Derzeit besteht die einzige Möglichkeit darin, die Bandbreite zu erhöhen und eine feste Obergrenze zu konfigurieren.

Andere Lösungen

  1. Erhöhen Sie die Halbverbindungswarteschlange und die Vollverbindungswarteschlange (diese Methode ist bei massiven Angriffen grundsätzlich wirkungslos).
  2. Reduzieren Sie die Anzahl der SYN+ACK-Neuübertragungen (TCP ist auf Neuübertragungen angewiesen, um eine stabile Verbindung aufrechtzuerhalten). Das heißt, wenn es einen Flutangriff von einer großen Anzahl von Syn-Anfragen erhält, versucht der Server es erneut, wenn er bis dahin keine Antwort erhalten kann Reduzieren Sie die maximale Anzahl an Malen. Das wird Ihnen eine gewisse Erleichterung verschaffen

So überprüfen Sie, ob Sie von einer Überschwemmung angegriffen wurden

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