17
Jan
2024
Установка Termit. Шаг за шагом

Мы открываем цикл статей для описания кейсов применения нашего продукта Termit 2.0.

Termit — это система терминального доступа (СТД). Она используется для организации удаленного доступа конечных пользователей к приложениям, опубликованным на терминальных серверах. Пользователи получают защищенный доступ к ресурсам с учетом прав доступа и нагрузки на серверы.

Преимущества Termit:

  • безопасный доступ к централизованно развернутым приложениям;
  • совместное использование ресурсов с минимальными усилиями на администрирование и развертывание;
  • простой поиск для запуска нужных приложений.

Расскажем подробнее о решении на примере из практики нашего заказчика. Мы получили запрос на создание сервиса для реализации “Безопасного интернета” для сотрудников. Клиентом была выбрана операционная система РЕД ОС в рамках инфраструктуры. Архитектура решения была направлена только на отказоустойчивость публикуемых приложений.

Сценарий

Сценарий предполагает, что в имеющейся сети все узлы изолированы от выхода в сеть Интернет и имеют доступ только к внутренним сервисам. При этом есть необходимость в предоставлении доступа к определенному перечню сайтов, расположенных за пределами корпоративной сети (например, для подключения к аудиоконференции в веб-браузере). 

Чтобы избежать использования на рабочем месте нескольких устройств (одно для работы во внутренней сети, остальные для получения доступа к внешним ресурсам), посредством использования Termit возможна реализация безопасного доступа в Интернет. 

Для этого развернуто решение Termit, в котором опубликован веб-браузер, имеющий доступ к внешним ресурсам через расположенный в демилитаризованной зоне прокси-сервер. Он является прозрачным, поэтому дополнительная настройка на терминальных серверах не потребуется. 

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

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

Требования и сайзинг

Сайзинг терминальных серверов был из расчета ~20 клиентов на терминальный сервер, с возможностью брать на себя дополнительную нагрузку при выходе из строя соседа.Расчет требований на 1 терминальный сервер с учетом 20% резерва:vCPU — 0,5 * 20 * 1,2 = 12, итог 16 ГБRAM — 2 * 20 * 1,2 = 48, итог 56 ГБHDD — 0,5 * 20 * 1,2 = 12, итог 112 ГБ

Схема развертывания

Команда Orion soft разработала и согласовала архитектуру с взаимодействием со смежными системами:

В данном случае предполагаем, что брокер один, в реальности для обеспечения отказоустойчивости их должно быть несколько. Подробное рассмотрение мер по обеспечению отказоустойчивости для Termit планируется представить в отдельной %

Итак, приступим к инсталляции компонентов.

Установка Termit

Подготовка базы данных

Подключаемся на машину с ролью базы данных (FQDN машины – orion-db.termit.lab). Для базовой конфигурации базы данных выполняем следующие шаги:

1. Устанавливаем PostgreSQL с помощью команды

sudo dnf install postgresql15-server 

2. Инициализируем базу данных с помощью команды sudo postgresql-15-setup initdb

3. Запускаем сервис PostgreSQL с помощью команды sudo systemctl enable postgresql-15.service --now

4. Открываем файл конфигурации /var/lib/pgsql/15/data/postgresql.conf для редактирования командой 

sudo nano /var/lib/pgsql/15/data/postgresql.conf


5. Устанавливаем значение '*' для параметра listen_addresses в файле конфигурации /var/lib/pgsql/15/data/postgresql.conf, чтобы разрешить удаленное подключение к СУБД:

6. Открываем файл конфигурации /var/lib/pgsql/15/data/pg_hba.conf для редактирования командой sudo nano /var/lib/pgsql/15/data/pg_hba.conf


7. Добавляем в файл конфигурации /var/lib/pgsql/15/data/pg_hba.conf строки, позволяющие разрешить удаленное подключение к СУБД только для брокера и АРМ администратора системы с использованием пароля:

Таким образом, для всех остальных пользователей возможность подключения к базе данных ограничена для усиления безопасности.


8. Запускаем сессию служебного пользователя postgres и командную оболочку postgres, последовательно выполнив команды:

sudo su - postgres 

psql

9. Создаем пустую базу данных командой 

CREATE DATABASE TermitDB;

10. Создаем нового пользователя с паролем командой 

CREATE USER orionuser WITH PASSWORD 'teRmit2';

11. Устанавливаем права владельца для пользователя orionuser на базу TermitDB

ALTER DATABASE TermitDB OWNER TO orionuser;

12. Выходим из командной оболочки psql и сессии пользователя postgres, дважды выполнив команду exit

13. Перезапускаем сервис PostgreSQL с помощью команды

systemctl restart postgresql-15.service

Установка брокера

Подключаемся на машину с ролью брокера (FQDN машины – orion-br.termit.lab). Для установки брокера выполняем следующие шаги:


1. Устанавливаем Docker, Docker Compose с помощью команды:

sudo dnf install docker-ce docker-ce-cli docker-compose 

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

sudo systemctl enable docker --now

3. Киопируем дистрибутив на сервер и проверяем права на выполнение установочного скрипта с помощью команды ls -la. Должно быть назначено право на исполнение;

4. При необходимости выдаем права на запуск скрипта с помощью команды

 sudo chmod +x ./install.sh

5. Запускаем установочный скрипт с помощью команды

sudo ./install.sh install

6. Указываем имя узла брокера (имя может быть любым)

7. Для первого/единственного брокера указываем "1";

8. Вводим адрес FQDN брокера. Портал будет доступен по этому адресу;

9. Последовательно указываем имя хоста базы данных, порт "5432", имя БД, имя пользователя БД, пароль для БД;

После завершения инсталляции для подтверждения успешной операции в браузере в адресной строке вводим адрес брокера: https://broker.example.com. В появившемся окне аутентификации указываем логин "admin" и пароль "admin" от учетной записи по умолчанию.

Вид портала после аутентификации под admin/admin:

Установка на терминальные серверы

Выбранная архитектура предполагает использование 10 терминальных серверов. Приведем шаги по настройке одного из них, далее аналогично этим шагам проведем настройку остальных девяти серверов. Подключаемся на первую машину с ролью терминального сервера (FQDN машины – orion-nd01.termit.lab). 

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


1. Устанавливаем Java 11 с помощью команды:

sudo dnf install java-11-openjdk


2. Изменяем версию Java, используемую по умолчанию, с помощью команды

sudo alternatives --config java

Так как нам требуется версия 11, указываем номер 2:

3. Устанавливаем компоненты X2GO server на терминальный сервер с помощью команды:

sudo dnf install x2goserver-xsession x2goserver-fmbindings x2goserver-common x2goserver x2goagent -y

4. Вводим терминальный сервер в домен командой:

sudo join-to-domain.sh -d termit.lab -n orion-nd11 -u admin -p Ori0n --ou "OU=TermitComputers,DC=termit,DC=lab" -y

Настройка Termit

В этом разделе описано, как настроить LDAP, роли, создать сервер, группу серверов и опубликовать приложение.

Настройка LDAP

Termit использует информацию о пользователях, группах и их связи из LDAP-каталогов. Данная информация копируется из LDAP при синхронизации.

В нашем домене создано подразделение termitusers, которое синхронизируется с Termit, данное подразделение содержит пользователей, имеющих доступ к системе Termit. Синхронизация подразделения с Termit обеспечивает динамическую и управляемую систему доступа, где изменения в членстве группы могут отражаться в доступе к ресурсам. Также это позволяет управлять правами доступа централизованно, что является эффективным способом обеспечения безопасности системы.

Для настройки LDAP выполним следующие действия:

1. В браузере, в адресной строке вводим адрес брокера https://orion-br.termit.lab.

2. Для аутентификации в Termit вводим данные для входа в окне аутентификации: 

  • Учетная запись — admin
  • Пароль — admin

3. В левом меню выбираем раздел Настройки — Настройки LDAP и нажимаем редактировать.

4. Выбираем "LDAP используется".

5. Задаем параметры для подключения:

  • Базовое уникальное имя. Для домена termit.lab: "OU=termitusers,DC=termit,DC=lab";
  • Имя пользователя. Для домена termit.lab: "CN=termitsvc,OU=termitusers,DC=termit,DC=lab";
  • Пароль — пароль от сервисной учетной записи;
  • Период синхронизации (минуты).

Нажимаем «Далее».

6. Чтобы добавить сервер LDAP, нажимаем «+». Указываем адрес, порт и протокол

Выбираем «Сохранить», «Далее».

7. На вкладке «Подтверждение информации» проверяем информацию о сервере LDAP и соединение.

При успешном соединении появится сообщение «Проверка соединения прошла успешна».

Нажимаем «Сохранить».

Состояние синхронизации LDAP и Termit можно посмотреть в разделе «Журнал событий».

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

Можно настроить следующие роли:

  • Администраторы могут полностью контролировать систему, например, управлять серверами, пользователями и приложениями.
  • Служба поддержки может просматривать настройки, информацию о серверах и сессиях в разделе «Обзор», журнал событий и список сессий, а также завершать сессии и блокировать пользователей. Выполняет функцию L1 технической поддержки.
  • Пользователи обладают учетными записями, с помощью которых они имеют доступ к Termit. Только пользователи могут запускать приложения.

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

1. В левом меню выбираем раздел «Настройки».

2. Переходим на вкладку «Роли».

3. Наводим указатель мыши на «Администраторы», нажимаем «Редактировать», затем «+».

4. Добавляем группы из каталога пользователей для роли администраторов. Можно добавить несколько групп. Поддерживаются вложенные группы.

5. Нажимаем «Сохранить» > «Сохранить».

Для ролей «Служба поддержки» и «Пользователи» повторяем действия из шагов 3-5, выбирая группы TechSupport и TermitUsers соответственно.

Далее создаем терминальный сервер.

Создание сервера

Для создания сервера выполняем следующие действия:

1. На «Портале администрирования» в левом меню выбираем раздел «Серверы».

2. В правом верхнем углу нажимаем «Новый сервер».

3. На вкладке «Новый терминальный сервер»:

  • Адрес — указываем DNS-адрес терминального сервера
  • Тип — выбираем операционную систему Linux

4. Нажимаем «Далее».

5. На вкладке «Группа терминальных серверов» группу выбирать не нужно, так как она еще не создана. Нажимаем «Далее».

6. На вкладке «Подтверждение информации» проверяем информацию о сервере и нажимаем «Создать».

7. Чтобы установить агент на терминальный сервер, выполняем указанный скрипт в консоли терминального сервера. Агент будет установлен и зарегистрирован на терминальном сервере.

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

Созданный сервер появился в списке. 

Далее создадим группу серверов.

Создание группы серверов

Для создания группы серверов выполните следующие действия:

1. В левом меню выбираем раздел «Группы серверов».

2. В правом верхнем углу нажимаем «Новая группа».

3. На вкладке «Основные настройки»:

  • Имя — указываем название группы.
  • Тип — выбираем операционную систему Linux.
  • (Опционально) Описание — описание группы серверов.

Нажимаем «Далее».

4. На вкладке «Терминальные серверы» выбираем из списка сервер, который создали ранее.

Нажимаем «Далее».

5. На вкладке «Балансировка» терминальных серверов оставляем значение весов по умолчанию.

Нажимаете «Далее».

6. На вкладке «Подтверждение информации» проверяем информацию о группе серверов и нажимаем «Создать».

Созданная группа появилась в списке:

7. Повторяем действия по созданию сервера для оставшихся девяти терминальных серверов, в процессе создания добавляя их в группу серверов SafeInternetServers:

Публикация приложения

Для публикации приложения выполняем следующие действия:

1. В левом меню выбираем раздел «Приложения».

2. Нажимаем «Добавить приложение».

3. На вкладке «Основные настройки» задаем параметры:

  • Имя — название приложения.
  • (Опционально) Наименование у пользователя — название приложения, которое будет отображаться у пользователя.
  • Тип — выбираем "Приложение".
  • Команда для запуска — команда для запуска приложения.
  • (Опционально) Версия — версия приложения.
  • (Опционально) Описание — описание приложения.

Нажимаем «Далее».

4. На вкладке «Группа терминальных серверов» выбираем группу серверов SafeInternetServers для приложения:

Нажимаем «Далее».

5. На вкладке «Группы доступа приложения» добавляем группу. Нажимаем «+» и выбираем из списка группу, которая будет иметь доступ к этому приложению.

Нажимаем «Сохранить», «Далее».

6. На вкладке «Подтверждение информации» проверяем информацию о приложении и нажимаем «Создать».

Установка SSL-сертификата

Чтобы избавиться от вывода предупреждения о незащищенном подключении к Termit, необходимо импортировать сертификат и закрытый ключ в настройках брокера. Сертификат следует использовать тот, который выпущен доверенным центром сертификации.

1. Заходим в настройки под учетной записью администратора. Заходим в настройки серверов:

2. Загружаем закрытый ключ и сертификат, нажимаем «Сохранить»:

3. Перезапускаем браузер, переходим по адресу портала и убеждаемся, что установлено безопасное соединение:

Установка клиента

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

1. В браузере в адресной строке вводим адрес, по которому доступен Termit — https://orion-br.termit.lab

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

Нажимаем «Войти».

3. Выбираем операционную систему Linux, скачиваем клиент Termit для Linux rpm и выполняем шаги по установке.

4. Устанавливаем клиент X2Go из репозитория:

Установка сертификата на клиент

Для успешного подключения к Termit необходимо, чтобы используемый SSL-сертификат был добавлен в список доверенных на клиенте.

Для этого выполняем следующие шаги:

1. Копируем файл корневого сертификата в каталог /etc/pki/ca-trust/source/anchors/ с помощью команды:

sudo cp %Путь_к_сертификату% /etc/pki/ca-trust/source/anchors/Где: %Путь_к_сертификату% — полный путь к файлу сертификата в формате PEM.

2. Чтобы применить изменения, выполняем команды:

sudo update-ca-trust force-enable

sudo update-ca-trust extract

Проверка работоспособности

Заходим на клиентскую машину и проверяем доступ к интернет-ресурсу orionsoft.ru, используя браузер напрямую:

Доступ к ресурсу получить не удалось.

Теперь проверяем доступ к тому же ресурсу orionsoft.ru через опубликованный в Termit браузер, для этого:

1. В десктопном приложении Termit вводим адрес брокера без http(s).

Нажимаем «Подключиться».

2. На странице аутентификации вводим учетные данные пользователя, входящего в группу доступа для опубликованного ранее приложения (в нашем случае группа TermitUsers):

3. Запускаем опубликованное приложение:

4. Вводим пароль пользователя, выбранного на шаге 2:

5. Переходим на ресурс orionsoft.ru через опубликованный в Termit браузер:

Так как доступ к прокси, который имеет доступ во внешнюю сеть, есть только у терминальных серверов, клиент смог открыть внешний ресурс только с помощью Termit, в котором опубликован браузер. 

Заключение

Таким образом реализован сценарий «безопасного интернета» посредством Termit с использованием прозрачного прокси-сервера, предоставляющий эффективное и безопасное управление доступом к внешним ресурсам в корпоративной среде. Опубликованный в Termit браузер обеспечивает безопасный доступ к разрешенным сайтам, при этом сохраняя целостность безопасности внутренней корпоративной сети. Такой подход эффективно решает задачу без необходимости в дополнительных устройствах для выхода в интернет, что в свою очередь повышает управляемость доступом в ограниченной сетевой среде.