Установка операционной системы вместе с пакетом обновлений и исправлениями
Важная часть любого процесса установки Windows — завершающая настройка с целью обеспечения максимальной безопасности системы. Ключ к безопасности Windows 2000 — инсталляция обновлений и исправлений, изменение параметров реестра и внесение поправок в незащищенную стандартную конфигурацию. Но не во всех организациях заботятся о безопасности систем Windows 2000. В результате тысячи подключенных к Internet компьютеров остаются беззащитны перед атаками хакеров и проникновением различного рода «червей».
Необходим способ настройки защиты Windows 2000 сразу в процессе установки, который позволил бы безо всякого риска подключать систему к Internet. Прежде всего, требуется установить пакеты обновлений и исправлений. К сожалению, Microsoft не предоставляет достаточно надежных инструментов для установки. Тем не менее с помощью условно бесплатных программ независимых поставщиков после небольших экспериментов можно развернуть Windows 2000 в защищенной конфигурации.
Предупреждение: эта статья рассчитана на достаточно опытных администраторов. Процесс установки операционной системы вместе с исправлениями сложен и утомителен, и Microsoft может неожиданно внести изменения, которые сделают приведенные здесь рекомендации бесполезными. Но если администратору предстоит обеспечить развертывание и защиту многих серверов Windows 2000, усилия, несомненно, не будут потрачены впустую.
Дистрибутивные файлы
Существует много способов специальной установки Windows 2000, и один из них, не поддерживаемый Microsoft, состоит в подготовке загрузочного компакт-диска с файлами установки. Этот полезный метод может послужить фундаментом для других методов инсталляции. Первый шаг — организовать главный дистрибутивный каталог Windows 2000. Он послужит источником для загрузочного компакт-диска, и его целостность должна быть обеспечена.
Все содержимое компакт-диска с Windows 2000 следует скопировать в каталог на жестком диске. Не все файлы, содержащиеся на компакт-диске, нужны для установки, поэтому неиспользуемые файлы и каталоги можно удалить, освобождая пространство для других утилит и исправлений. Можно смело удалить следующие каталоги и файлы: ootdisk, setuptxt, support, valueadd, read1st.txt и readme.doc. Если данный комплект файлов будет использоваться только для «чистых» установок, а не для модернизации операционной системы, рекомендуется удалить следующие каталоги и файлы: i386win9xmig, i386win9xupg, i386winntupg, autorun.inf и setup.exe. Каталог можно дополнить файлами других часто устанавливаемых приложений. Например, я создал каталог software для установки основных программ и каталог updates — для обновления имеющихся продуктов.
Интеграция пакета обновлений
Одно из преимуществ интеграции пакета обновлений с дистрибутивом операционной системы заключается в том, что пакет становится базовым набором файлов для дистрибутива. Система будет всегда использовать однажды добавленные или удаленные компоненты вместо оригинальных файлов. Другое преимущество интегрированных пакетов обновлений — создание системой защищенного хранилища Protected Store с усиленным шифрованием. В бюллетене Microsoft Security Bulletin MS00-032 (Patch and Tool Available for «Protected Store Key Length» Vulnerability) рассказано об ошибке в алгоритме шифрования Protected Store. Некоторые администраторы упускают из виду, что после установки исправлений (или последнего пакета обновлений) необходимо запустить программу keymigrt.exe для каждой учетной записи системы. Но если пакет обновлений интегрирован с операционной системой, то это излишне, поскольку максимальный уровень шифрования уже реализован. Недостаток метода в том, что интегрированный пакет обновлений невозможно удалить. Поэтому перед установкой операционной системы вместе с пакетом исправлений необходимо убедиться в корректности его работы на данной машине.
Чтобы интегрировать новейший пакет обновлений (например, Service Pack 3, SP3) с дистрибутивом, следует запустить пакет с параметром -s:
w2ksp3.exe -s:
Пакет обновлений позволяет контролировать процесс модернизации и оповещает о его завершении. Если пространства на жестком диске достаточно, то можно сделать резервную копию дистрибутива. На данном этапе процесс становится довольно сложным, и незначительная ошибка может привести к срыву установки.
Интегрированная установка исправлений
Хотя в Microsoft такой подход не одобряют, исправления можно устанавливать одновременно с операционной системой. Обычно перед добавлением или повторной установкой компонента Windows (например, Microsoft IIS), необходимо повторно установить все исправления, чтобы располагать самыми последними версиями файлов. Это требование объясняется тем, что при добавлении компонента процедура установки обращается к текстовым файлам .inf, чтобы выяснить, где находятся файлы, необходимые для устанавливаемого компонента. В процессе установки пакета обновлений .inf-файлы обновляются и указывают на обновленные файлы из пакета. Но изменения, связанные с исправлениями, не отражаются в .inf-файлах; в процессе интегрированной установки исправлений файлы следует изменить вручную.
Сначала необходимо создать временный каталог и загрузить в него все исправления Windows 2000, выпущенные после выхода последнего пакета обновлений. Затем нужно переименовать исправления, присвоив им имена в формате 8.3, необходимом для процедуры установки. Для этого нужно открыть командную строку, перейти в только что созданный временный каталог и ввести команду
ren *.* ???????.*
В результате такое имя, как q318593_w2k_sp3_x86_en.exe, превращается в q318593.exe.
Затем нужно извлечь содержимое каждого исправления. Для этого необходимо ввести команду
for %i in (q*.exe) do start /wait %i /x
После нажатия на клавишу Enter на экране появится запись, подобная следующей:
C:> start /wait q318593.exe /x
Кроме того, откроется диалоговое окно, в котором нужно указать папку для хранения извлеченных файлов. Имя каталогу можно дать в соответствии с номером исправления (например, q318593). Щелкнув OK, следует повторить эту операцию для каждого исправления.
Затем нужно приступить к копированию файлов исправлений в дистрибутивный каталог. Но сначала следует перейти в каталог i386 главного дистрибутива и ввести с клавиатуры
expand -r *.in_
чтобы развернуть все сжатые .inf-файлы для последующего изменения. Затем, начиная с самого раннего исправления, следует поочередно скопировать все файлы в каталог i386 главного дистрибутива. Копировать следует все файлы, за исключением hotfix.exe, hotfix.inf, spmsg.dll, spuninst.exe и svcpack1.dll. Каталоги symbols и update можно игнорировать (с одним исключением, о котором говорится ниже).
Переместив файл, следует удалить соответствующую сжатую версию, находящуюся в каталоге i386. Например, если перемещен файл kernel32.exe, то нужно удалить файл kernel32.ex_. В результате в процессе установки будет использована несжатая версия файла. Если в каталоге i386 нет сжатой версии файла, то требуется определить местонахождение оригинального файла, и для этого используются расширенные файлы .inf. С помощью Windows Explorer или команды Find, запускаемой из командной строки, следует отыскать все .inf-файлы для имени только что скопированного файла. Предположим, что файл admin.dll скопирован в каталог i386, но попытка найти соответствующий файл admin.dl_ в каталоге i386 закончилась неудачей. Необходимо отыскать все .inf-файлы, содержащие строку admin.dll. Вероятно, будет обнаружено несколько совпадений, но нужно найти файл, в котором есть строки, похожие на следующую:
admin.dll=1,,20540
Эта строка, определенная в разделе [SourceDisksFiles] файла fp40ext.inf, указывает, где найти названный файл. Первое число (в данном случае 1) — идентификатор диска Disk ID, который определен в разделе [SourceDisksNames] в том же .inf-файле. Как правило, Disk ID указывает на компакт-диск Windows 2000, каталог установки пакета обновлений или сжатый файл в формате .cab. Открыв файл fp40ext.inf, можно увидеть строки, показанные на Экране 1.
Экран 1. Содержимое файла Fp40ext.inf. |
В указанной строке видно, что Disk ID указывает на файл fp40ext.cab в каталоге, содержащем файл cdromsp2.tst. Но поскольку admin.dll был только что скопирован в каталог i386, необходимо изменить местонахождение источника.
Во-первых, следует указать новое местонахождение в разделе [SourceDisksNames] (он может носить имя SourceDisksNames.x86). В раздел нужно добавить следующую строку:
0=%SERVICEPACK_NAME%,»»,0,%34000%
Данный .inf-файл содержит лишь один Disk ID, указывающий на файл fp40ext.cab. Может оказаться, что в файле уже есть строка, похожая на указанную. В этом случае нужно продолжить работу с имеющейся строкой.
Затем следует отыскать и изменить строку admin.dll. Строка
admin.dll=1,,20540
примет следующий вид:
admin.dll=0,,20540
Теперь процедура установки будет искать admin.dll на основном дистрибутиве (Disk ID 0), а не в оригинальном .cab-файле (Disk ID 1). Эту операцию необходимо повторить для каждого файла, которому не соответствует сжатый файл в каталоге i386. Задача уже выглядит утомительной, но дальнейшие этапы еще сложнее.
Некоторые файлы, к которым обращаются службы IIS, SMTP и Network News Transfer Protocol (NNTP), имеют в .cab-файлах разные имена. Обычно имя файла представляет собой вариант оригинального имени. Например, файл mailmsg.dll назван smtp_mailmsg.dll в файле ims.cab и nntp_mailmsg.dll — в файле ins.cab. Поиск во всех .inf-файлах не даст ссылок на mailmsg.dll, но будут обнаружены smtp_mailmsg.dll и nntp_mailmsg.dll. Жестких правил переименования файлов не существует, но мне не приходилось встречать имен, которые не были бы очевидным вариантом оригинала.
Чтобы решить проблему некорректных имен файлов, следует сделать копию файла (например, mailmsg.dll) в каталоге i386 и дать файлу имя, под которым он упоминается в .inf-файлах. Затем нужно отыскать имя файла в разделе [SourceDisksFiles] и, следуя приведенным выше инструкциям, изменить Disk ID так, чтобы он указывал на новое местоположение.
Существует тип файлов, для которых нет соответствующих файлов ни в каталоге i386, ни в одном из .cab-файлов — это файлы-каталоги (catalog file). Файлы-каталоги с расширением .cat используются для хранения сигнатур драйверов. В файле sp3.cat содержатся контрольные суммы файлов драйверов, прошедших тестирование в лаборатории Windows Hardware Quality Labs (WHQL). Когда драйвер обновляется, компания должна распространить новый файл-каталог.
При внимательном рассмотрении обнаруживается, что каждое исправление содержит обновленный файл sp3.cat (или sp4.cat для SP4 и т. д.) или файл-каталог с именем на основе Q-номера исправления. При копировании файлов sp3.cat необходимо найти последнюю версию файла и скопировать ее в каталог i386. Файлы-каталоги — кумулятивные, поэтому желательно выбрать самый новый и большой файл. Следует скопировать новейший файл-каталог в папку i386 и записать имена скопированных файлов, так как они пригодятся позднее.
Затем нужно создать каталог $OEM$$$hotfixes в корне дистрибутивного каталога. В этот каталог необходимо скопировать программы установки исправлений. Он находится на одном уровне с каталогом i386, а не является его подкаталогом, как указывается в некоторых документах Microsoft. В процессе установки система копирует подкаталог hotfixes в папку \%systemroot% (например, C:winnthotfixes). После того как все исправления будут скопированы в этот каталог, нужно загрузить файл qchain.exe из адреса http://support.microsoft.com/ default.aspx?scid=kb;en-us;q296861 и поместить его в этот же каталог.
Экран 2. Пример данных в файле svcpack.inf. |
Последний шаг — изменить файл svcpack.inf таким образом, чтобы он содержал данные, подобные приведенным на Экране 2. В разделе [ProductCatalogsToInstall] следует изменить список, чтобы отразить файлы-каталоги, ранее скопированные в папку i386.
Если все описанные операции были выполнены корректно, то главный дистрибутив будет содержать все файлы пакета обновлений и последующие исправления. Если в будущем придется добавлять или повторно устанавливать системные компоненты, то можно быть уверенным, что система будет всегда использовать самые новые файлы.
Построение Winnt.sif
Я всегда рекомендую разворачивать Windows 2000 в минимальной конфигурации и добавлять компоненты и службы по мере необходимости. Например, при организации Web-сервера следует начать с базовой установки, а затем дополнить ее Web-службами IIS. Убедившись в работоспособности и защищенности IIS, можно поочередно добавлять вспомогательные службы, такие, как SMTP и DNS.
Приступая к новой установке, необходимо использовать специальный файл с именем winnt.sif. Он такой же, как файлы unattend.txt, но имеет одно важное отличие — если назвать файл winnt.sif и поместить в каталог i386, то он будет выполняться автоматически, даже если установка проводится с загрузочного компакт-диска. Чтобы отключить максимум ненужных компонентов Windows 2000, следует обратиться к разделу [Components] файла winnt.sif. Для того чтобы отключить все компоненты, нужно изменить раздел [Components] файла winnt.sif, как показано на Экране 3.
Экран 3. Пример раздела [Components] файла winnt.sif. |
До этого копировались только файлы исправлений; в элементы реестра не было внесено никаких изменений. Поэтому некоторые инструменты (например, Windows Update) не обнаружат установленных исправлений. Чтобы убедиться, что все исправления успешно установлены, а не просто скопированы, необходимо запускать их в процессе установки. Лучший способ сделать это — использовать раздел [GuiRunOnce] файла winnt.sif. Все команды нужно запускать из каталога \%systemroot%hotfixes, в который были скопированы исправления. На Экране 4 показан пример раздела [GuiRunOnce]. Следует обратить внимание на завершающий вызов qchain.exe, который удостоверяет, что при установке нескольких исправлений (независимо от последовательности) были скопированы все необходимые файлы.
Экран 4. Пример раздела [GuiRunOnce] файла winnt.sif. |
В файл winnt.sif можно внести любые изменения, а затем его следует сохранить в каталоге комплекта установки i386.
Подготовка загрузочного компакт-диска
Существуют различные документированные методы создания загрузочных компакт-дисков для Windows 2000. Но, на мой взгляд, проще всего воспользоваться условно бесплатной программой WinISO компании WinISO Computing. С помощью WinISO можно извлечь образ компакт-диска и сохранить его в файле-образе с расширением ISO. Открыв WinISO, нужно выбрать пункт Make ISO from CDROM из меню Actions. Готовый образ ISO следует сохранить в файле. Затем требуется открыть файл и удалить все подкаталоги, оставив лишь файлы в корневом каталоге.
После этого необходимо добавить все каталоги из главного дистрибутива. Их можно перетащить мышью или воспользоваться кнопкой Add на панели инструментов WinISO. После того как будут добавлены все необходимые каталоги, файл образа нужно сохранить.
Большинство программ для создания компакт-диска обеспечивает запись дисков непосредственно из файла образа. Конкретные указания приведены в документации для каждой программы. Возможно, в результате настройки и тестирования придется записать несколько компакт-дисков. Ну и последний шаг — тестирование дистрибутива.
Возможно, в окончательный вариант придется внести некоторые изменения, но в конечном итоге будет получен надежный компакт-диск для установки Windows 2000.
Безусловно, столь трудоемкая процедура по плечу не каждому администратору. Но безопасная, готовая к работе в Internet сразу после установки Windows 2000 станет достойной наградой за труд.
Марк Барнетт — независимый консультант по безопасности и автор статей, связанных с безопасностью IIS. С ним можно связаться по адресу: mburnett@xato.net.