KMS сервер активации Microsoft Windows и Office на базе Debian GNU/Linux 11 (Bullseye)

KMS activation server for Microsoft Windows and Office based on Debian GNU Linux 11 Bullseye and vlmcsd serviceВ данной заметке мы рассмотрим вариант развёртывания альтернативного KMS сервера, позволяющего активировать современные версии ОС Microsoft Windows/Windows Server и пакета Microsoft Office. Этот вариант будет реализован на базе ОС Debian GNU/Linux 11 (Bullseye) и исходных кодов открытого проекта vlmcsd. Для своей работы KMS сервер vlmcsd не требует наличия купленных KMS-ключей или какой-либо онлайн-активации в Microsoft. Вопрос "лицензионной чистоты" данного варианта в текущих реалиях оставим на обсуждение любителям философии и "кинутым" заказчикам известного вендора. При этом, следует понимать, что изложенный далее материал публикуется исключительно в образовательных целях и не позиционируется, как руководство к действию. Этот материал опирается на публично открытые программные продукты и не преследует цели нарушения норм действующего законодательства и правил лицензирования ПО. И вообще, мы за всё хорошее и против всего плохого. Поехали…

Сборка пакета vlmcsd под Debian

Предполагается, что под роль KMS у нас уже подготовлен выделенный сервер и на него установлена чистая ОС Debian 11. Произведём сборку deb-пакета из исходных кодов проекта vlmcsd.

Устанавливаем служебные пакеты, требуемые для сборки deb-пакета vlmcsd из его исходных кодов:

# apt install git build-essential debhelper -y

Создаём каталог для сборки пакета и переходим в него:

# mkdir ~/vlmcsd-build
# cd ~/vlmcsd-build

Клонируем с GitHub исходный код проекта и переходим в его подкаталог:

# git clone https://github.com/Wind4/vlmcsd
# cd ~/vlmcsd-build/vlmcsd

Дополнительно подкачиваем в каталог с клонированными исходниками (файлы попадут в подкаталог /debian) готовые файлы дебианизации, которые нам потребуются для сборки пакета в Debian:

# git submodule update --init debian

Выполняем сборку deb-пакета:

# dpkg-buildpackage -rfakeroot -D -us -uc

Дожидаемся окончания сборки пакета, переходим на каталог уровнем выше и проверяем наличие пакета.

# cd ~/vlmcsd-build
# ls -la ~/vlmcsd-build

Build deb package for KMS server vlmcsd in Debian 11

Устанавливаем готовый deb-пакет в систему:

# dpkg -i ./vlmcsd_1113_amd64.deb

 

Настройка службы vlmcsd

В процессе установки будет запущена служба vlmcsd.service. Проверим её состояние:

# systemctl status vlmcsd.service

KMS server vlmcsd service state in Debian Linux 11

Как видим, служба запущена с использованием конфигурационного файла /etc/vlmcsd/vlmcsd.ini.
В этом файле, при необходимости, мы можем изменить параметры работы службы. Например, мы можем отключить TCP прослушиватель для IPv6, раскомментировав строку, явно указывающую на использование IPv4:

...
Listen = 0.0.0.0:1688
...

KMS server vlmcsd service configuration file

Также можем включить логирование службы (изменим путь к лог-файлу по умолчанию, добавив в /var/log/ отдельный подкаталог vlmcsd):

...
LogFile = /var/log/vlmcsd/vlmcsd.log
...

После правок файла конфигурации создаём подкаталог под логи и перезапускаем службу:

# mkdir /var/log/vlmcsd
# systemctl restart vlmcsd.service

Убедимся, что в системе поднялся TCP-прослушиватель службы на порту 1688:

# ss -lnptu | grep 1688

KMS server vlmcsd TCP 1688 Listener in Debian Linux 11

Не забываем открыть соответствующий порт в правилах nftables/iptables.

Теперь давайте посмотрим, как у нас обстоят дела с логированием работы службы. Если попытаемся проверить лог-файл, обозначенный в конфигурации vlmcsd.ini, то можем обнаружить его отсутствие в файловой системе. Это связано в тем, что гражданин, который готовил файлы дебаиназиации, не очень заморачивался по поводу культуры запуска службы.

Давайте заглянем в свойства службы, как юнита systemd:

# systemctl cat vlmcsd

vlmcsd systemd service default settings in Debian Linux 11

Как увидим, запуск службы настроен в контексте пользователя "nobody".

Исправим эту ситуацию, создав нового выделенного пользователя, например "vlmcsd", и написав правила переопределения (override) для юнита systemd.

Создаём нового системного пользователя:

# useradd -s /usr/sbin/nologin -r -M vlmcsd

Отдельный подкаталог под логи мы уже создали ранее, поэтому теперь назначаем на данный подкаталог права для выделенного пользователя и его группы:

# chown -R vlmcsd:vlmcsd /var/log/vlmcsd

 

Теперь создадим override для службы vlmcsd.service таким образом, чтобы служба запускалась в контексте пользователя "vlmcsd" с одноимённой группой.

# systemctl edit vlmcsd.service

Добавляем в override-файл следующий фрагмент:

[Service]
User=vlmcsd
Group=vlmcsd

Systemd unit vlmcsd.service override

Сохраняем override-файл, закрываем его и перезапускаем конфигурацию служб:

# systemctl daemon-reload
# systemctl restart vlmcsd.service
# systemctl cat vlmcsd.service

KMS server vlmcsd systemd unit settings in Debian Linux 11

Проверяем: состояние службы; наличие TCP прослушивателя; пользователя, от которого запущена служба; успешность записи в лог файл

# systemctl status vlmcsd.service
# ss -lnptu | grep 1688
# ps -aux | grep vlmcsd
# cat /var/log/vlmcsd/vlmcsd.log

KMS server vlmcsd in Debian Linux 11

Как видим, служба запущена с учётом ранее настроенного нами переопределения с процессом от имени выделенного пользователя "vlmcsd", в системе доступен TCP-прослушиватель на порту 1688, а логи службы успешно записываются в указанный нами файл. На этом настройку KMS сервера можем считать законченной и переходить к его тестированию.

 

Проверка работы KMS

Для возможности активации с развёрнутого KMS сервера, ОС Windows должна быть настроена в качестве KMS клиента путём предварительной установки в систему публично доступного ключа Generic Volume License Key (GVLK).

Найти ключи GVLK для клиентских и серверных ОС Windows можно по адресу: "Key Management Services (KMS) client activation and product keys for Windows Server and Windows"

Попробуем провести активацию современной серверной ОС Windows Server 2022 21H2 Standard. Для этого на только что установленной и ещё неактивированной ОС с правами администратора выполним команды установки GVLK ключа, указания адреса KMS сервера и последующей активации:

slmgr.vbs -ipk VDYBN-27WPP-V4HQT-9VMD4-VMK7H
slmgr.vbs -skms <IP или FQDN хоста KMS>
slmgr.vbs -ato

При выполнении последней команды мы должны получить сообщение об успешной активации Windows.

Activated Windows Server 2022 with KMS server vlmcsd on Linux

Проверить текущий статус активации можем командой:

slmgr.vbs -dlv

Activated Windows Server 2022 with KMS server vlmcsd on Linux

Аналогичным образом проверяем возможность активации клиенткой ОС Windows 10 21H2 Pro, используя GVLK "W269N-WFGWX-YVC9B-4J6C9-T83GX".

Activated Windows 10 21H2 with KMS server vlmcsd on Linux

 

Теперь нам остаётся проверить возможность активации пакета Microsoft Office.

Официальные ключи GVLK для Office 2016/2019/2021 можно найти по ссылке: "GVLKs for KMS and Active Directory-based activation of Office, Project, and Visio - Deploy Office".

Например, для активации 32-битной версии Office 2016 Pro на Windows 10 можно выполнить команды вида:

cd /d "C:\Program Files (x86)\Microsoft Office\Office16"
cscript ospp.vbs /sethst:<IP или FQDN хоста KMS>
cscript ospp.vbs /act

Activated Microsoft Office 2016 with KMS server vlmcsd on Linux

Как видим, офисный пакет успешно активировался. Проверить текущий статус активации Office можно командой:

cscript ospp.vbs /dstatusall

 

Другие варианты развертывания сервера KMS

Если описанный выше вариант самостоятельного развёртывания сервера KMS на базе исходных кодов vlmcsd кажется вам чем-то сложным и у вас полностью атрофировано чувство страха перед "чёрными ящиками" в виде готовых виртуальных аплайнсов из непроверенных источников, то можете обратить внимание на проект Иранских коллег с ресурса "DiGiBoY".

"DiGiBOX" – это миниатюрный образ готовой виртуальной машины VMWare, собранный на базе 32-битной версии Alpine Linux, требующий 1 процессорного ядра и 128 MB ОЗУ.

Digibox

При запуске аплайнса достаточно указать базовые параметры IP с помощью TUI в команде digibox-config и уже через минуту эта система будет готова принимать и обрабатывать запросы от KMS-клиентов из локальной сети. Аплайнс не требует доступа в интернет и может быть размещён в изолированной сетевой "песочнице", из которой достаточно иметь открытый порт TCP 1688 для работы сервера KMS.

Всего комментариев: 18 Комментировать

  1. Денис /

    Добрый день. Спасибо за статью. В тексте небольшая опечатка:

    Убедимся, что в системе поднялся TCP-прослушиватель службы на порту 1668:

    # ss -lnptu | grep 1688

    1. Алексей Максимов / Автор записи

      Здравствуйте, Денис. Спасибо, исправил.

  2. Alex /

    Добрый день. office 2021 я так понял нет поддержки ?

    1. Алексей Максимов / Автор записи

      Здравствуйте, Alex.
      Однозначно сказать не могу, сам это не проверял.
      В конфигурационном файле vlmcsd.ini фигурируют упоминания о версиях Office 2010/2013/2016/2019, к тому же релиз текущей версии vlmcsd был в 2020 году.
      Однако, на github есть issue по этому поводу, и там отрицательного ответа на этот вопрос нет. https://github.com/Wind4/vlmcsd/issues/71

    2. Антон /

      LICENSE NAME: Office 21, Office21ProPlus2021VL_KMS_Client_AE edition
      LICENSE DESCRIPTION: Office 21, VOLUME_KMSCLIENT channel
      LICENSE STATUS: ---LICENSED---
      REMAINING GRACE: 180 days (259200 minute(s) before expiring)

      Активирует. Поддержка есть.

  3. Владислав /

    Всё развернул) Как узнать адрес своего KMS cервера?

    1. Александр /

      выполнить: ip -a на сервере

  4. Александр /

    Добрый день. Активация на 180 дней. Дальше нужно будет вручную ту же процедуру активации выполнять?

    1. Алексей Максимов / Автор записи

      Здравствуйте, Александр.
      По окончании указанного периода KMS-клиент должен будет автоматически обновить свою активацию на KMS-сервере.

  5. johndoe153 /

    всем кому лень разворачивать своё, вот публичный сервер: kms.srv.crsoo.com

    1. Алексей Максимов / Автор записи

      Так себе - затея "отстукивать" на сторонний, непонятно кому принадлежащий, KMS сервер.

  6. Иван /

    Добрый день. Как автоматизировать процесс активации? Поднял я сервер, ручками всё работает. Как сделать так, что бы компы в домене сами получали активацюию?
    Зачем нужно поднимать целый сервер, если условно говоря всё это можно проделать через kms активатор?...

    1. Алексей Максимов / Автор записи

      Здравствуйте, Иван.
      Варианты настройки клиентов есть разные. Можно, например, настроить групповые политики, чтобы направить всех доменных клиентов на определённый сервер: https://blog.it-kb.ru/2013/09/27/setting-up-key-management-service-kms-server-settings-via-group-policy-preferences-gpp-on-clients/

      1. Иван /

        К сожалению не работает.

        Я видимо чего-то не понимаю.
        В сам сервер\службу vlmcsd нужно прописывать какие либо ключи?
        Если подразумевается автоматическая активация а не ручная, как у Вас в статье, откуда сервер vlmcsd будет брать ключи?...

        В любом случае, прописал в реестр параметры сервера, которые в общем и так уже были (кроме порта), перезагрузился, чуда не произошло.

        Хотя повторю, ручками всё работает и активирует.
        Пк в домене по команде:
        nslookup -type=srv _vlmcs._tcp.mygroup.ru
        видят данный kms сервер...
        Тестовая ОС версии VL, все брэндмауэры и антивирусы отключены....

        1. Алексей Максимов / Автор записи

          То, что здесь описано - работает. Служба vlmcsd является по сути эмулятором KMS-сервера и в неё уже вшито всё, что нужно. Никаких ключей никуда вводить не нужно.

          1. Иван /

            Ясно, спасибо.

  7. Руслан Шамсудинов /

    Добрый день. В ссылке указано как прописать пути до КМС сервера. Касательно подтягивания клиентских GVLK ключей вопрос открытый. Клиент не подтягивает их автоматически. Это как-то можно автоматизировать, как и прописание путей в регистре?

  8. Denis /

    Отличная статья, все легко настраивается, локальный KMS функционирует.

Добавить комментарий