Когда второе рукопожатие TCP устанавливает полусоединение, в это время можно запустить флуд-атаку.
То есть большое количество запросов инициируют TCP-соединения. Во время второго рукопожатия сервер помещает эти запросы в очередь полуподключений. Поскольку эти злонамеренные атакующие клиенты не подтвердят третье рукопожатие, эти полуподключения не могут быть обработаны. Отпустите, сервер будет ждать истечения времени ожидания. В это время очередь полуподключений будет заполнена, и на обычные запросы невозможно будет ответить. Это способ флуд-атаки.
Как бороться с флуд-атаками в целом
Когда режим syncookies включен, сервер вычисляет хеш-значение (SHA1) на основе (адреса источника, порта источника, адреса назначения, порта назначения и т. д.) и случайного числа во время первого рукопожатия, а затем второго рукопожатия. будет использовать это. Сгенерированные файлы синхронизации возвращаются клиенту. Когда клиент подтвердит третье рукопожатие, он отправит файлы синхронизации на сервер. Сервер проверит, соответствует ли файл синхронизации предыдущему. Если он соответствует, будет установлено TCP-соединение. учредил.
Преимущество этого подхода: если сервер не получает или полученные синхронизирующие файлы не совпадают, TCP-соединение не будет установлено. А при использовании syncookies сервер не будет поддерживать очередь полусоединения, то есть состояние полусоединения отсутствует. Поскольку при использовании syncookies для сравнения нет необходимости в полуподключении, он позволяет избежать очереди полуподключения. заполняется и препятствует получению новых соединений.
Сценарии, которые Syncookies не может решить
При запуске большого количества DDOS-атак метод syncookies также будет парализован. Причина паралича заключается в том, что процессору приходится вычислять большое количество syncookies, что приводит к его остановке. Поскольку вычисление синкуков также снижает производительность ЦП, он не может справиться с огромным количеством DDOS. В настоящее время единственным вариантом является увеличение пропускной способности и настройка жесткого ограничения.
Другие решения
Увеличьте очередь полусоединения и очередь полного соединения (этот метод в принципе неэффективен для массовых атак)
Уменьшите количество повторных передач SYN+ACK (TCP полагается на повторные передачи для поддержания стабильного соединения), то есть, когда он получает флуд-атаку из большого количества запросов синхронизации, сервер будет продолжать повторять попытки, если он не сможет получить ответ до тех пор, пока максимальное количество раз. Уменьшите это максимальное количество раз. Это принесет вам некоторое облегчение.