Сканирование
Операционная система Windows 2000 прослушивает список портов, многие из которых не были задействованы в Windows NT 4 и появились лишь в этой версии операционной системы. В табл. 6.1 приводится список некоторых портов, прослушиваемых по умолчанию контроллером домена Windows 2000. Каждый из них является потенциальной точкой входа в систему.
Список номеров портов TCP и UDP, используемых службами и программами компании Microsoft, можно найти в перечне ресурсов по адресу http://www.microsoft.com/windows2000/
library/resouces/reslcit/ samplechapters/default.asp.
Таблица 6.1. Список портов, прослушиваемых по умолчанию контроллером домена Windows 2000
Порт | Служба | ||
TCP 25 | SMTP | ||
TCP 21 | FTP | ||
TCP/UDP 53 | DNS | ||
TCP 80 | WWW | ||
TCP/UDP 88 | Kerberos | ||
TCP 135 | RPC/DCE Endpoint mapper | ||
UDP 137 | Служба имен NetBIOS | ||
UDP 138 | Служба дейтаграмм NetBIOS | ||
TCP 139 | Служба сеансов NetBIOS | ||
TCP/UDP 389 | LDAP | ||
TCP 443 | HTTP поверх SSl/TLS | ||
TCP/UDP 445 | Microsoft SMB/CIFS | ||
TCP/UDP 464 | Kerberos kpasswd | ||
UDP 500 | IKE (Internet Key Exchange) (согласно протоколу IPSec) | ||
TCP 593 | HTTP RPC Endpoint mapper | ||
TCP 636 | LDAP поверх SSLДLS | ||
TCP 3268 | Глобальный каталог службы активных каталогов | ||
TCP 3269 | Глобальный каталог службы активных каталогов поверх SSL | ||
TCP 3389 | Терминальный сервер Windows |
Контрмеры: отключение служб и блокировка портов
Наилучший способ предотвращения всевозможных атак — это блокировка доступа к этим службам как на уровне сети, так и на уровне отдельных компьютеров.
Внешние устройства контроля доступа к сети (переключатели, маршрутизаторы, брандмауэры и т.д.) нужно сконфигурировать таким образом, чтобы пресечь любые попытки доступа извне ко всем указанным портам, (Обычно это делается следующим образом. Отключаются все протоколы для всех доменов, а затем подключаются только некоторые службы для избранных доменов.) При этом, конечно, необходимо помнить об очевидных исключениях: порт 80 или 443 нужно оставить для работы Web-серверов. Ни один из этих портов не должен быть доступен за пределами сети, и лишь некоторые могут предоставляться для использования проверенными пользователями внутренних подсетей. Особенно это касается контроллера домена. На это есть две причины.
He забудьте прочитать раздел " Отключение служб NetBIOS/SMB в Windows 2000" ниже в этой главе.
Имеет смысл также защитить порты, находящиеся в состоянии ожидания запросов, отдельных компьютеров. Такая "защита в глубину" значительно затрудняет возможность сетевых атак. Классический совет в этой связи сводится к завершению работы всех ненужных служб с помощью программы services.msc и их отключению. Особое внимание следует уделить котроллерам доменов под управлением Windows 2000: когда контроллеру домена делегируются права сервера (Server) или расширенного сервера (Advanced Server) с помощью команды dcpromo.exe, на нем автоматически устанавливаются служба активного каталога, DNS и сервер DHCP, а также открываются соответствующие порты. Контроллеры доменов — это важнейшие компоненты сети, поэтому они требуют особого обращения. Большинство приложений, файловые службы и службы печати лучше устанавливать на других компьютерах. Стремление к минимуму — первый принцип безопасности.
Чтобы ограничить доступ к портам отдельных компьютеров, можно использовать проверенные временем фильтры для протокола TCP/IP. Доступ к этим параметрам можно получить через вкладку Options диалогового окна, открываемого с помощью команды Network and Dial-up Connections>Properties>lnternet Protocol (TCP/IP) Properties>Advanced. Однако здесь сохранились старые недостатки. Фильтры протокола TCP/IP применяются сразу ко всем адаптерам. Их установка приведет к невозможности загрузки данных, инициированной даже легитимными соединениями, и сделает невозможным обычный просмотр Web-страниц в броузере системы. Кроме того, для корректного вступления в силу внесенных изменений требуется перегрузить систему.
Проведенное авторами тестирование Windows 2000 показало, что установка фильтров TCP/IP не блокирует эхо-пакетов ICMP (протокол 1), даже если отключить все протоколы IP, кроме 6 (TCP) и 17 (UDP).
Фильтры IPSec
Для установки фильтров на порты отдельных компьютеров лучше использовать фильтры протокола IPSec. Эти фильтры явились побочным результатом новой реализации протокола IPSec для Windows 2000 и были с успехом использованы командами разработчиков сетей Openhack и windows2000test.com. Фильтры IPSec обрабатывают пакеты в стеке сети и просто-напросто выбрасывают те из них, которые не удовлетворяют характеристикам фильтра. В отличие от фильтров TCP/IP фильтры IPSec можно применять к отдельным интерфейсам. Кроме того, они блокируют запросы ICMP (однако они не настолько "тонки", чтобы блокировать отдельные подтипы запросов ICMP, скажем, эхо, отклики на эхо-запросы, временные метки и т.д.). Для вступления в силу фильтров IPSec перезагрузка не требуется (хотя изменение параметров фильтров может привести к разрыву существующих соединений IPSec). Такие фильтры обеспечивают решение проблемы для сервера и неприменимы в качестве средства обеспечения функциональности брандмауэра для рабочих станций, поскольку подобно фильтрам TCP/IP они будут блокировать загрузку информации, инициированную даже допустимыми соединениями (если не будут открыты все порты с более высокими номерами).
Фильтры IPSec можно создать с помощью аплета Administrative Tools^Local Security Policy (secpol .msc). Щелкните правой кнопкой на элементе IPSec Policies On Local Machine в левой панели окна, а затем выберите из контекстного меню команду Manage IP Filter Lists And Filter Actions.
Для управления фильтрами IPSec автор книги предпочитает использовать утилиту командной строки ipsecpol.exe. Ее можно применять при создании сценариев, а, кроме того, пользоваться ею гораздо проще, чем утилитой управления политикой IPSec с графическим интерфейсом. Утилиту ipsecpol.exe можно найти по адресу http:/www.microsoft.com/technet/security/tools.asp среди средств конфигурирования безопасности Windows 2000 Internet Server. Следующие команды утилиты ipsecpol. ехе позволяют оставить открытым на данном компьютере только порт 80.
ipsecpol \\имя_компыотера -w REG -p "Web" -о
ipsecpol \\имя_компьютера -х -w REG -p "Web"-r
"BlockAll" -n BLOCK -f 0+* ipsecpol
\\имл_комльютера -x -w REG -p "Web" -r
"OkHTTP" -n PASS -f 0:80+*::TCP
Две последние команды создают политику IPSec под названием Web, включающую два правила фильтрации. Первое из них, BlockAll, блокирует все протоколы поступающих и исходящих сообщений для данного компьютера и всех других компьютеров, а второе, OkHTTP, разрешает трафик через порт 80 данного и всех остальных компьютеров. Если нужно разрешить использование утилиты ping, или других программ, работающих на базе протокола ICMP (чего мы настоятельно не рекомендуем делать без особой необходимости), то в политику Web можно включить такое правило.
ipsecpol \\имя_компыотера -х -w REG -p "Web" -r "OkICMP" -n PASS -f 0+*::ICMP
В этом примере политика устанавливается для всех адресов, однако ее можно легко модифицировать на случай одного IP-адреса с помощью ключа -f (табл. 6.2) и направить действие этого правила на один интерфейс. Если система сконфигурирована с помощью этого примера, то при сканировании портов будет виден только порт 80. После отключения политики все порты снова станут доступными.
Описание всех аргументов, использованных в примере, приводится в табл. 6.2 (для получения полной информации о возможностях утилиты ipsecpol запустите команду ipsecpol -?).
Таблица 6.2. Параметры утилиты ipsecpol, используемые для фильтрации трафика через компьютеры под управлением Windows 2000
Параметр |
Описание |
-w REG |
Переводит утилиту ipsecpol в статический режим (static mode), при котором выполняется запись политики в указанное местоположение (в отличие от используемого по умолчанию динамического режима, который действует только во время функционирования службы Policy Agent). Параметр REG определяет, что политика будет записана в системный реестр и подходит для отдельно стоящих Web-серверов (другой параметр, DS, позволяет записывать политику в каталог) |
-P |
Задает произвольное имя (например, web) для данной политики. Если уже существует политика с таким именем, то данное правило добавляется к ней. Например, в третьей строке к политике Web добавляется правило ОШТТР |
-r |
Задает произвольное имя для правила. Если политика уже включает правило с таким именем, то новое правило его заменит |
-n |
В статическом режиме может принимать одно из трех значений: BLOCK, PASS и IN PASS. Конкретные значения параметра описываются ниже |
BLOCK |
Исключает остальные значения параметра -п и создает фильтры блокировки. Эта команда аналогична выбору переключателя Block в программе управления политикой IPSec с графическим интерфейсом |
PASS |
Исключает остальные значения параметра -п и создает фильтры, обеспечивающие передачу данных через порты. Эта команда аналогична выбору переключателя Permit в программе управления политикой IPSec с графическим интерфейсом |
-f |
Задает список, состоящий из одного или нескольких IP-фильтров. Правила фильтрации задаются в следующем формате, получившем название спецификации фильтра (filterspec): А . B . C . D/ маска: порт=А .B.C. D/ маска : порт:Ipprotocol где в левой части равенства всегда задается адрес источника, а в правой — адрес получателя. Если знак = заменить на символ +, то будут созданы два зеркальных (mirrored) фильтра, по одному в каждом направлении. Маску и номер порта задавать необязательно. Если они не указаны, то в качестве маски подсети используется 255. 255. 255. 255, а в качестве номера порта — любой порт. Комбинацию А . в . C . D/ маска можно заменить следующими символами: 0 задает адрес локальной системы * обозначает произвольный адрес имя ONS (заметим, что множественное разрешение игнорируется). Тип IP-протокола (например, ICMP) задавать необязательно. Если он не указан, то подразумевается любой IP-протокол. Чтобы задать конкретный IP-протокол, перед его названием необходимо точно указать номер порта или символ : : |
-x |
Необязательный параметр, активизирующий политику в случае ее записи в системный реестр локальной машины (он использовался в предыдущем примере при определении первого правила. По каким-то причинам этот параметр работает только при создании первого фильтра политики) |
-у |
Необязательный параметр, отключающий политику в случае ее записи в системный реестр локальной машины |
-o |
Необязательный параметр, удаляющий политику, имя которой задано параметром -р. (Заметим, что при этом удаляются все аспекты указанной политики. Его не следует использовать, если другие политики ссылаются на объекты данной политики) |
Следует отметить, что фильтры IPSec не блокируют порт 500 (UDP) или, на контроллерах домена Win 2000, порт 88 (TCP/UDP), используемые для аутентификации IPSec (порт 88 применяется протоколом Kerberos, a 500 — для обмена ключами IKE (Internet Key Exchange)). Сервисный пакет Service Pack 1 включает новый параметр реестра, позволяющий закрыть порты Kerberos путем отмены привилегий для драйвера IPSec:
HKLM\SYSTEM\CurrentControlSet\
Services\IPSEC\NoDefaultExempt
Type: DWORD
Max: 1
Min: 0
Default: 0
Трафик IKE всегда был привилегированным, и параметры системного реестра на него не влияли. Если же этот параметр реестра принимает значение 1, то все "льготы" для протоколов Kerberos и RSVP отменяются по умолчанию.
Автор высказывает благодарность Майклу Ховарду (Michael Howard) из группы обеспечения безопасности Windows 2000 за помощь в изучении команды ipsecpol и нового параметра системного реестра.
Поскольку утилита ipsecpol использует синтаксис командной строки, с ней нужно обращаться очень осторожно. В рассмотренном выше примере предполагается, что список фильтров обрабатывается сверху вниз. Простое изменение порядка следования записей в списке может привести к неправильной работе фильтров. Кроме того, утилита не позволяет задать диапазон портов для источника или назначения. Так что несмотря на значительные улучшения, обеспечиваемые фильтрами IPSec по сравнению с фильтрами TCP/IP, с ними нужно обращаться очень аккуратно. Иначе желание блокировать порты так и останется лишь желанием. Отметим еще несколько особенностей, выявленных процессе интенсивного тестирования утилиты ipsecpol.