Уменьшение полного времени обработки запроса на соединение
Поскольку мы знаем, что SYN атака/спуфинг это просто ряд SYN пакетов, главным образом с фиктивными IP адресами. В прошлом разделе мы увеличили размер очереди соединений. Теперь, когда наши системы могут обрабатывать большее количество SYN запросов, мы должны уменьшить полное время хранения полуоткрытых соединений в очереди. Когда сервер получает запрос, он немедленно посылает пакет с набором флагов SYN и ACK, помещает это полуоткрытое соединение в очередь, а затем ожидает от клиента пакет с флагом ACK. Если сервер не получает ответа от клиента, то он еще несколько раз передает ответный пакет (с флагами SYN и ACK), (количество ответов зависит от установок операционной системы), давая клиенту возможность для пересылки ACK пакета. Ясно, что в случае фиктивности исходного IP адреса клиента, ACK пакет никогда не прибудет. После нескольких минут ожидания сервер удаляет это полуоткрытое соединение. Мы можем ускорить процесс удаления соединений в состоянии в SYN RECEIVED из очереди соединений, изменяя время первой перепередачи и общего количества перепередач.
Другая методика защиты от SYN атак заключается в отключении некоторые параметров TCP, которые всегда активны в течение процесса установления связи сервера с клиентом. Некоторые из этих параметров автоматически выключаются механизмами, описанными в первом разделе (SynAttackProtect и Syncookies).
Теперь мы рассмотрим переменные стека TCP/IP, которые позволяют уменьшить время хранения полуоткрытых соединений в очереди задач.
Операционная система: Windows 2000
В Windows 2000, время для первой перепередачи, по умолчанию, равно 3 секундам (3000 миллисекундам) и может быть изменено с помощью значения элемента системного реестра TcpInitialRtt (для каждого интерфейса). Например, для уменьшения времени первой перепередачи до 2 секунд, мы должны установить значение TcpInitialRtt равным 2000 миллисекундам (в десятичном формате). Количество перепередач (пакетов с флагами SYN и ACK) управляется параметром системного реестра TcpMaxConnectResponseRetransmissions, который добавляется к ключу HKLMSYSTEMCurrentControlSetServicesTcpipParameters.
Ниже показана таблица, содержащая примеры значений, и соответствующее им время хранения полуоткрытых соединений в очереди задач (время первой перепередачи равно 3 секундам).
Значение | Время перепередачи | Полное время хранения полуоткрытых соединений в очереди |
1 | на 3-ей секунде | 9 секунд |
2 | на 3-ей и 9-ой секундах | 21 секунда |
3 | на 3-ей, 9-ой и 21 секундах | 45 секунд |
Мы можем установить это значение системного реестра в 0, после чего Windows вообще повторно не передает пакеты. В этом случае, система посылает только один ответ и удаляет полуоткрытое соединение через 3 секунды. Эта установка игнорируется, когда ее значение равно или больше 2, и когда включен механизм SynAttackProtect.
Операционная система: Linux RedHat
Переменная Tcp_synack_retries управляет количеством перепередач в операционной системе Linux. По умолчанию, для большинства операционных систем Linux, это значение равно 5, что означает удаление полуоткрытого соединения через 3 минуты. Ниже приведена таблица с вычислениями для других значений.
Значение | Время перепередачи | Полное время хранения полуоткрытых соединений в очереди |
1 | на 3-ей секунде | 9 секунд |
2 | на 3-ей и 9-ой секундах | 21 секунда |
3 | на 3-ей, 9-ой и 21 секундах | 45 секунд |
Операционная система: Sun Solaris
В этой операционной системе невозможно отключить перепередачи пакетов, непосредственно используя команду ndd. Кроме того, в ОС Sun Solaris есть параметры, которые являются неконфигурируемыми и которые управляют количеством перепередач (как минимум 3) и полным временем перепередачи пакетов (как минимум 3 минуты). Более детальную информацию об этих параметрах можно найти здесь.
Операционная система: HP-UX
В HP-UX, время обработки полуоткрытых соединений в очереди задач управляется параметром tcp_ip_abort_cinterval. Используя ndd команду, мы можем определить время ожидания ACK пакета. Изменяя это значение мы косвенно можем управлять количеством выполненных перепередач. Взгляните на таблицу представленную ниже.
Значение | Время перепередачи | Полное время хранения полуоткрытых соединений в очереди |
1000 | - | 1 секунда |
5000 | На 2-ой секунде | 5 секунд |
10000 | на 2-ой и 5-ой секундах | 10 секунд |
60000 | на 2-ой, 5-ой, 11 и 47-ой секундах | 1 минута |
Мы можем изменить время первой перепередачи, изменив значение tcp_rexmit_interval_initial. Интервалы последующих перепередач управляются двумя параметрами: tcp_rexmit_interval и tcp_rexmit_interval_min. Эти три переменной такие же, как и в ОС Sun Solaris.
Выводы
Методы укрепления защиты стека TCP/IP, представленные в этой статье, делают серверы более стойкими к SYN-атакам - одним из видов DDoS атак. Модификация заданных по умолчанию параметров настроек стека TCP/IP также рекомендуется в течение процесса защиты операционной системы.