Установка и защита серверов IIS (часть 3)

Опубликовано: 14 Апреля, 2023

Большинство параметров конфигурации для IIS находятся в хранилище или репозитории данных, называемом метабазой [1]. Метабаза организована в виде иерархической структуры, отражающей структуру установки IIS. С физической точки зрения это один файл: -C:WINNTsystem32inetsrvMetaBase.bin, однако его нельзя редактировать в текущей версии IIS (начиная с версии IIS 6 метабаза будет представлять собой XML). editable» для обработки с помощью обычного текстового редактора). В IIS 5.0 для доступа к определенному содержимому метабазы можно использовать только объект базы администрирования IIS, который является COM-объектом, позволяющим вашему приложению управлять конфигурацией IIS. Это не объект ProgId (поэтому его нельзя использовать, например, с «CreateObject» команды VBScript), он также не позволяет вам вызывать объекты через IDispatch — поэтому он недоступен для языков сценариев. Вместо этого можно использовать объект IIS Admin Base для модификации (с использованием языков программирования, например, в приложениях C++) метабазы. Платформа SDK предоставляет обширную информацию об использовании объекта базы администрирования IIS для разработки приложений для управления IIS [2] [3]. Кроме того, IISAdmin предоставляет интерфейс с именем ADSI для администрирования объектов IIS Admin. И, как и каждый провайдер ADSI, он доступен на уровне языков сценариев — это простой пример VBScript, в котором используется объект IIS Admin:
Установить IIsObject = GetObject("IIS://localhost/w3svc")
Wscript.Echo IIsObject.Get("КаталогФайлаЖурнала")
Установить IIsObject = Ничего
Точно так же платформа SDK также предоставляет подробную информацию об этом объекте [4]. Существует сценарий манипулирования метабазой, гораздо более сложный, чем описанный выше. Он работает под Windows 2000 и требует установки IIS. Файл называется ADSUTIL.VBS и обычно находится в каталоге C:InetpubAdminScripts. Если вы хотите быстро выполнить этот сценарий через WSCRIPT.EXE и не хотите вводить какие-либо параметры, вам будет предложено в подходящем окне установить CSCRIPT.EXE в качестве интерпретатора сценария по умолчанию. Синтаксис ADSUTIL.VBS очень прост: он принимает имя операции в качестве первого параметра, выбранное местоположение в метабазе в качестве второго параметра и значение в качестве третьего параметра для зацикливания всего набора. Дополнительные сведения об утилите ADSUTIL.VBS см. на сайте Microsoft [5] [6] и в руководстве по серверу IIS, расположенном в каталоге C:WINNTHelpiisHelpiishtmadminsamples. В том же каталоге содержится информация о других сценариях администрирования, включенных в каталог C:InetpubAdminScripts. Похожая на ADSUTIL.VBS, но гораздо более мощная утилита для работы с метабазой, — файловая утилита MDUTIL.EXE, которая находится на компакт-диске Windows 2000 в виде заархивированного файла. Чтобы установить его на свой компьютер, просто вставьте установочный компакт-диск Windows 2000 и выполните простую команду:
развернуть -rd:i386mdutil.ex_ c:winnt

Изображение 26159

Хотя и MDUTIL, и ADSUTIL используют схожий синтаксис, некоторые элементы метабазы могут называться по-разному — это связано с тем, что MDUTIL использует объект IIS Admin Base (который, как мы помним, не поддерживается скриптами, включая ADSUTIL) [7].
MetaEdit — очень удобный инструмент для редактирования метабазы. Для его установки сначала загрузите установочный файл MTAEDT22.EXE, доступный на сайте базы знаний Microsoft [8]. После установки вы попадете в окно лицензии. Нажмите Да, если вы согласны с условиями лицензионного соглашения и через некоторое время вы увидите прикладную программу приложения Visual Basic. Нет важной опции для выбора, поэтому вы можете просто нажать Enter до конца. Однако я предлагаю, если во время установки вам будет предложено перезаписать более новую DLL более старой, нажмите Enter. По завершении установки вы увидите сообщение «Установка MetaEdit 2.2 (x86) успешно завершена». Установленная вами программа находится в меню «Администрирование» (инструменты администрирования). Как только вы запустите программу, вы увидите знакомое окно, похожее на проводник, разделенное на две панели. Левая панель содержит два верхних ключа метабазы:

  • LM (Local Machine) — здесь хранятся данные конфигурации, связанные со всеми элементами IIS.
  • Схема — содержит так называемую «схему», то есть ссылки, необходимые IISAdmin для управления информацией, содержащейся в ключе LM. Вы не должны изменять эту информацию!
    Вы можете расширять ключи метабазы по своему желанию и читать содержащуюся в них информацию, но соблюдайте осторожность при непосредственном редактировании метабазы. Неправильная настройка свойств в метабазе может вызвать проблемы, в том числе неустранимый сбой IIS.

Изображение 26160

Хорошо видна иерархическая организация метабазы; кроме того, большинство ключей метабазы содержат свойство «KeyType», имеющее особое значение. Список свойств, отображаемый на правой панели, имеет следующие столбцы:

  • Id это числовой идентификатор свойства; это уникальный атрибут свойства
  • Name — имя свойства; некоторым свойствам может не быть присвоено имя
  • Атрибуты означают атрибуты свойств; «Inh» — самый важный атрибут для статьи, поскольку это преимущество делает наследование значений ключей интуитивно понятным (подключи метабазы, встроенные в ключи со свойствами, наследуют эти свойства).
  • UT (тип пользователя) указывает приложение свойства, например, сервер, файлы, WAM (менеджер веб-приложений), приложения ASP.
  • DT (тип данных) относится к типу данных (например, числовой, символьный, список символов, двоичные данные и т. д.)
  • Data, то есть сами данные.

Среди свойств есть одно, называемое «Тип ключа» (ID = 1002), которое является именем объекта (класса) метабазы, определяющего этот ключ. Подобно значению, используемому в объектно-ориентированных языках программирования, класс означает набор атрибутов, собранных в определенном месте и описывающих один конкретный объект. Каждый ключ в метабазе является экземпляром объекта, в то время как наследование свойств является следствием встраивания подключа. Дополнительные сведения об иерархической структуре и классах метабазы см. в SDK Platform [9] [10]. Здесь большую озабоченность вызывают следующие классы: IIsWebService, IIisWebServer и IIsWebVirtualDir. Также стоит упомянуть классы IIsWebDirectory и IIsWebFile, которые включают свойства отдельного веб-каталога и файла соответственно. Ниже перечислены избранные атрибуты класса, важные с точки зрения настройки и настройки IIS.

Дисаблесокетпулинг

Версия IIS 5.0 была улучшена за счет добавления так называемого пула соединений, метода, используемого для совместного использования TCP- сокетов между многими сайтами [11][12]. Это усовершенствование позволяет IIS использовать все доступные IP-адреса, в том числе те, для которых не настроен ни один сайт. Поэтому один сервер Windows 2000 не может одновременно запускать другие службы IIS, использующие одни и те же номера портов, даже если предназначенные для них IP-адреса не используются IIS. Примером может служить Apache, работающий с IIS на том же сервере. Поскольку IIS с включенным пулом соединений занимает порт 80 на всех IP-адресах (а не только на тех, которые используются для сайтов на основе IP-адресов), сервер Apache будет вынужден использовать другой номер порта — ради удобства пользователя. По умолчанию пул сокетов включен, но его можно отключить, установив DisableSocketPooling соответствующим образом в классах IIsWebService и IIisWebServer. Чтобы отключить пул соединений для всех сайтов на основе IIS, в каталоге c:inetpubadminscriptscscript выполните команду:
adsutil.vbs установить w3svc/disablesocketpooling true
а затем перезапустите службу W3SVC. После этого вы можете запустить Apache на том же сервере Windows 2000, на котором работает IIS, сделав порт 80 доступным для обеих этих служб (разумеется, под разными IP-адресами).

Метод входа в систему, область

Если вы собираетесь ограничить доступ к своим веб-страницам с помощью паролей и учетных записей Windows, вы должны учитывать риск, который вы можете создать, отправляя пароли в открытом виде через Интернет. Однако, если вы настроили службу HTTPS, вы можете в конечном итоге применить к ней «базовую аутентификацию». Но есть пара уловов: -

  • Права пользователя на вход на веб-сервер. Когда пользователь подключается к веб-сайту, используя обычную проверку подлинности, IIS получает имя пользователя и пароль, вызывает Windows API LogonUser и олицетворяет пользователя. Эта функция обеспечивает режим аутентификации – интерактивный вход по умолчанию (LOGON32_LOGON_INTERACTIVE). Предоставление пользователям этой привилегии позволяет им регистрироваться на веб-сервере, если у них есть физический доступ к серверу (то есть также к сайтам ASP) или к другому удаленному компьютеру. Например, доступ к SQL с использованием собственной учетной записи пользователя, а не дополнительной, которая может быть встроена в сценарий ASP. Однако это вызывает проблему — пользователи должны иметь привилегии «Локальный вход в систему» на сервере, что не обязательно является самым безопасным вариантом. Другой вариант — разрешить пользователю доступ к серверу под аутентификацией в вызове LogonUser — через атрибут LogonMethod.
  • пароль пройти. Веб-браузер предлагает пользователю ввести свои учетные данные, и после того, как сайт аутентифицирует пользователя, учетные данные используются для каждой последующей страницы веб-сайта. Это нормальное решение, позволяющее избавить пользователя от необходимости обновлять аутентификацию каждый раз, когда он хочет просмотреть сайт. Если аутентификация пользователя защищена зашифрованным соединением, проблем нет. Однако, если пользователь выходит за пределы безопасной зоны или на данном сайте есть незащищенные элементы (что определенно не рекомендуется), браузер продолжит отправлять имя пользователя и пароль в открытом виде через Интернет! Это серьезная угроза безопасности. Решение состоит в том, чтобы установить так называемое свойство «область» для различных частей веб-сайта в целях безопасности. По умолчанию область, используемая в IIS, является именем домена, но вы можете установить свою собственную область для любого ключа метабазы по желанию. Область будет действительна для ключа (узла) соответствующего каталога и для всех элементов (каталогов и файлов) ключа.

Изображение 26161

Обе настройки можно изменить по мере необходимости с помощью файла ADSUTIL.VBS. С LogonMethod доступны следующие параметры (ниже приведены понятия входа в систему, указанные для LogonUser):

  • 0 (настройка по умолчанию) IIS будет использовать интерактивную аутентификацию, поэтому пользователь должен иметь привилегии «Локальный вход» на веб-сервере, с помощью которых IIS может делать запросы на защищенные ресурсы на удаленном компьютере от имени пользователя (например, ASP-страницы или именованные компоненты);
  • 1 – аутентификация для приложения (LOGON32_LOGON_BATCH). Этот тип входа предназначен для пакетных серверов, где процессы могут выполняться от имени пользователя без его прямого вмешательства. Это означает отсутствие необходимости иметь разрешения «Локальный вход в систему», а скорее право «Вход в систему как пакетное задание» (используемое, например, приложениями COM+). Как и в настройках по умолчанию, приложения могут использовать учетные данные кэша.
  • 2 – сетевая аутентификация (LOGON32_LOGON_NETWORK); этот вход предназначен для пользователей, имеющих право входа на серверы через сеть (Доступ к этому компьютеру из сети). Эта функция не кэширует учетные данные для этого типа входа в систему.
  • 3 — сетевая аутентификация с сохранением учетных данных (LOGON32_LOGON_NETWORK_CLEARTEXT) — этот тип входа не включен в документ SDK Platform [13]. От пользователя требуется только привилегия сетевой аутентификации (см. 2 выше), но серверу разрешено принимать учетные данные пользователя, вызывать LogonUser, проверять, может ли пользователь получить доступ к веб-серверу по сети и по-прежнему взаимодействовать с другими серверами ( аналогично ситуациям 0 и 1).

На рисунке 5 показаны примерные параметры аутентификации при входе в систему. Дополнительные сведения об аутентификации на веб-сайте см. в базе знаний [14].

Изображение 26163

UNCAПроход через аутентификацию

Если вы решили переместить содержимое своего веб-сайта на другой сервер, щелкните вкладку Домашний каталог, а затем выберите Общий ресурс, расположенный на другом компьютере, и определите учетную запись IIS, которая будет использоваться для сетевых подключений. В качестве альтернативы вы можете включить параметр UNCAuthenticationPassthrough в метабазе (дополнительные сведения см. в базе знаний Microsoft [15]. Если этот параметр включен, учетная запись, используемая в «Подключиться как», будет заменена учетными данными фактического пользователя, вошедшего в систему. Обычная проверка подлинности с этим параметром позволяет администраторам управлять списками управления доступом для определенных пользователей, но этот процесс увеличивает нагрузку на веб-сервер.
Эта статья завершает серию из трех частей «Установка и защита серверов IIS».

здесь

Бронек Козицки последние восемь лет работал сетевым администратором. Пять лет были посвящены системам на базе Windows NT. Он занимается администрированием баз данных SQL Server, приложений, вопросами сетевой безопасности и эффективностью интернет-серверов. Он пишет серверные решения (в основном расширения служб IIS — SMTP и W3SVC) на языке C++. Помимо программирования, он занимается обучением расширенному использованию C++, таким как: методология, идиомы, стили программирования и современные особенности языка. Он был членом редакционной коллегии журнала WinSecurity Magazine, где он был главным редактором страниц базы знаний Microsoft. В настоящее время он работает сетевым администратором в Getin SP SA, компании, предоставляющей интернет-услуги. Свободное время он проводит с женой, гуляя или в кино, или читая книги, предпочтительно научную фантастику. Он чемпион мира по приготовлению горячего шоколада с пеной или капучино.

Библиография:

[1] http://support.microsoft.com/default.aspx?scid=kb;en-us;240941
[2] http://msdn.microsoft.com/library/en-us/iisref/html/psdk/asp/abgu16b8.asp
[3] http://msdn.microsoft.com/library/en-us/iisref/html/psdk/asp/abre6bol.asp
[4] http://msdn.microsoft.com/library/en-us/iisref/html/psdk/asp/aint7e9l.asp
[5] http://windows.microsoft.com/windows2000/en/server/iis/htm/adminsamples/adsutil.htm
[6] http://msdn.microsoft.com/library/en-us/dniis/html/Autoadm.asp
[7] http://support.microsoft.com/default.aspx?scid=kb;en-us;240225
[8] http://support.microsoft.com/default.aspx?scid=kb;en-us;232068
[9] http://msdn.microsoft.com/library/en-us/iisref/html/psdk/asp/aogu6pkp.asp
[10] http://msdn.microsoft.com/library/en-us/iisref/html/psdk/asp/aore94th.asp
[11] http://support.microsoft.com/default.aspx?scid=kb;en-us;238131
[12] http://msdn.microsoft.com/library/en-us/iisref/html/psdk/asp/adsi1k1f.asp
[13] http://msdn.microsoft.com/library/en-us/iisref/html/psdk/asp/apro1zms.asp
[14] http://support.microsoft.com/default.aspx?scid=kb;en-us;207671
[15] http://support.microsoft.com/default.aspx?scid=kb;en-us;214806
[16] http://support.microsoft.com/default.aspx?scid=kb;en-us;286401