Защита стека TCP/IP от SYN атак - Увеличение размера очереди соединений
ОГЛАВЛЕНИЕ
Увеличение размера очереди соединений
При SYN атаке, мы можем изменить размер очереди задач для поддержки большего количества полуоткрытых соединений так, чтобы не отклонять доступ к серверу легальным клиентам. В некоторых операционных системах, размер очереди задач очень маленький, поэтому производители рекомендуют увеличение этого значения, в случае если система подверглась SYN атаке.
Увеличение размера очереди задач требует, чтобы система резервировала дополнительные ресурсы памяти для входящих соединений. Если в системе отсутствует достаточное количество свободной памяти для этой операции, то пострадает производительность системы. Также мы должны удостовериться, что сетевые приложения (Apache, IIS и т.д.) смогут принимать большее количество подключений.
Операционная система: Windows 2000
Кроме описанных выше переменных TcpMaxHalfOpen и TcpMaxHalfOpenRetried, в Windows 2000 количество полуоткрытых подключений может быть установлено через динамическую очередь соединений. Конфигурирование этой очереди выполняется через драйвер AFD.SYS. Этот драйвер используется для поддержки Windows Socket приложений (FTP, Telnet и т.д.). Для увеличения количества полуоткрытых соединений, AFD.SYS поддерживает четыре элемента системного реестра. Все эти значения расположены в следующем ключе системного реестра:
HKLMSystemCurrentControlSetServices AFDParameters
Значение системного реестра EnableDynamicBacklog - глобальный переключатель, включающий или выключающий динамическую очередь соединений. Значение 1 - включает динамическую очередь.
MinimumDynamicBacklog - управляет минимальным количеством свободных соединений, разрешенных на каждом отдельном TCP порте. Если количество свободных соединений снижается ниже этого значения, то дополнительные свободные соединения будут созданы автоматически. Рекомендованное значение 20.
Значение MaximumDynamicBacklog определяет сумму активных полуоткрытых соединений и максимального количества свободных соединений. Если это значение будет превышено, то система больше не будет создавать свободные соединения. Рекомендованное значение не должно превышать 20000.
Последний параметр DynamicBacklogGrowthDelta управляет количеством свободных соединений, создаваемых в случае необходимости. Рекомендуемое значение: 10.
Ниже расположена таблица, показывающая рекомендуемые значения для драйвера AFD.SYS:
Значение подключа реестра | Формат | Значение |
EnableDynamicBacklog | DWORD | 1 |
MinimumDynamicBacklog | DWORD | 20 |
MaximumDynamicBacklog | DWORD | 20000 |
DynamicBacklogGrowthDelta | DWORD | 10 |
Операционная система: Linux
Переменная Tcp_max_syn_backlog определяет количество полуоткрытых подключений сохраняемых в очереди соединений. Например, 256 - общее количество полуоткрытых подключений, размещенных в памяти Linux RedHat 7.3. Переменные TCP/IP стека могут быть сконфигурированы с помощью команды sysctl или стандартными командами Unix. Ниже показан пример изменения заданного по умолчанию размера очереди соединений с помощью команды sysctl:
# sysctl -w net.ipv4.tcp_max_syn_backlog="2048"
Операционная система: Sun Solaris
В операционной системе Sun Solaris есть два параметра, управляющие максимальным количеством подключений. Первый параметр управляет общим количеством полных подключений. Второй параметр tcp_conn_req_max_q0, определяет при каком количестве полуоткрытых соединений, поступающие запросы не будут отклонены системой. Заданное по умолчанию значение этого параметра в ОС Sun Solaris 8 равно 1024. Мы можем изменять это значение при помощи команды ndd.
# ndd -set /dev/tcp tcp_conn_req_max_q0 2048
Операционная система: HP-UX
В операционной системе HP-UX, ответственной за управление максимальным количеством полуоткрытых соединений в состоянии SYN RECEIVED, является переменная TCP/IP стека tcp_SYN_rcvd_max. По умолчанию, в ОС HP-UX 11.00, значение этой переменной равно 500. Изменение этого значения, как и в ОС Sun Solaris, происходит с помощью команды ndd.
# ndd -set /dev/tcp tcp_syn_rcvd_max 2048