Quando o segundo handshake TCP estabelece uma semiconexão, um ataque de inundação pode ser lançado neste momento
Ou seja, um grande número de solicitações inicia conexões TCP. Durante o segundo handshake, o servidor colocará essas solicitações na fila de semiconexões. Como esses clientes atacantes maliciosos não confirmarão o terceiro handshake, essas semiconexões não poderão ser processadas. Liberado, o servidor aguardará até o tempo limite. Nesse momento, a fila de semi-conexão será preenchida e as conexões de solicitação normais não poderão ser atendidas.
Como resolver ataques de inundação em geral
Quando o modo sincronizadores estiver ativado, o servidor calculará um valor de hash (SHA1) com base em (endereço de origem, porta de origem, endereço de destino, porta de destino, etc.) e um número aleatório durante o primeiro handshake e, em seguida, o segundo handshake usará isto Os sincookies gerados serão retornados ao cliente. Quando o cliente confirmar o terceiro handshake, ele enviará os sincookies ao servidor. O servidor verificará se o sincookie corresponde ao anterior. estabelecido.
A vantagem desta abordagem: quando o servidor não recebe ou os sincookies recebidos não correspondem, a conexão TCP não será estabelecida. E ao usar sincookies, o servidor não manterá a fila de semi-conexão, ou seja, não há estado de semi-conexão, pois ao usar sincookies para comparação, não há necessidade de semi-conexão, evitando assim a fila de semi-conexão. sendo preenchido e incapaz de receber novas conexões.
Cenários que os sincronizadores não conseguem resolver
Quando um grande número de ataques DDOS são lançados, o método de sincookies também fica paralisado. O motivo da paralisia é que a CPU precisa calcular um grande número de sincookies, fazendo com que a CPU seja morta. Como o cálculo de sincookies também consome o desempenho da CPU, a CPU não consegue lidar com a enorme quantidade de DDOS. Neste momento, a única opção é aumentar a largura de banda e configurar um hard cap.
Outras soluções
Aumente a fila de semi-conexão e a fila de conexão completa (este método é basicamente ineficaz para ataques massivos)
Reduza o número de retransmissões SYN+ACK (o TCP depende de retransmissões para manter uma conexão estável), ou seja, quando recebe um ataque de inundação de um grande número de solicitações syn, o servidor continuará tentando novamente se não puder receber uma resposta até o número máximo de vezes. Reduza esse número máximo de vezes.
Como verificar para determinar se você foi atacado por uma inundação