В статье «Web-сервер на замке», опубликованной в предыдущем номере журнала, было рассказано о том, как важно отключить ненужные службы, чтобы закрыть соответствующие порты, которые могут стать мишенью для взломщика. Но как защитить порты, связанные со службами, необходимыми Web-серверу? Я рекомендую разделить открытые порты Web-сервера на две категории: общедоступные порты и порты, к которым обращаются лишь компьютеры, контролируемые администратором. Например, обычным пользователям, как правило, нужен доступ к портам 80 (HTTP) и 443 (HTTP over Secure Sockets Layer, HTTPS). Чтобы избежать атак через общедоступные порты, необходимо защитить приложение, размещенное на сервере, и операционную систему.
Однако на сервере обычно есть и другие открытые порты, которые обеспечивают выполнение таких действий, как управление содержимым Web-сервера, администрирование и обновление информации, поступающей из баз данных компании или ее партнеров. Например, если администрировать Web-сервер IIS с удаленного компьютера через браузер, то доступ к сайту Administration Web Site сервера IIS следует предоставить как можно меньшему количеству компьютеров. При работе с Windows 2000 Server Terminal Services доступ к порту 3389 также будет предоставлен ограниченному числу рабочих станций. Если на Web-сервере активизирован ftp-сервер для управления содержимым или обмена файлами с базой данных, то такой же узкий круг компьютеров получит доступ к портам 20 и 21. Рекомендуется также защитить службы telnet (порт 23) и Remote Registry (порт 135).
Частные порты представляют собой уязвимые точки входа на Web-сервер; кроме того, регулярно обновлять службы, связанные с этими портами, с помощью программных заплат и пакетов исправлений не так просто. Лучше воспользоваться функциями IP Security (IPSec) Windows 2000. Можно создать политику IPSec, в рамках которой любой компьютер будет подключаться к частным портам только через шифрованное соединение IPSec с аутентификацией.
Как действует политика IPSec
Надежные методы аутентификации, применяемые в политике IPSec, позволяют ограничить круг компьютеров, которые могут установить соединение с портом. Кроме того, IPSec шифрует все последующие операции связи и проверяет целостность данных. Эти действия IPSec на работу служб и клиентских приложений, использующих порт, не влияют. В то же время такие службы, как Terminal Services, фактически получают дополнительную защиту, даже если администратор ошибся, настраивая параметры безопасности Terminal Services, или взломщик нашел уязвимое место в конкретной версии Terminal Services. Сервер защищен даже от атак DoS, направленных против Terminal Services, и любой другой частной службы, защищенной с помощью IPSec.
Уровень защиты сервера повышается, так как IPSec не всякому компьютеру позволяет подключиться к соответствующему порту. Чтобы подключиться к защищенному с помощью IPSec порту, компьютер должен быть признан доверенным с использованием одного из трех методов аутентификации: Kerberos, заранее переданного (preshared) секретного ключа или метода на базе сертификатов. В отсутствие IPSec соединению сервера с посторонними компьютерами можно помешать лишь с помощью фильтра по IP-адресу источника. Процедура фильтрации источника в случае подмены не поможет, в отличие от фильтрации IPSec (подмена, или спуфинг, заключается в том, что взломщик посылает пакеты, в которых адрес источника заменяется на фальшивый, в результате чего целевой компьютер полагает, что установлена связь с доверенной машиной). Помимо аутентификации каждого пакета, IPSec проверяет целостность данных, обнаруживая и отвергая измененные пакеты, и предотвращает захват сеанса.
Для защиты частных портов с использованием IPSec необходимо выполнить единственное условие — компьютеры, которые обращаются к этому порту, должны поддерживать IPSec. Соединение IPSec проще организовать между компьютерами Windows 2000 и XP. При написании данной статьи я исходил из того, что к частным портам Web-сервера обращаются компьютеры Windows 2000. Для связи с Web-сервером их необходимо дополнить политиками IPSec (уровень безопасности и аутентификации клиента должен быть согласован с сервером).
Активизация политики IPSec
Для каждого компьютера Windows 2000 можно назначить (активизировать) одну политику IPSec. Политика представляет собой набор правил, как видно из экземпляра политики (см. Рисунок 1). По правилу фильтруются пакеты, отвечающие заданному критерию, а затем над пакетом выполняется одно из трех действий: блокировка, разрешение или согласование мер безопасности. Три основных компонента правила — список IP-фильтров, действия фильтров и методы аутентификации.
В списке указаны фильтры, состоящие из комбинации протоколов (например, TCP, UDP), IP-адресов источника и приемника, и номера портов — похоже на брандмауэр, который фильтрует указанные элементы. После того как пакет поступает в список фильтров, Windows 2000 переходит ко второй части правила и применяет фильтр. Администратор может указать, следует ли пропустить пакет, блокировать его или согласовать (negotiate) безопасное соединение IPSec. Согласованное соединение IPSec должно находиться в режиме Authentication Header (AH) или Encapsulating Security Payload (ESP).
В режиме AH выполняются аутентификация и проверка целостности каждого пакета. В режиме ESP шифруется все содержимое пакета, за исключением адреса назначения.
Третья часть правила содержит методы аутентификации. Чтобы разрешить или блокировать действия, метод аутентификации указывать не нужно.
Но если в правиле предусмотрено согласование мер безопасности, то необходимо активизировать хотя бы один из трех методов аутентификации (если активизировано более одного метода аутентификации, то два компьютера сравнивают свои методы, пока не будет найден общий). Существуют следующие методы: Kerberos, заранее переданный (preshared) секретный ключ и аутентификация на базе сертификатов.
В отличие от таблиц маршрутизаторов и брандмауэров, последовательность правил в политике или фильтров в списке значения не имеет. Можно указать блокирующее или согласующее правило с широким списком фильтров, затем открыть порты с помощью разрешающего правила, список фильтров которого содержит только общедоступные порты. Windows 2000 автоматически применяет к каждому пакету соответствующее правило.
Защита частных портов
Самый простой способ защитить частные порты Web-сервера — создать общее правило, которое требует согласования мер безопасности для всех соединений Web-сервера с компьютерами с любыми адресами. Затем следует создать специальное правило, которое разрешает соединения с общедоступными портами, такими, как 80 и 443, без использования IPSec (см. Рисунок 2). Для общего правила, требующего согласования мер безопасности, следует выбрать режим AH или ESP.
Если нужно добиться, чтобы к порту обращались только доверенные компьютеры, но чтение данных в пакетах посторонними лицами не представляет опасности, можно использовать режим AH. Некоторые приложения, такие, как Terminal Services, уже шифруют пересылаемые ими данные частично или полностью. ESP превосходно обеспечивает конфиденциальность (в режиме ESP шифруются даже номера портов). Кстати, в ходе проведенного мною тестирования выяснилось, что IPSec почти не влияет на производительность. Для пересылки файла размером не менее 2 Гбайт без IPSec потребовалось около 45 мин. При использовании IPSec в режиме ESP пересылка файла заняла всего на 3 мин больше.
Благодаря гибкости правил IPSec, взломщик не получит доступа к Web-серверу через частные порты, используемые для администрирования или обновления сервера. При реализации описанного подхода (создание общего правила с защитой всех портов с помощью IPSec) нельзя забывать об исключении, разрешающем неограниченный доступ к таким портам, как 80 и 443. В противном случае Web-сервер для широкого круга пользователей будет недоступен.
Я описал общие принципы ограничения доступа к частным портам Web-сервера, но каким образом IPSec определяет, что сервер связан с доверенным компьютером? Администратору предстоит выбрать метод аутентификации.
В политике IPSec проще всего определить метод Kerberos, так как при этом не возникает необходимости в дополнительном обмене ключами или запросах сертификатов. Но Kerberos не подходит для компьютеров, не входящих в состав доверенных доменов, поэтому выбор сводится к заранее переданному секретному ключу и аутентификации на базе сертификатов.
В следующей статье я расскажу о достоинствах и недостатках каждого метода аутентификации для Web-серверов. На примере тестового Web-сервера я покажу, как использовать защиту IPSec.
РЭНДИ ФРАНКЛИН СМИТ — редактор Windows & .NET Magazine и президент компании Monterey Technology Group, которая занимается обучением и консалтингом в области защиты Windows NT. Связаться с ним можно по адресу: rsmith@montereytechgroup.com.