“Я отечественный … вы отечественные, компания отечественная…” © Отечественный Никита.
“Я отечественный … вы отечественные, компания отечественная…” © Отечественный Никита.

Компаниям приходится тратить немалую сумму, чтобы поддерживать парк оборудования в офисе. Цены на ноутбучную конфигурацию с 4 CPU, 8 Gb RAM и 256 Gb SSD стартуют от 27 тыс. рублей. Для небольшой компании с сотней сотрудников на обновление старых устройств уйдет более 2,5 млн. Конечно, здесь не учтены типы занятости: дизайнер, маркетолог, оператор, разработчик, техподдержка. Добавим к этому дополнительные мониторы, стойки к ним и гарнитуры — цена, думаю, будет превышать 10 млн. рублей. А если учесть параллельный импорт и курс рубля? Мне становится не по себе.

Решить данную проблему может инфраструктура виртуальных рабочих столов (VDI). К тому же, она еще хорошо вписывается в тренд перехода на удаленную работу.

Идея виртуализированного доступа к рабочему столу развивалась постепенно:

  1. 90-е годы. Компания VMware начала работу над технологией виртуализации серверов. В 1999 году они выпустили свой первый продукт – VMware Workstation, который позволял виртуализировать отдельные рабочие станции.

  2. Начало нулевых. VMware продолжала развивать свои технологии виртуализации, в основном, сосредотачиваясь на серверах. Но идеи о виртуализации рабочих столов уже начинали формироваться.

  3. Середина нулевых. Технологии виртуализации стали более доступными и зрелыми. Компании, такие как VMware, Citrix и Microsoft, начали предлагать решения, ориентированные на виртуализацию рабочих столов. Например, VMware представила свой VDI-продукт, а Citrix предложила XenDesktop.

На сегодняшний день популярными VDI решениями на рынке остаются продукты IT гигантов: 

  • Citrix XenDesktop 7

  • VMware Horizon 6 Enterprise Edition (с View)

  • Microsoft VDI

  • Dell vWorkspace 8.0

Но, к сожалению (или к счастью) они не доступны на российском рынке по известным всем причинам. Поэтому в данной статье предлагаю посмотреть в сторону отечественного VDI решения от компании «Увеон — облачные технологии», входящей в «Группу Астра».

Использование VDI примечательно тем, что можно продолжать пользоваться существующим оборудованием еще долгое время, а также то, что все данные хранятся в контуре компании. Это снижает риски утечки корпоративной информации и повышает удобство пользования данными за счет централизованного управления.

Теперь немного о содержании статьи. Мы рассмотрим решение для виртуальных рабочих столов Termidesk, его установку и настройку в корпоративном контуре, а именно домене FreeIPA, интеграцию с ПК (программным комплексом) СВ «Брест» (мы же тут про отечественное собрались говорить) и работу с TrueConf Server (заявлено сокращение полосы пропускания в 10 раз).

Содержание

Немного предисловия

Termidesk поддерживает различные протоколы доставки: VNC, RDP, SPICE. Последний они допилили своими усилиями, цитирую:

“за счет уникальных на отечественном рынке наработок по оптимизации протокола доставки на базе SPICE.”

Ну посмотрим.

SPICE — это протокол разработанный компанией Qumranet, но впоследствии представлен миру компанией RedHat. Благодарность им. SPICE можно разделить на 4 различных компонента: протокол, клиент, сервер и гость. 

Его главное преимущество, что он поддерживает передачу аудио и видео. Об остальном можно почитать в официальной документации.

Termidesk поддерживает домены аутентификации, то есть LDAP каталоги, что очень важно в корпоративной среде.

Прежде чем перейти к установке нужно рассмотреть схему стенда и системные требования машин.

Также хочу подметить, если вы будете разворачивать тестовый стенд на VMware ESXi, то: 

  • у вас должна быть включена вложенная виртуализация (Expose hardware assisted virtualization to the guest OS);

  • В настройках адаптера сети нужно включить режим проброса (Promiscuous mode).

Схема

В домене example.lan находится три машины: 

  • Termidesk — termidesk.example.lan, 10.110.2.247;

  • FreeIPA — freeipa.example.lan, 10.110.2.248;

  • ПК СВ «Брест»  — brest.example.lan, 10.110.2.249.

Вне домена расположен TrueConf Server (video.example.net), а также пользователи, которые подключаются через Termidesk Client.

Схема подключения
Схема подключения

Параметры машин

Я развернул машины с такой конфигурацией:

example.lan

FreeIPA

ПК СВ «Брест»

Termidesk

CPU (vCPU)

2

8

2

RAM

2 ГБ

8

4 ГБ

Объем диска

12 ГБ

110 ГБ

20 ГБ

ОС

Astra Linux

Astra Linux

Astra Linux

Подробные сведения

Конечно в продакшене цифры будут другие, но для тестов этого хватит.

Может возникнуть вопрос: “Почему FreeIPA не развернуть вместе с Брестом?”. Официальный ответ из документации:

В связи с особенностью функционирования домена FreeIPA, конфигурация, при которой разворачиваются сервисы контроллера домена и фронтальной машины на одном сервере, недопустима.

Я умышленно не показываю конфигурацию машины для TrueConf Server. Будем считать, что он находится в другом сегменте сети под управлением другого администратора. Для интеграции вам достаточно знать FQDN и IP-адрес этой машины. 

Если вы будете администрировать и TrueConf Server, то вот ссылки для изучения: 

  1. Установка TrueConf Server.

  2. Настройка интеграции с LDAP.

По ходу статьи я еще расскажу подробнее про интеграцию с TrueConf Server.

Настройка сети

Чтобы каждый раз не повторяться про настройку сети, я решил выделить ее в отдельный раздел, на который буду ссылаться по ходу статьи.

Если при установке ОС вы установили Network Manager, то предварительно перед настройкой сети остановите его с помощью команд:

sudo systemctl stop network-manager
sudo systemctl disable network-manager

Перед настройкой сети на каждой машине установите пакет resolvconf, чтобы каждый раз не менять настройки DNS в /etc/resolv.conf:

sudo apt install resolvconf

На машине с гипервизором (brest.example.lan), установите пакет bridge-utils, который нужен нам для создания моста между интерфейсами:

sudo apt install bridge-utils

При отображении сообщения Смена носителя: вставьте диск с меткой “OS Astra Linux 1.7.2 1.7_x86-64 DVD” подключите установочный диск и нажмите Enter.

Настройку сети я буду осуществлять через правку *.conf файлов, для меня так проще и привычнее. Поэтому в директории /etc/network/interfaces.d/ создайте файл br0.conf (для brest) и eth0.conf (для всех трех машин).

Если вдруг у вас недоступен eth0 или ваш интерфейс назван иначе, то проверить список доступных можно с помощью команды:

ip -f inet a s

После создания файлов отредактируйте их как показано в таблицы ниже.

termidesk.example.lan
eth0.conf

auto eth0
iface eth0 inet static
address 10.110.2.247
netmask 255.255.240.0
gateway 10.110.0.1
dns-nameservers 10.110.2.248 77.88.8.8
dns-search example.lan

freeipa.example.lan
eth0.conf

auto eth0
iface eth0 inet static
address 10.110.2.248
netmask 255.255.240.0
gateway 10.110.0.1
dns-nameservers 10.110.2.248 77.88.8.8
dns-search example.lan

brest.example.lan
eth0.conf

auto eth0
iface eth0 inet manual

brest.example.lan
br0.conf

auto br0
iface br0 inet static
bridge_ports eth0
address 10.110.2.249
netmask 255.255.240.0
gateway 10.110.0.1
dns-nameservers 10.110.2.248 77.88.8.8
dns-search example.lan

После этого запустите сетевой интерфейс: 

termidesk/freeipa:

sudo ifup eth0

brest:

sudo ifup br0

При запуске br0 сам поднимает связанные с ним интерфейсы (eth0), поэтому отдельно запускать их не нужно.

При необходимости перезапустите службу сети:
sudo systemctl restart networking.service

Далее для каждой машины:

  1. Задайте сетевое имя с помощью команды:

sudo hostnamectl set-hostname {NAME}.example.lan
  1. Для удобства администрирования запустите службу ssh и добавьте её в автозапуск:

sudo systemctl enable ssh
sudo systemctl start ssh

Развертывание

Развертывание сервисов должно производиться на Astra Linux 1.7. И казалось, что может пойти не так? Но поверьте, может. Оказалось, что состоянием на осень 2023 Брест нормально функционирует только в версии 1.7.2. После нескольких проб и общения с ТП, я решил не проверять заведется ли Termidesk на свежей версии с Брестом на старой версии и везде поставил одинаковую версию Astra Linux 1.7.2 с оперативным обновлением. 

“Умный учится на своих ошибках, мудрый учится на чужих, а дурак …”

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

Установка FreeIPA

Подключитесь к freeipa.example.lan (10.110.2.248) по SSH:

ssh {username}@10.110.2.248

где {username} — это имя пользователя, которое вы использовали при установке ОС. В моем случае это test.

Если у вас подключен установочный диск, то можно установить FreeIPA с него. В противном случае, откройте файл /etc/apt/sources.list и отредактируйте как показано ниже:

deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/repository-extended 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/repository-update 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/uu/1/repository-update 1.7_x86-64 main contrib non-free

Обновите список пакетов и установите astra-freeipa-server:

sudo apt update && sudo apt install astra-freeipa-server

Проинициализируйте домен с помощью команды:

sudo astra-freeipa-server -d example.lan -n freeipa -ip 10.110.2.248 -o

у вас отобразится сообщение:

compname= freeipa
domain= example.lan
Сертификаты будут сгенерированы с помощью OpenSSL
Будет использован указанный IP-адрес 10.110.2.248.
продолжать ? (y\n)

Введение y (маленькую букву), нажмите Enter и задайте пароль администратора домена.

В конце, после успешной инициализации, у вас отобразится надпись:

Обнаружен настроенный домен example.lan
WEB: https://freeipa.example.lan

После этого обязательно перезагрузите компьютер:

sudo reboot

Настройка FreeIPA

При использование FreeIPA CLI нужно выполнять команды из-под учетной записи администратора контроллера домена (admin). 

DNS

FreeIPA в нашем стенде выполняет роль DNS сервера, поэтому заранее добавим A записи для рабочих станций с помощью CLI: 

sudo ipa dnsrecord-add {DNSZONE} {NAME} --a-rec {IP}

где: 

{DNSZONE} — зона DNS. В моем случае это example.lan;

{NAME} — имя записи. Например, для домена brest.example.lan — это brest;

{IP} — IP-адрес машины.

С другими настройками можно ознакомиться в официальной документации.

Добавление пользователей

Добавить пользователей в LDAP можно двумя способами: через веб-панель и с помощью CLI.

Недостаток добавления пользователей через веб-панель заключается в том, что при первом входе ему нужно изменить пароль заданный администратором. Вроде бы ничего такого, но Termidesk не умеет изменять пароль, поэтому просто не авторизует пользователя. Поэтому правильный подход добавления пользователей — использование CLI.

Чтобы создать пользователя выполните: 

sudo ipa user-add {login} --first={name} --last={surname} --email={email} --gidnumber={group-id} --password --password-expiration={DATETIME}

Параметр DATATIME нужно указывать в формате ГГГГ-ММ-ДДZ, например, 2050-12-31Z.

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

sudo ipa user-add iivanov --first=Иван --last=Иванов --email=iivanov@example.lan --gidnumber=1466000045 --password --password-expiration=2050-12-31Z

Также вы можете создать пользователя в веб-панели, а потом изменить срок действия пароля через CLI:

sudo ipa user-mod {login} --password -password-expiration={DATETIME}

Для получения справки по другим параметрам воспользуйтесь:

sudo ipa help user-add

Политика паролей

При установке FreeIPA создается глобальная политика паролей. Глобальная политика затрагивает всех пользователей и это значит, что администратор ПК СВ «Брест» не сможет войти в панель администратора через 90 дней, т.к. его пароль истек.

Вы можете настроить политику паролей используя веб-интерфейс. Я приведу пример с использованием CLI.

Чтобы изменить глобальную политику, выполните команду:

sudo ipa pwpolicy-mod --maxlife {amount-of-days}

Вы можете создать политику для каждой группы. Ниже пример изменения политики для группы trueconf:

sudo ipa pwpolicy-mod trueconf --maxlife 360

Для получения справки по другим параметрам выполните:

sudo ipa help pwpolicy-mod

Сертификаты

FreeIPA выступает в роли центра сертификации. После установки ПК СВ «Брест» и Termidesk используют самоподписанные сертификаты к которым нет доверия.

В дальнейшем, при настройке Termidesk, будет шаг проверки SSL сертификатов. К сожалению, проверка будет выдавать ошибку из-за недоверенного сертификата.

Например, в ПК СВ Брест сертификаты используются при входе в веб-панель и подключении по некоторым протоколам, например, VNC и SPICE. Добавлю, лично у меня срабатывала бесконечная авторизация при подключении по SPICE-HTML5, что препятствовало работе через данное подключение.

В данном примере я покажу, как сгенерировать сертификат, упаковать его в pfx контейнер и передать на удаленный сервер.

Для этого выполните команду из-под учетной записи администратора контроллера домена (admin):

sudo astra-freeipa-server-crt --host {FQDN} --export --push {USER}@{REMOTE-HOST} --pin 12345

где:

{FQDN} — это полное доменное имя, для которого выписывается сертификат, например, termidesk.example.lan.

{USER} — имя пользователя на удаленном сервере, у меня test.

{REMOTE-HOST} — IP-адрес или доменное имя удаленного сервера.

--pin —  пин для защиты контейнера. При его установке требуется для распаковки контейнера.

Вам будет предложено ввести пароль от учетной записи на удаленном сервере. 

После этого на удаленной машине выгрузите сертификат и ключ (каждый в свой файл): 

sudo openssl pkcs12 -in {FQDN}.p12 -out cert.pem -nodes
sudo openssl pkcs12 -in {FQDN}.p12 -nocerts -nodes -out cert.key

где {FQDN}.p12 — это имя контейнера с названием домена, например, brest.example.lan.p12.

Далее вам нужно будет указать новый сертификат в конфигурационном файле Apache, о чем будет написано ниже в разделе про развертывание для каждого продукта отдельно.

Создание SPN и генерация Keytab-файла

Чтобы каждый раз не повторяться про настройку Kerberos, я решил выделить ее в отдельный раздел на который я буду ссылаться по ходу статьи.

Kerberos используется для беспарольной аутентификации в Termidesk и TrueConf Server. Чтобы аутентификация работала, нужно сгенерировать keytab-файл. Он содержит пары Kerberos принципалов и их ключей. Но перед этим необходимо создать SPN (Service Principal Name) — уникальный идентификатор экземпляра сервиса, другими словами, просто службу на FreeIPA. 

Для создания SPN выполните: 

  1. Подключитесь по SSH к контроллеру домена (freeipa.example.lan) с помощью учетной записи администратора admin.

  2. Получите билет (kerberos-ticket) с помощью команды:
    kinit admin

  3. Добавьте новый узел с помощью команды (если машины в домене, то этот пункт можно пропустить):

sudo ipa host-add --force --ip-address={x.x.x.x} {FQDN}
#Добавление узла для Termidesk
sudo ipa host-add --force --ip-address=10.110.2.247 termidesk.example.lan
#Добавление узла для TrueConf Server
sudo ipa host-add --force --ip-address=10.110.2.242 video.example.net
  1. Добавьте новую службу на машине с FreeIPA:

#Termidesk
sudo ipa service-add HTTP/termidesk.example.lan
#TrueConf Server
sudo ipa service-add trueconf/video.example.net

Для генерации keytab-файлов выполните команды: 

#Termidesk
sudo ipa-getkeytab -s freeipa.example.lan -p HTTP/termidesk.example.lan -k termidesk.keytab
#TrueConf Server
sudo ipa-getkeytab -s freeipa.example.lan -p trueconf/video.example.net -k trueconf.keytab

Теперь перенесите keytab-файлы на рабочую станцию по SSH или другим удобным способом. Например, по SSH это можно сделать, выполнив в терминале на машине с FreeIPA команду: 

#Termidesk
sudo scp termidesk.keytab test@10.110.2.247:/home/test

Аналогично надо перенести файл и на машину с TrueConf Server.

Ввод в домен

Чтобы не повторяться про ввод в домен, я решил выделить этот процесс в отдельный раздел на который я буду ссылаться по ходу статьи.

Этот раздел относится ко всем машинам, которые нужно ввести в домен FreeIPA (example.lan). В моем случае это машина c ПК СВ Брест и Termidesk. 

Ввод машин в домен FreeIPA осуществляется с помощью специального пакета astra-freeipa-client. Установите его с помощью команды:

sudo apt -y install astra-freeipa-client

Для ввода машины в домен выполните команду: 

sudo astra-freeipa-client -d example.lan -u admin -p 12345678 -y

где: 

-d  — домен;

-y  — отключает запрос подтверждения;

-u  — логин администратора домена;

-p  — пароль администратора домена (небезопасно).

Можно эти данные не указывать, тогда доменное имя берется из resolv.conf, а логин/пароль придется ввести вручную во время выполнения команды.

Другие варианты использования команды приведены в ее справке.

Внимание! После выполнения команды обязательно выполните перезагрузку ОС!

Для проверки результата ввода в домен необходимо выполнить команду:

sudo astra-freeipa-client -i

Об успешном вводе в домен будет свидетельствовать следующая надпись:

Обнаружен настроенный клиент в домене example.lan

После этого проинициализируйте аутентификацию Kerberos используя логин администратора FreeIPA:

kinit admin

Настройка синхронизации времени

Протокол Kerberos очень чувствителен к правильной синхронизации времени между центром распространения ключей (KDC) и узлами аутентификации. При разнице во времени более нескольких минут аутентификация не сработает. Поэтому на узлах, где будет осуществляться аутентификация по Kerberos, настроим синхронизацию с NTP сервером FreeIPA. Для этого:

  1. В файле /etc/chrony/chrony.conf удалите все строки, которые начинаются на pool и server.

  2. Затем в начало добавьте:
    server freeipa.example.lan iburst

  3. После этого перезапустите службу crony:
    sudo systemctl restart chrony

Проверить статус можно с помощью команд chronyc tracking и chronyc sources. В выводе должно быть упоминание вашего домена, в моем случае это freeipa.example.lan.

Подключение локального репозитория

Чтобы не повторяться про подключение локального репозитория (CD-ROM или ISO-файла) я решил выделить этот процесс в отдельный раздел, на который буду ссылаться по ходу статьи.

Для подключения локального репозитория выполните:  

  1. К машине подключите файл образа установочного диска (ISO/CD).

  2. Создайте каталог для дальнейшего размещения репозитория:

sudo mkdir -p /srv/repo/{directory-name}

где {directory-name} — название директории, например, brest или termidesk.

  1. Если у вас подключен диск в режиме CD-ROM,то вам необходимо узнать имя подключенного диска. Для этого выполните команду:

lsblk
  1. Примонтируйте установочный диск:

где:

{cd-disk} — имя диска из предыдущего пункта, например sr0;
{file-name-iso} — название образа ISO, например, termidesk-vdi.XXXXX.iso.

  1. Скопируйте файлы из установочного диска в каталог репозитория:

sudo cp -a /mnt/* /srv/repo/{directory-name}
  1. Отмонтируйте установочный диск:

sudo umount /mnt
  1. Установите пакет lsb-release:

sudo apt install -y lsb-release
  1. Подключите каталог в качестве репозитория:

Брест:

sudo sh -c 'echo "deb file:/srv/repo/{directory-name}/ brest main non-free" > /etc/apt/sources.list.d/brest_local.list'

Termidesk:

sudo sh -c 'echo "deb file:/srv/repo/{directory-name}/repos/astra $(lsb_release -cs) non-free" > /etc/apt/sources.list.d/termidesk_local.list'

где {directory-name} — название директории, например, brest или termidesk.

После этого для машины с Termidesk добавьте PGP ключ в ОС:

cat /srv/repo/{directory-name}/repos/astra/GPG-KEY-PUBLIC | sudo apt-key add -

и убедитесь, что ключ с uid «release@uveon.ru» был успешно добавлен: 

apt-key list

Установка ПК СВ «Брест»

Важно! На данном этапе сеть настроена, машина введена в домен.

Подключитесь к brest.example.lan (10.110.2.249) по SSH:

ssh {username}@10.110.2.249

где {username} — это имя пользователя, которое вы использовали при установке ОС. В моем случае это test.

Гипервизор Брест работает только на Astra Linux 1.7.2. Информация о текущей версии операционной системы доступна в файле /etc/astra/build_version: 

cat /etc/astra/build_version

Если ваша версия соответствует 1.7.2.11, перейдите к подключению локального репозитория, в противном случае вам придется доустановить оперативное обновление.

Установка оперативного обновления

Для установки оперативного обновления выполните: 

  1. В файле /etc/apt/sources.list закомментируйте строку с помощью # (хештега):

#deb cdrom:[OS Astra Linux 1.7.2 1.7_x86-64 DVD ]/ 1.7_x86-64 contrib main non-free
  1. Также в конец файла /etc/apt/sources.list добавьте строки: 

deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/repository-extended 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/repository-update 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/uu/1/repository-update 1.7_x86-64 main contrib non-free
  1. Выполните в терминале команду:

sudo apt update
  1. Установите обновление с помощью команды:

sudo astra-update -A -r -T 
  1. После установки дополнительно в терминале выполните команду sync для того, чтобы удостоверится, что все данные перенесены на диск.

  2. Установленная версия должна быть 1.7.2.11. Для проверки выполните:

cat /etc/astra/build_version
  1. В случае успеха выполните перезагрузку машины:

sudo reboot

Установка и инициализация Брест

Подключите локальный репозиторий ПК СВ Брест как было сказано выше.

Важно! Репозитории, добавленные в разделе Установка оперативного обновления, должны быть раскомментированы.

Обновите информацию о пакетах и установите Брест:

Во время процесса установки у вас отобразится страница с лицензионным соглашением, которое следует принять.

Внимание! После выполнения обязательно выполните перезагрузку ОС! 

После включения ОС нужно проинициализировать сервис фронтальной машины. Для этого выполните:

sudo brestcloud-configure

Во время инициализации: 

  • введите логин администратора IPA-сервера;

  • укажите логин и пароль для администратора Брест.

Далее выполните инициализацию сервиса узла виртуализации:

sudo ipa-libvirt-qemu-configure

Во время инициализации: 

  • введите логин и пароль администратора IPA-сервера;

  • введите FQDN для фронтальной машины Брест (brest.example.lan);

  • введите логин (test) и пароль учетной записи ОС.

Внимание! После выполнения обязательно выполните перезагрузку ОС! 

Установка Termidesk

Перед установкой Termidesk советую ознакомиться с таблицей совместимости версий Termidesk и Astra Linux.

Если вы будете устанавливать Termidesk версии 4.2.1 и выше, то в процессе установки ОС должен быть выбран графический интерфейс.

Важно! На данном этапе сеть настроена, машина введена в домен

Подключите локальный репозиторий Termidesk как было сказано выше.

Для функционирования Termidesk нужно предварительно установить СУБД PostgreSQL 11 и брокер сообщений RabbitMQ.

Установка PostgreSQL

Для установки Postgres необходимо:

  1. Откройте файл /etc/apt/sources.list и отключите получение пакетов с локального репозитория на CD диске. У вас должен получиться следующий список:

#deb cdrom:[OS Astra Linux 1.7.2 1.7_x86-64 DVD ]/ 1.7_x86-64 contrib main non-free
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free
deb https://download.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free
  1. Обновите пакеты и установите СУБД:

sudo apt update; sudo apt install -y postgresql-11

Создание БД

После установки PostgreSQL нужно вручную создать БД из консоли.

Для настройки выполните:

  1. Откройте терминал и войдите под пользователем postgres:

sudo su postgres
  1. Запустите интерактивный терминал для работы с PostgreSQL:

psql

У вас должно отобразиться приглашение postgres=#. Подробнее о psql и приглашениях можно почитать в официальной русской документации.

  1. Создайте БД с именем termidesk используя команду (точка с запятой в конце строки обязательна):

CREATE DATABASE termidesk LC_COLLATE 'ru_RU.utf8' LC_CTYPE 'ru_RU.utf8' TEMPLATE template0;
  1. Создайте пользователя для дальнейшего подключения к БД. Логин и пароль задайте свой:

CREATE USER {admin-username} WITH PASSWORD '{very-strong-password}';
  1. Назначить созданному пользователю права на использование базы данных termidesk:

GRANT ALL PRIVILEGES ON DATABASE termidesk TO {admin-username};
  1. Для выхода из psql используйте команду:

\q
  1. Для выхода из сеансов пользователей postgres и root выполните два раза подряд команду:

exit

Чтобы не возникала ошибка при получении мандатных атрибутов, нужно отредактировать файл /etc/parsec/mswitch.conf как показано ниже строго вплоть до пробелов:

# Return zero data instead of ENOENT/ENODATA in the absence of record
zero_if_notfound: yes

Установка и настройка RabbitMQ

Для установки выполните команду: 

sudo apt install -y rabbitmq-server

Для настройки:

  1. Проверьте существует ли каталог /etc/rabbitmq:

ls /etc/
  1. Если каталог отсутствует, то создайте его:

sudo mkdir -p /etc/rabbitmq
  1. Перейдите в каталог /etc/rabbitmq:

cd /etc/rabbitmq
  1. Создайте два файла: rabbitmq.conf (основной файл конфигурации) и definitions.json (файл определения данных для подключения):

sudo touch rabbitmq.conf
sudo touch definitions.json
  1. Измените владельца и группу для созданных файлов:

sudo chown rabbitmq:rabbitmq definitions.json rabbitmq.conf
  1. Отредактируйте файл rabbitmq.conf как показано ниже:

# ======================================= Management section ================
    ## Preload schema definitions from the following JSON file. Related doc guide:
    #https://rabbitmq.com/management.html#load-definitions.
    ##
    # management.load_definitions = /path/to/exported/definitions.json
    management.load_definitions = /etc/rabbitmq/definitions.json
  1. Отредактируйте файл definitions.json как показано ниже:

Важно! Пользователи termidesk и admin заданы для примера. Вы можете указать свои данные в нужных местах. Хеш пароля мы сгенерируем ниже.

{
    "rabbit_version": "3.7.8",
    "users": [
        {
            "name": "termidesk",
            "password_hash": "FwIl0US4nfEiEQkIg97X+4n53U7KjBiU6gtZkK6e4W24kUlV",
            "hashing_algorithm": "rabbit_password_hashing_sha256",
            "tags": ""
        },
        {
            "name": "admin",
            "password_hash": "FXQ9WFNSrsGwRki9BT2dCITnsDwYu2lsy7BEN7+UncsPzCDZ",
            "hashing_algorithm": "rabbit_password_hashing_sha256",
            "tags": "administrator"
        },
        {
            "name": "termik",
            "password_hash": "KE0+aR+1TZzZpKTq93YyJYJVtfMQ9C1aE8a7L2oemaCckTF6",
            "hashing_algorithm": "rabbit_password_hashing_sha256",
            "tags": ""
        }
    ],
    "vhosts": [
        {
            "name": "/"
        },
        {
            "name": "termidesk"
        }
    ],
    "permissions": [
        {
            "user": "termidesk",
            "vhost": "termidesk",
            "configure": ".*",
            "write": ".*",
            "read": ".*"
        },
        {
            "user": "admin",
            "vhost": "termidesk",
            "configure": ".*",
            "write": ".*",
            "read": ".*"
        }
    ],
    "topic_permissions": [
        {
            "user": "termidesk",
            "vhost": "termidesk",
            "exchange": "",
            "write": ".*",
            "read": ".*"
        }
    ],
    "parameters": [],
    "global_parameters": [
        {
            "name": "cluster_name",
            "value": "rabbit@rabbitmq"
        }
    ],
    "policies": [],
    "queues": [],
    "exchanges": [],
    "bindings": []
}

Для преобразования пароля в хеш выполните:

  1. Перейдите в каталог /srv/repo/{directory-name}/repos/Addons/Scripts/, где {directory-name} — название директории указанное при подключении локального репозитория.

cd /srv/repo/{directory-name}/repos/Addons/Scripts/
  1. Файл rabbitmq_password2hash.sh сделайте исполняемым:

sudo chmod +x rabbitmq_password2hash.sh
  1. Выполните исполняемый файл:

sudo rabbitmq_password2hash.sh -u {username} -p {password} -w

Перед запуском вам необходимо проинициализировать RabbitMQ с помощью команды: 

sudo rabbitmq-plugins enable rabbitmq_management

Перезапустите сервер:

sudo systemctl restart rabbitmq-server

Установка Termidesk

Для установки выполните:

sudo apt update && sudo apt -y install termidesk-vdi

Во время установки будет предложено выбрать компоненты:

Исходя из того, что мы проводим обычную установку Termidesk (на одном сервере), то нужно отметить все пункты и нажать кнопку OK.

После установки необходимо скорректировать файл конфигурации веб-сервера /etc/apache2/apache2.conf

  1. Откройте файл и найдите строку с параметром AstraMode.

  2. Раскомментируйте строку и присвойте параметру значение off, как показано ниже:

# Astra security mode
#
AstraMode off

И наконец, перезапустите веб-сервер:

sudo systemctl restart apache2

Установка завершилась. Во второй части мы подробнее остановимся на настройке и использовании ПО.

Комментарии (4)


  1. MGren
    09.12.2023 14:37

    Цена компов для каждого сотрудника - да, существенна... обслуживание и своевременное их обновление, в том числе софта - да, требует больше времени, более трудоемко, но... лицензии на все эти VDI далеко не бесплатны, серваки надо гораздо более мощные, требования к сети и вообще бесперебойности всего - выше, а если мы еще говорим о задачах когда пользователям нужны всяческие CAD, 3D и прочее - в общем как не прикидывал, комп каждому - проще и дешевле.


    1. Hardened
      09.12.2023 14:37

      VDI с платными брокерами не про экономию, а про контроль распространения информации и безопасность. Особенно когда нужно временным командам обеспечить работу в периметре некоторых информационных систем компании...


      1. MGren
        09.12.2023 14:37

        Да, но в первом абзаце статьи именно про экономию, а не про ИБ.


    1. dimitrii_z
      09.12.2023 14:37

      Вы правы, может, автор не совсем угадал с причинами, но всё равно в этой стране остаётся крупный бизнес с суровой службой ИБ, и потребностями в VDI. Судя по тому что это первая часть и установка несколько нетривиальная получилась, нельзя сказать что отечественное однозначно удобнее, но хотя бы есть доступная альтернатива. Например, сайты Citrix и Dell из перечисленных в начале вообще не открываются без активации "трёх-букв-которые-нельзя-называть"...