На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Модель работы сервера I1S

Некоторые читатели могут задать вопрос: если весь программный код в системах семейст­ва Windows NT запускается в контексте той или иной учетной записи (об этом речь шла в гла­ве 2, "Архитектура системы безопасности Windows Server 2003"), то как сервер (IS обрабаты­вает запросы от анонимных пользователей, которые работают на удаленных системах (кто из нас не проходил аутентификации Windows при запросе Web-страницы)?
Вот простой ответ. IIS-процесс (inetinfo.exe) запускается от имени учетной записи LocalSystem и использует заимствование прав для обработки запросов. Если рассмотреть во­прос с технической точки зрения, то сервер IIS выполняет аутентификацию клиента, отпра­вившего запрос, и создает для него маркер доступа. При наличии анонимного доступа с по­мощью IIS, сервер IIS создает маркер доступа Windows для учетной записи анонимного Inter­net-пользователя (как правило, это учетная запись хиБЯ_и&гя_хоста).
Почему же Microsoft решила запускать свой Web-сервер от имени учетной записи Local-System? Ведь большинство коммерческих серверов не запускаются от имени наиболее приви­легированного пользователя, согласно принципу предоставления наименьших привилегий. Это очень хороший вопрос и в Windows Server 2003 компания Microsoft наконец предприняла определенные шаги для устранения этой ошибки.
Учетная запись IUSE используется для обработки запросов к статической информации, на­пример к HTML-страницам. А как выполняются запросы к ISAPI-приложениям и другим ре­сурсам с динамическим содержимым? До версии I IS 4 интерфейс ISAPI запускался как процесс
inetinfo от имени учетной записи LocalSystcm. Таким образом любая ошибка в реализации ISAPI приводила к возможности компрометации системы или ее нестабильной работе. Для ре­шения этой проблемы в сервере IIS появилась возможность использования внешнего процесса (Out-Of-Process, OOP), а в IIS 5 эта концепция была расширена. При использовании OOP рас­ширения библиотек ISAPI запускаются под управлением объекта WAM (Web Application Man­ager-диспетчер Web-приложений), который может быть запущен внутри процесса inetinfo или самостоятельно. Выполнение вне процесса приводит к небольшому снижению производи­тельности, но защищает процесс US от сбоев в приложениях JSAPJ, а потому это — более удач­ный метод для выполнения приложений ISAPI. Хотя вся эта путаница была затеяна для повы­шения производительности, это отразилось на системе безопасности.
т При запуске в качестве внутреннего процесса интерфейс ISAP1 выполняется внутри процесса US (inetinfo. exe) от имени учетной записи LocalSystem.
* При работе вне процесса интерфейс ISAPI запускается как отдельный процесс (dllhost.exe) от имени пользователя ШАМ_имя_комльютера, который по умолча­нию является членом ограниченной в правах группы Guests.
Изменение этого параметра настройки осущестиляется с помощью программы IIS Admin в свойствах Web-узла (Properties) на вкладке Home Directory (Домашний каталог) в пункте Ap­plication Protection (Защита приложений). В сервере IIS5 по умолчанию этот параметр уста­новлен со значением Medium (Средняя), а это говорит о том, что библиотеки ISAPI выполня­ются вне процесса (при установке значения Low (Низкая) библиотеки будут выполняться внут­ри процесса). Модель этой архитектуры представлена на 1.
Учетная запись LocalSystem
'Ж.
1 ■
Inetinfo.exe
Учетная запись IWAM

Ядро
Фипьтры и
расширения
ISAPJ _
Пользоватепь
Dllhost.exe
I Ряпимприир
Dllhost.exe
Dllhost.exe
Расширение ISAP;
PI
Winsock
Ядро
Puc. 10.1. До появления сервера IIS 6 код Web-приложений миг запускаться или внут­ри процесса IIS с правами LocalSystem. Шли как внешний прпцесс с правами IWAM
Изоляция рабочего процесса в 113 6
В версии IIS 6 модель выполнения процессов претерпела коренные изменения. Вместо монолитной архитектуры, которая зависит от процесса inetinfo, IIS 6 основана на НТТР-лрограмме, ожидающей запросов в режиме ядра, которая запускается на вершине стека TCP/IP (HTTP.SYS) и рабочих процессов (worker process) пользовательского режима, которые
выполняют входящие запросы и запускают хранящиеся на хосте фильтры и расширения ISAPI, ASP-сценарии или компоненты СОМ. Эта архитектура была реализована в целях по­вышения производительности и увеличения эффективности обработки запросов, но имеет серьезное значение и для системы безопасности, что мы и обсудим далее. Новая модель изо­ляции рабочих процессов I IS 6 показана на 2.
Сетевая служба

Пул прияоженийУ по умолчанию \
Пользователь
Ядро
Запрос п Запрос 2 Запрос 1
HTTP.SYS
В новой модели изоляции рабочих процессов IIS 6 запросы обраба­тываются от имени непривилегированного пользователя (по умолчанию Network Service)
Пулы приложений
Пулы приложений (application pool) применяются для управления набором Web-сайтов и приложений. Каждый пул приложения соответствует одной очереди запросов в HTTP. SYS и одному или более рабочим Windows-процессам, обрабатывающим эти запросы. В IIS 6 пул приложений по умолчанию (Default Application Pool) запускается (по умолчанию) от имени учетной записи Network Service, которой предоставлены довольно низкие привилегии. Как было рассказано в главе 2, "Архитектура системы безопасности Windows Server 2003", учетная запись Network Service наделена наиболее ограниченными правами пользователя, которые позволяют запускать Web-приложения. Это означает, что по умолчанию все рабочие процес­сы на сервере I1S 6 запускаются с правами низкопривилегированной учетной записи, и если хакеру удастся скомпрометировать один из этих процессов, он не получит серьезных приви­легий (сравните с архитектурой серверов IIS 4 и 5, когда компрометация на уровне процесса с высокой вероятностью могла привести ко взлому сервера IIS и поучению привилегий учет­ной записи SYSTEM, поскольку процесс inetinfo запускался от имени этой учетной запи­си). Можно настроить рабочие процессы на запуск от имени любой учетной записи, которая входит в группу IIS_WPG (с правами других учетных записей рабочие процессы просто не бу­дут запускаться). Группа I1S_WPG специально предназначена для объединения учетных за­писей, которым предоставлены минимальные привилегии для запуска Web-приложений. На 3 показано, как задать имя учетной записи, которая будет запускать рабочие процессы
для пула приложений IIS 6.
Еще одно преимущество новой архитектуры состоит в том, что пулы приложений отделя­ются друг от друга границами процессов в Windows Server 2003. Это позволяет, например, провайдеру услуг Internet запускать Web-сайты и приложения одного клиента в одном пуле приложений, а Web-сайты второго клиента — в другом. Причем провайдер сможет быть уве­рен в том, что компрометация одного клиента не повлияет на работу других.
Безусловно, есть и несколько исключений. Хотя служба World Wide Web Publishing Service (W3SVC) больше не запускается внутри процесса inetinfo (заменена HTTP.SYS), остались другие US-службы: протокол FTP, протокол NNTP (Network News Transfer Protocol — сетевой протокол передачи новостей) и протокол SMTP. В любом случае, эти службы не должны за­пускаться одновременно с Web-сервером, но будьте внимательны — если реализовать их на отдельном сервере, они будут, как и раньше, запускаться с правами привилегированной учет­ной записи SYSTEM.
Кроме того, сервер IIS6.0 поддерживает обратную совместимость и способен работать в режиме изоляции MS 5.0. Это обеспечивает возможность запуска приложений, которые не способны работать в режиме изоляции рабочих процессов 1IS6. Среди таких приложений могут оказаться приложения-фильтры, читающие необработанные данные, или приложения, полагающиеся на выполнение в inetinf q . exe или DLLHost. exe. Использование режима изоляции IIS 5.0 сильно напоминает работу с самим 1IS 5.0, поскольку в нем присутствуют те же основные процессы пользовательского режима, В частности, применяются те же методы изоляции приложений (низкий, средний и высокий), a inetinfo. exe — по-прежнему глав­ный процесс, через который проходят все запросы (несмотря на схожесть, режим изоляции IIS 5.0 выигрывает от быстродействия HTTP.SYS режима ядра в работе с очередями и при кэшировании). Более того, при выборе низкого уровня изоляции приложений, приложения ISAPI могут запускаться внутри процесса inetinfo от имени учетной записи LocalSystem. Очевидно, что мы рекомендуем избегать использования режима изоляции IIS 5.0, как и всех других режимов обратной совместимости, в целях повышения безопасности.
Несмотря на все очевидные преимущества по сравнению с IIS 5, режим изоляции рабочих процессов еще не проверен временем. Входящие запросы все еще обрабатываются с помо­щью высокопривилегированного кода (HTTP. SYS в ядре), и можно не сомневаться, что хакеры
обратят на этот код не менее пристальное внимание, какое они уделили в свое время процес­су inetinfo (в этой главе не раз будут продемонстрированы возможности компрометации архитектуры выполнения процессов в серверах ITS 4 и 5). Как специалисты в области зашиты информации, мы с осторожностью относимся ко всему новому, и поэтому подождем, пока [IS 6 реально докажет свои преимущества.
ASP.NET
Прежде чем завершить тему процессов IIS, рассмотрим еше одно из основных нововведе­ний сервера I1S 6. В системе Windows Server 2003 интегрировано следующее поколение техно­логии ASP — ASP.NET (хотя эта технология и отключена по умолчанию). ASP.NET представ­ляет собой основу для построения серверных Web-приложений для платформы разработки приложений Microsoft .NET Framework, о которой мы рассказали в главе 2, "Архитектура системы безопасности Windows Server 2003".
В IIS 6 технология ASP.NET интегрирована в архитектуру изоляции рабочего процесса IIS 6 и приложения ASP.NET наследует контекст от рабочего процесса I IS (который запуска­ется с правами учетной записи Network Service для пула приложений).
Технология ASP.NET также доступна В дополнительном пакете .NET Framework для Win­dows 2000. В Windows 2000 ASP.NET реализована в виде расширения ISAPI (aspnet_isapi .dll), которое запускается внутри процесса inetinfo (с правами LocalSystem). Расширение ISAPI aspnet_isapi . dll передает запросы для приложений .NET Framework (включая файлы с рас­ширениями . aspx, . asmx, . rem и . soap) отдельному рабочему процессу aspnet_wp. exe, ко­торый запускается в контексте настраиваемой пользователем учетной записи. Как можно догадать­ся, безопаснее всего запускать aspnet_wp. exe от имени пользователя, которому предоставлены минимальные привилегии (настройка выполняется с помощью конфигурационных файлов ASP.NET). Компания Microsoft предусмотрела запуск приложений ASP.NET с помощью локаль­ной учетной записи ASPNET, устанавливаемой вместе с платформой .NET Framework. Этой учет­ной записи предоставляется минимальный набор привилегий, и по умолчанию в ее контексте за­пускается aspnet_wp. exe. Хотя мы рекомендуем не менять пользователя ASPNET, можно вы­брать и другую учетную запись, от имени которой запускается aspnet__wp. exe, для чего в файле machine. config потребуется отредактировать элемент <processModel>. Ниже показано зна­чение элемента <processModel>, настроенного на использование учетной записи по умолчанию: ASPNET.
<processModel userName="machine" password="AutoGenerate" />
mUidliU Пароль для учетной записи ASPNET генерируется автоматически при уста­новке платформы .NET Framework и обычно хранится в локальной базе SAM. Кроме того, этот пароль хранится в кэше LSA Secrets на локальном компью­тере, поэтому процесс aspnet_wp может запускаться автоматически. _
Другие изменения в IIS 6
Кроме преобразования модели выполнения процессов, компания Microsoft внесла и дру­гие изменения в сервер IIS 6, которые могут оказать влияние на систему безопасности.
Основное изменение коснулось недоступности по умолчанию самого сервера IIS. Это сделано в духе нового лозунга Microsoft: "Безопасность по проекту, по умолчанию и по реали­зации". Сервер IIS 6 по умолчанию отключен в системе Windows Server 2003.
Более того, при его активации, например, с помощью мастера Manage Your Server Wizard сервер IIS устанавливается в заблокированное состояние, при котором он обслуживает за­просы только статического содержимого (т.е. отключены все расширения ISAPI, включая
и те, которые предоставляют страницы ASP и ASP.NET). К тому же, если у нас уже установ­лен Windows 2000 Server с IIS 5.0, то при его обновлении до Windows Server 2003, IIS 6.0 будет устанавливаться только в качестве простого Web-сервера статического содержимого, пока ад­министратор не установит и не запустит инструмент IIS Lockdown Tool или не настроит па­раметр реестра RetainW3SVCStatus. Мы выражаем благодарность Microsoft за внимание к вопросу безопасности и заботу о пользователях, которым придется немного подумать перед запуском полнофункционального Web-с ер вера.
В IIS 6 были внесены многие другие менее значительные изменения, которые касаются вопросов защиты. О них подробнее можно прочесть в разделе. "Дополнительная литература и ссылки" в конце этой главы.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика