Установка Termit. Шаг за шагом
Введение
Мы открываем цикл статей для описания кейсов применения нашего продукта Termit 2.0.
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
Подготовка базы данных
Установка Termit
Подготовка базы данных
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 браузер обеспечивает безопасный доступ к разрешенным сайтам, при этом сохраняя целостность безопасности внутренней корпоративной сети. Такой подход эффективно решает задачу без необходимости в дополнительных устройствах для выхода в интернет, что в свою очередь повышает управляемость доступом в ограниченной сетевой среде.