Иллюстрированный самоучитель по защите в Интернет

Удаленное переполнение буфера. Отказ в обслуживании.

В главе 5, рассматривался вопрос переполнения буфера для системы Windows NT. В настоящее время выявлено несколько случаев переполнения буфера приложений, работающих под управлением NT/2000, но не самой операционной системы.


Если большинство серьезных атак против операционной системы NT, направленных на генерацию состояния DoS (отказ в обслуживании), предотвращаются с помощью сервисного пакета NT 4 Service Pack 6a, то WIN 2000 является сравнительно надежной в этом отношении операционной системой. До сих пор не было обнаружено никаких угроз возникновения условия DoS, даже после тестирования операционной системы на узле win2000test.com.

Атака SYN и бомбардировка IP-пакетами

Internet подтверждает известную истину: жизнь – это игра без правил. Особенно наглядно это проявилось в эксперименте с Win2000test.com, когда согласно правилам атаки DoS были категорически запрещены. Тем не менее, серверы этого узла подверглись массированным атакам IP-пакетами, количество которых значительно превысило возможности серверов по их обработке, а также хорошо известным атакам SYN, приводящим к переполнению очередей в стеке протокола TCP/IP (более подробная информация о специфике этих атак содержится в главе 15).

Контрмеры против атак DoS

Чтобы минимизировать ущерб от подобных атак, необходимо соответствующим образом настроить сетевые шлюзы или брандмауэры (более подробная информация содержится в главе 12). Однако еще раз повторим, что целесообразно также противостоять таким атакам на уровне отдельных компьютеров. Это сыграет свою роль, если одна из линий обороны будет прорвана. Благодаря эксперименту с узлом Win2000test.com компания Microsoft смогла добавить в операционную систему Windows 2000 несколько новых ключей системного реестра, которые можно использовать для защиты стека протокола TCP/IP от атак DoS. В табл. 6.3 содержится информация о конфигурации параметров системного реестра на серверах win2000test.com (эта таблица создана на основе отчета компании Microsoft, посвященного результатам эксперимента и расположенного по адресу http://www.microsoft.com/security, а также личного общения авторов с группой разработчиков Win2000test.com).

Некоторые из этих значений, например synAttackProtect=2, в некоторых случаях могут оказаться слишком жесткими. Они были выбраны для защиты сервера Internet с активным трафиком.

Таблица 6.3. Рекомендуемые параметры для стека протокола TCP/IP в операционной системе NT/2000, позволяющие предотвратить атаки DoS.

Параметр в разделе HKLM\Sye\CCS\ Services Рекомендуемо значение Описание
Tcpip\ Parameters \ SynAttackProtect 2 Этот параметр позволяет настраивать процесс передачи подтверждений SYN-ACK и обеспечивает более быстрый переход в режим ожидания при выявлении атаки SYN. Выявление этой атаки базируется на текущих значениях параметров TcpMaxPortsExhausted, TCPMaxHalfOpen и TCPMaxHalfOpenRetried. Значение 2 обеспечивает наилучшую защиту от SYN-атак, но может привести к проблемам с соединениями, характеризующимися высокой задержкой. Кроме того, если этот параметр принимает значение 2, то не учитываются следующие опции сокетов: переменный размер окна (RFC 1323) и настройка параметров TCP для каждого адаптера (размер окна)
Tcpip\Parameters\ EnableDeadGWDetect 0 Если этот параметр принимает значение 1, то протокол TCP может выявлять неактивные шлюзы и в случае трудностей с несколькими соединениями переключаться на резервный шлюз. Резервные шлюзы можно определить в разделе Advanced диалогового окна конфигурации протокола TCP/IP аплета Network панели управления. Если этот параметр принимает значение 0, то взломщик не может спровоцировать переключение на менее желательные шлюзы
Tcpip\Parameters\ EnablePMTUDiscovery 0 Если этот параметр принимает значение 1 (true), то протокол TCP пытается определить максимальную единицу передачи MTU (Maximum Transmission Unit) для каждого соединения с удаленным узлом. Определив значение MTU и ограничив этим значением размер сегментов TCP, можно устранить фрагментацию на маршрутизаторах, соединяющих сети с различными значениями MTU вдоль пути следования пакетов. Фрагментация может приводить к пробкам в сети. Если этот параметр принимает значение 0, то значение MTU принимается равным 576 байт для всех соединений, инициированных извне локальной подсети. Это препятствует попыткам хакеров изменить значение MTU на меньшее с целью переполнения стека
Tcpip \Parameters \Keep AliveTime 300000 (5минут) Этот параметр отвечает за частоту отправки контрольных пакетов (keep-alive), проверяющих, не разорвано ли соединение, находящееся в режиме ожидания. Если удаленная система все еще достижима и функционирует в нормальном режиме, то она направляет подтверждение. Контрольные пакеты по умолчанию не отправляются. Это свойство можно включить для данного соединения с помощью соответствующего приложения. Данные параметры являются глобальными, т.е. применяются для всех интерфейсов. Их значения могут оказаться слишком малыми для адаптеров, используемых в целях управления или резервирования
Tcpip\Parameter \Interfaces \ <интерфейс>NoName ReleaseOnDemand 0 (false) Этот параметр определяет, следует ли компьютеру возвращать свое имя NetBIOS в ответ на запрос Name-Release из сети. Значение 0 предотвращает атаки, направленные на получение имени NetBIOS (см. бюллетень Microsoft Security Bulletin MSOO-047). До конца не ясно, к какому результату могут привести подобные атаки при отключении протоколов NetBIOS/SMB/CIFS, как описано выше в этой главе
Tcpip \ Parameters\Interfaces\ <интерфейс> РеrfоrmRouterDiscovery 0 От значения этого параметра зависит, будет ли Windows NT/2000 выполнять поиск маршрутизатора согласно спецификации RFC 1256 для каждого интерфейса в отдельности. Значение 0 предотвращает попытки атак с использованием ложных пакетов от ложных маршрутизаторов. Для определения, какой интерфейс соответствует сетевому адаптеру, можно использовать значение ключа TcpipXParameters \Adapters

Более подробная информация об этих параметрах и описание параметра SynAttackProtect содержится в статье Q142641 базы знаний компании Microsoft.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.