Windows 2008 Server Core: Windows без графической оболочки
Сергей «grinder» Яремчук (grinder@ua.fm, tux.in.ua)
Практически с момента появления Windows эту систему прочно связывают с графическим интерфейсом. Окна — неотъемлемая часть рабочего окружения, ядра и имиджа этой ОС. Но с выходом Win2k8 все изменилось. Теперь стало возможным установить и использовать сервер без графики.
Содержание:
- Зачем это нужно?
- Первые настройки
- Настройки окружения
- Управление ролями и компонентами
- Заключение
- Полезные команды для повседневной работы
- Боковые выносы
Если на десктопах графический интерфейс действительно упрощает работу пользователям, делая систему более дружелюбной, что весьма радует новичков, то на серверах все обстоит с точностью наоборот. Администраторы Windows вынуждены были мириться с присутствием компонентов, которые на порядок завышали системные требования к оборудованию, занимали место на системном диске, но при этом не несли какой-либо существенной пользы. Даже наоборот. Наличие лишних приложений и служб на серверных ОС, выполняющих критические задачи, увеличивало количество потенциальных уязвимостей и упрощало задачу взломщику. Между тем администратор Unix мог самостоятельно выбирать все необходимые компоненты, получая в результате полностью оптимизированную под конкретные нужды систему.
Появление в Win2k8 режима Server Core все изменило. Теперь если при установке сервера выбрать Server Core Installation, мы получим систему без графического интерфейса и с минимальным набором компонентов. Такой сервер априори будет иметь большую защищенность по сравнению с полным вариантом. И для установки сервер потребует всего 1 Гб места на харде, плюс место для повседневной эксплуатации в выбранной роли.
На сайте Microsoft вариант Server Core назван как «с ограниченным функциональным назначением». Дело в том, что на данный момент в этом режиме можно реализовать не все роли, плюс в зависимости от версии сервера некоторые роли будут иметь ограниченное количество функций. Так на сегодня в Server Core реализовано только 7 ролей:
- Службы домена Active Directory (AD)
- Службы Active Directory Lightweight Directory Services (AD LDS)
- Сервер DHCP
- Сервер DNS
- Файловый сервер (File Server)
- Сервер печати (Print Server)
- Службы потокового мультимедиа (Media Services)
Также в ограниченной функциональности доступна роль веб-сервера — Web Services (IIS). Отсутствие ASP.NET не позволит использовать динамический контент, но сценарии на ASP работать будут. Это единственный режим, реализованный в Server Core для Win2k8 Web Server. В Itanium-Based Systems вариант Server Core вообще отсутствует. Полный список доступных ролей, в зависимости от версии Win2k8, смотри в документе «Compare Server Core Installation Options», который расположен по адресу www.microsoft.com/windowsserver2008/en/us/compare-core-installation.aspx.
Кроме того, для Server Core доступен и ряд компонентов (Features) — Network Load Balancing, Windows Backup, Windows Bitlocker Drive Encryption, WINS и некоторые другие. Интересно, что список ролей в Server Core уже вызывает споры. С одной стороны слышно мнение о том, что этот список не мешает и расширить, но есть и сторонники оставить все, как есть. По их мнению, увеличение доступных ролей может испортить неплохую задумку и еще более запутает ситуацию с настройками.
Но как бы то ни было, не смотря на кажущиеся ограничения, в списке ролей охвачен основной функционал, для которого чаще всего и устанавливают Windows Server.
Установка в режиме Server Core практически не отличается от обычной установки ОС Win2k8 и не требует никаких специальных действий. Учитывая, что размеры инсталлируемой системы меньше, весь процесс занимает от силы минут 10. Ход установки был подробно рассмотрен в статье Кодовое имя «Longhorn», поэтому на нем останавливаться не буду. В самом первом окне при выборе клавиатурной раскладки следует оставить EN, так как после загрузки у тебя ничего не будет, кроме строки терминала. Активировать систему можно как во время установки (в третьем окне мастера), так и уже в рабочей системе. Если не произвести активацию, то через 14 дней большая часть функций будет недоступна. Для этого заменяем, если нужно, введенный при установке или автоматически полученный ключ:
> slmgr.vbs -ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
И активируем сервер:
> slmgr.vbs -ato
С некоторой задержкой появится окно с результатом. В случае успеха в самом низу должна появиться строка «Product Activated successfully». Чтобы узнать все параметры slmgr.vbs, используй ключ «/?».
Перед установкой следует четко определиться с необходимыми ролями и компонентами. Обновить предыдущую версию до Server Core нельзя, систему необходимо устанавливать вчистую. Нельзя и преобразовать систему до полного варианта (как и наоборот). Поэтому если в будущем понадобится некоторая функциональность, отсутствующая в Server Core, систему придется полностью переустанавливать.
После установки нажимаем <Ctrl+Alt+Del>, и видим только один значок «Other User». Первую регистрацию следует выполнять под учетной записью «Administrator» с пустым паролем, который на следующем шаге предложат сменить. Так как защита сервера зависит, в том числе и от устойчивости пароля админа, простые пароли запрещены политиками. Пароль должен содержать буквы, цифры или специальные символы. Иначе он не будет принят.
Первоначальная конфигурация задается с помощью командной строки, затем сервером можно управлять удаленно, используя подключение к серверу терминалов, консоль управления MMC или другие инструменты.
После регистрации ты увидишь строгую консоль без рюшечек-кружавчиков, непривычно, конечно, но ни этого ли мы добивались? Если одной консоли недостаточно, то просто набери «start», и ты получишь еще одну. Хотя все-таки несколько графических приложений в Server Core имеются. Например, нажав <Ctrl+Shift+Esc> или <Ctrl+Alt+Del> -> Start Task Manager, ты вызовешь привычный Диспетчер задач (Task Manager) со всеми надлежащими ему функциями.
Но в Server Core от него еще одна польза. Если по ошибке будут закрыты все окна терминалов, то открыть новое, можно выбрав в Диспетчере задач File -> New Task и в появившемся окне ввести «cmd.exe». Также набрав в консоли комманду «notepad», ты сможешь делать пометки в Блокноте.
Драйвера большинства устройств уже включены в поставку Win2k8. Если какое-то устройство не работает, то драйвер устанавливается при помощи команды pnputil:
> pnputil -i –a file.inf
И перегружаемся по запросу.
Список модулей и драйверов можно получить, введя команду «driverquery» или «sc query type= driver» (пробел перед driver обязателен).
Хотя при загрузке мы уже установили пароль администратора, но его периодически необходимо менять. Это можно сделать так:
> net user administrator *
Звездочка использована, чтобы вывод пароля не показывался на экране. Если через плечо никто не подглядывает, то можно ввести «net user administrator P@sSw0rd». Или просто нажать <Ctrl+Alt+Del> и выбрать в появишемся окне пункт «Change a password».
После установки сетевые интерфейсы настраиваются автоматически при помощи DCHP, а если такового сервера в сети не обнаруживается, то машина произвольно инициализирует имя и IP-адрес в диапазоне 169.254.x.x. Текущие настройки сети можно просмотреть, введя «ipconfig /all».
Если в сети используются статические IP-адреса, то назначить адрес компьютеру можно при помощи netsh. Эта утилита была доступна и в предыдущих версиях Windows, но теперь, в виду отсутствия графических альтернатив, ее полномочия, да и возможности шире.
Сначала посмотрим, как в системе определились сетевые интерфейсы:
> netsh interface ipv4 show interfaces
Idx Met MTU State Name
— — —— ———— ——————-
1 50 4294967295 connected Loopback Pseudo-Interface 1
2 20 1500 connected Local Area Connection
В таблице нас интересует первый столбик Idx, который указывает на номер сетевого адаптера. В моем случае это 2. Теперь задаем адрес. Формат команды такой:
netsh interface ipv4 set address name=»Idx» source=static
address=StaticIP mask=SubnetMask gateway=DefaultGateway
Для примера зададим серверу IP-адрес 192.168.1.2, адрес шлюза пусть будет 192.168.1.1. Вводим:
> netsh interface ipv4 set address name=»2″ source=static
address=192.168.1.2 mask=255.255.255.0 gateway=192.168.1.1
Настройки для IPv6 задаются аналогично. Учитывая важность службы DNS, особенно для работы в среде AD, следует обязательно указать и DNS сервер:
> netsh interface ipv4 add dnsserver name=2
address=192.168.1.158 index=1
Повторяем этот шаг для других DNS серверов, увеличивая на единицу значение index.
Теперь проверяем его работу при помощи команды ping:
> ping www.ru
Команда «hostname» после установки покажет произвольно сгенерированное имя, вроде WIN-FA8GKHJPG53. Естественно, оно нам не подходит, поэтому переименовываем:
> netdom renamecomputer WIN-FA8GKHJPG53 /NewName:CORESRV
Как видишь, при переименовании потребуется ввести старое имя, полученное при помощи «hostname». Альтернативным вариантом является использование WMI:
> wmic computersystem where name=»WIN-FA8GKHJPG53″
rename name=»WINSRV1″
После этой операции потребуется перезагрузка:
> shutdown –r –t 0
Теперь осталось присоединить компьютер к домену и добавить доменного пользователя в локальную группу администраторов:
> netdom join CORESRV /domain:TESTDOMAIN /userd:SysAdmin
/password:P@sSw0rd
> net localgroup administrators /add TESTDOMAINUser
Опять перегружаемся и приступаем к настройкам.
Некоторые настройки в Core Server производятся путем запуска команды «control», в качестве аргумента следует передать файл с расширением .cpl (Control Panel Library). Команда «dir *.cpl | more», введенная в каталоге WindowsSystem32, показала наличие всего двух таких файлов.
Некоторые сервисы зависят от точности хода часов компьютера, особенно чувствителен к этому Kerberos, используемый AD. Для настройки даты и времени следует ввести команду:
> control timedate.cpl
После чего увидишь знакомое окно.
Теперь переходим к изменению региональных установок:
> control intl.cpl
Здесь 4 вкладки, где можно установить формат времени, цифр и так далее, указать расположение, установить раскладку клавиатуры и системную локаль. Для того чтобы добавить русскую раскладку, выбираем Keyboards and Languages и, нажав кнопку Change keyboards, выбираем в списке нужную. Обрати внимание на вкладку Language Bar. Здесь можно указать расположение индикатора переключения раскладки. Еще одна кнопка «Install/Uninstall Languages» позволяет загрузить файлы для локализации меню и диалоговых окон.
В каталоге System32 находится еще один полезный скрипт — scregedit.wsf, который позволяет настроить автоматическое обновление системы, Remote Desktop, IPSec, приоритеты DNS. Все параметры запуска скрипта можно просмотреть, введя «cscript scregedit.wsf /?». Эту команду следует выполнять в каталоге System32, иначе придется указывать абсолютный путь. Например, чтобы просмотреть текущие настройки автоматического обновления, используем:
> cscript scregedit.wsf /AU /v
Value not set
По умолчанию автоматическое обновление отключено. Использовав ключи «/au /?», узнаем доступные параметры. Для активации автоматического обновления следует ввести:
> cscript scregedit.wsf /AU 4
Отключить также просто:
> cscript scregedit.wsf /AU 1
К сожалению, отсутствие GUI и каких-либо файлов настроек означает, что обновление будет производиться по принципу «все или ничего». Указать на какой-либо компонент нет никакой возможности. Вероятно, выходом из ситуации является обновление через WSUS.
Разрешить подключения по протоколу Remote Desktop Protocol (RDP) для удаленного управления сервером также просто:
> cscript scregedit.wsf /AR 0
По умолчанию Windows Firewall (WF) активен и на всех интерфейсах блокирует входящие соединения. Поэтому нам нужно разрешить RDP подключения. Для управления используем netsh с ключом ‘advfirewall’ (Advanced Firewall):
> netsh advfirewall firewall add rule name=»TS Admin»
protocol=TCP dir=in localport=3389 action=allow
Используем небезопасные подключения терминального сервиса:
> cscript scregedit.wsf /CS 0
Если вместо 0 указать 1, то для аутентификации будет задействован безопасный протокол CredSSP (Credential Security Service Provider), который кроме Win2k8 поддерживают Vista и XP SP3.
По умолчанию скринсейвер включен и активируется через 10 минут бездействия. При первых настройках, когда часто смотришь в мануал, это мешает. Чтобы его отключить, следует запустить программу regedt32 (именно без i) и установить значение ключа HKCUControlPanelDesktopScreenSaveActive в 0.
Управление ролями и компонентами
Мы выполнили базовую установку и настроили общие параметры сервера. В отличие от обычного, в режиме Server Core нет ролей и компонентов, установленных по умолчанию. Поэтому об этом необходимо позаботиться самому. Для настройки каждой применяются свои команды, это неудобно. Кроме того, нормальной документации для Server Core пока недостаточно.
Для просмотра списка доступных ролей и дополнительных компонентов, используемых программой установки Ocsetup.exe, набери следующую команду:
> oclist
Начнем с критической для работы многих сервисов и, в частности AD, роли DNS сервера.
Для установки вводим (название роли и компонента чувствительно к регистру):
> start /w ocsetup DNS-Server-Core-Role
Дополнительный ключ ‘/w’ задерживает появление приглашения командной строки до тех пор, пока выполнение команды не завершится, то есть установка не закончится. Чтобы удалить роль или компонент, просто добавь к команде ключ ‘/uninstall’. Дальнейшая настройка DNS производится удаленно при помощи консоли MMC или команды «dnscmd», все параметры которой можно узнать, введя «dnscmd /info». Добавим DNS зону с именем domain, как primary зону:
> dnscmd /zoneadd «domain.local» /Primary
/file «domain.local.dns»
Чтобы добавить запись A для узла comp1 с IP адресом 192.168.1.5 к зоне domain.local, вводим:
> dnscmd /recordadd domain.local comp1 A 192.168.1.5
Использовав ключ ‘/zoneprint’, можно просмотреть список зон, а для удаления записи вместо ‘/recordadd’ пишем ‘/recorddelete’. Также следует разрешить автоматический запуск для установленной роли:
> sc config dns start= auto
Для развертывания DCHP-сервера набираем:
> start /w ocsetup DHCPServerCore
После установки для настройки параметров его работы используем MMC на удаленной системе или локально с помощью утилиты netsh.
Аналогично устанавливаются другие роли и компоненты. Исключения составляют только 2 роли. Первую Streaming Media Services необходимо предварительно скачать с сайта Microsoft (support.microsoft.com/kb/934518, вариант для Core) и затем установить msu файл:
> start /w wusa /quiet Windows6.0-KB934518-x86-ServerCore.msu
После чего вывод oclist покажет наличие новой роли. Ставим и запускаем:
> start /w ocsetup MediaServer
> net start wmserver
Для удаленного управления Media Services рекомендуется использовать MMC консоль, которую можно скачать на этой же странице.
И вторая роль — DCPromo, которая за не имением графического интерфейса требует наличия заранее подготовленного файла ответов. Формат файла будет несколько отличаться, в зависимости от того, создается ли новый домен, или контроллер подключается к уже имеющемуся домену. Узнать все параметры файла, можно запустив «dcpromo» с ключом ‘/?’. Для создания нового домена создадим файл unattend.txt такого содержания:
[DCInstall]
# Пароль админа, иначе пустой
AdministratorPassword = password
# Первый домен
ReplicaOrNewDomain = Domain
NewDomain=Forest
DomainNetBiosName = domain
# Имя
NewDomainDNSName = domain.local
AutoConfigDNS=Yes
DNSDelegation=Yes
DNSDelegationUserName=dnsuser
DNSDelegationPassword=Passw0rd
# Перезагрузка вручную
RebootOnSuccess = No
# Пароль для режима восстановления
SafeModeAdminPassword = P@ssw0rd
Теперь выполняем:
> dcpromo /unattend:C:unattend.txt
Все, контроллер домена установлен.
Режим Server Core, появившийся в Win2k8, является действительно одним из самых ожидаемых новшеств. Администраторы с небольшим опытом могут не принять такой режим, так как операции, которые раньше производились двумя щелчками мышки, теперь требуют погружения в документацию. В результате приведение сервера в рабочее состояние может занять заметно больше времени, чем в обычном варианте. Но с другой стороны получаем более безопасную и стабильно работающую систему. Выбор за тобой.
Полезные команды для повседневной работы
В процессе эксплуатации сервера обычно приходится выполнять ряд административных задач. Приведу несколько полезных команд для повседневной работы. Например, запуск сервиса можно произвести, введя команду «sc start имя_сервиса» или «net start имя_сервиса». Для остановки используем вместо start – stop.
Чтобы убить зависшее приложение, сначала при помощи «tasklist» следует узнать его PID (уникальный идентификатор процесса), а затем ввести:
> taskkill /PID
Отсутствие графического Event Viewer еще не означает невозможность контроля событий. Для этого используем утилиту «wevtutil». Просмотреть список доступных событий, можно введя «wevtutil el». А информацию о конкретном типе события смотрим, использовав ключ ‘qe’:
> wevtutil qe Security /f:text
Ключ «/f:text» позволяет отформатировать вывод в текстовом формате (а не в XML). Очистить список событий Application можно такой командой:
> wevtutil cl Application
INFO
- Если при установке сервера выбрать Server Core Installation, мы получим систему без графического интерфейса и с минимальным набором компонентов.
- После установки сетевые интерфейсы настраиваются автоматически при помощи DCHP, а если такового сервера в сети не обнаруживается, то машина произвольно инициализирует имя и IP-адрес в диапазоне 169.254.x.x.
- На сайте Microsoft приведен интересный факт: для установки IIS понадобится ввести 923 символа.
WWW
- Полный список доступных ролей, в зависимости от версии Win2k8, смотри в документе «Compare Server Core Installation Options» на сайте Microsoft (www.microsoft.com).
- Роль Streaming Media Services доступна для закачки по адресу support.microsoft.com/kb/934518.
WARNING
- Преобразовать систему, установленную в режиме Server Core, до полного варианта нельзя (как и наоборот), в таком случае Win2k8 придется полностью переустанавливать.
Статья опубликована в августовском номере журнала «Xakep» за 2008 год.





