Назад | Перейти на главную страницу

Метод обнаружения TCP SYN Flooding в ядре Linux

Когда ядро ​​Linux обнаруживает SYN Flooding, оно регистрирует сообщение вроде:

possible SYN flooding on port 80. Sending cookies

Кто-нибудь знает точный метод, который ядро ​​использует для обнаружения этого?

Если я правильно читаю материал sysctl / tcp, он срабатывает, когда количество un-ACKed syn-запросов превышает значение net.ipv4.tcp_max_syn_backlog. В частности:

Переменная tcp_max_syn_backlog сообщает вашему ящику, сколько SYN-запросов хранить в памяти, из которых нам еще предстоит получить третий пакет в трехстороннем рукопожатии. Переменная tcp_max_syn_backlog переопределяется переменной tcp_syncookies, которую необходимо включить, чтобы эта переменная имела какой-либо эффект. Если сервер страдает от перегрузок в часы пик, вы можете немного увеличить это значение.

Я думаю, что это так просто, потому что это текст из tcp_syncookies:

Переменная tcp_syncookies используется для отправки так называемых syncookies на хосты, когда очередь ожидания синхронизации ядра для конкретного сокета переполняется. Это означает, что если наш хост заполнен несколькими SYN-пакетами от разных хостов, очередь ожидания синхронизации может переполниться, и, следовательно, эта функция начинает отправлять файлы cookie, чтобы проверить, действительно ли SYN-пакеты являются законными.

Для меня это звучит так, как будто это действительно так же просто, как очередь синхронизации, имеющая> tcp_max_syn_backlog невыполненных соединений.

Эта статья на SYN файлы cookie могут помочь. Вы, конечно, можете изучить источник.