
Привет, Хабр! Сегодня мы подробнее поговорим про Termit 2.1 — систему терминального доступа. Она предназначена для организации удаленного доступа конечных пользователей к приложениям, опубликованным на терминальных серверах. В этой статье я расскажу о том, как мы делали на базе Termit «безопасный интернет» для одного из заказчиков, а параллельно с этим мы подробно рассмотрим процесс развертывания Termit 2.1 на случай, если вы захотите повторить все это своими руками. Под катом — схема внедрения подобного решения и подробная инструкция по развертыванию.
Меня зовут Дмитрий Голубев, и я архитектор продукта Termit в компании Orion soft. Termit — это одна из наших разработок, которые получили бурное развитие в последние годы. Сегодняшний текст будет первым в целой серии материалов по организации терминального доступа (и в том числе замены недоступным более решениям западных вендоров).
Зачем нужен Termit?
Сценарий, когда вам нужно организовать удаленный доступ конечных пользователей к приложениям, которые опубликованы на терминальных серверах, стар, как мир. Это удобно, безопасно, и легко поддается управлению. Именно поэтому спрос, который раньше приходился на Citrix, никуда не делся.
Когда нам нужно обеспечить работу с любого устройства, но при этом соблюсти требования безопасности, используются системы терминального доступа (СТД).
Преимущество Termit в данном случае заключается в том, что от администраторов требуются минимальные усилия по его развертыванию, настройке и поддержке. Собственно, в этом вы сейчас убедитесь на примере одного из типовых кейсов — создании «Безопасного интернета» для сотрудников.
Строим безопасный интернет
Еще до начала наших работ заказчик выбрал операционную систему РЕД ОС — это был стандарт, принятый в масштабах всей инфраструктуры. Изначально все узлы сети изолированы от Интернет-шлюзов и имеют доступ только к внутренним сервисам. Корпоративные правила диктуют предоставить сотрудникам доступ к определенному перечню сайтов, расположенных за пределами корпоративной сети (например, для подключения к аудиоконференции в веб-браузере).
Чтобы не нарушать безопасность рабочих станций, но при этом предоставить сотрудникам ограниченный доступ в Интернет, достаточно развернуть Termit, в котором будет опубликован веб-браузер. Доступ к внешним ресурсам происходит через расположенный в демилитаризованной зоне прокси-сервер. Он является прозрачным, поэтому дополнительная настройка на терминальных серверах не требуется. Пользователь просто запускает опубликованный в режиме терминала браузер и получает безопасный доступ к разрешенному списку внешних ресурсов.
Требования и сайзинг
|
Компонент |
Требования |
|
Брокер |
ОС — РЕД ОС 7.3.2 vCPU — 4 RAM, ГБ — 8 HDD ГБ – 100 |
|
База данных Postgres |
ОС — РЕД ОС 7.3.2 vCPU — 4 RAM, ГБ — 8 HDD ГБ – 100 |
|
Терминальный сервер |
ОС — РЕД ОС 7.3.2 vCPU — 4 (на систему), 0,5 (на каждую сессию) RAM, ГБ — 8 (на систему), 2 (на каждую сессию) HDD, ГБ – 100 (на систему), 0,5 (на каждую сессию) |
Сайзинг — важная задача. Его не стоит игнорировать, если мы хотим, чтобы ничего не тормозило. Ресурсы терминальных серверов подбирались из расчета ~20 пользователей на терминальный сервер, с возможностью балансировки и передачи нагрузки в случае недоступности одного из серверов.
Итого с учетом 20% резерва получаем:
vCPU — 0,5 * 20 * 1,2 = 12, итог 16 ГБ
RAM — 2 * 20 * 1,2 = 48, итог 56 ГБ
HDD — 0,5 * 20 * 1,2 = 12, итог 112 ГБ
Также необходимо подготовить для работы с Termit СУБД (проще всего PostgreSQL) и каталог LDAP (в версии 2.1 поддерживается только AD/Samba DC/Ред АДМ)
Схема развертывания
Наша команда подготовила вот такую архитектуру для взаимодействием со смежными системами:

Обратите внимание, что в данном случае брокер только один. В реальности для обеспечения отказоустойчивости их должно быть несколько. Но работать будет и без резервирования.
Также нужно учитывать, что Termit использует информацию о пользователях, группах и их связи из LDAP-каталогов. Данная информация копируется из LDAP при синхронизации. В нашем примере, чтобы все работало в домене, было заранее создано подразделение termitusers, которое синхронизируется с Termit. Данное подразделение объединяет пользователей, имеющих доступ к системе Termit (то есть фактически может пользоваться «безопасным интернетом»).
Синхронизация подразделения с Termit формирует динамическую и управляемую систему доступа, где изменения в членстве группы могут отражаться на доступе к ресурсам. Такой подход позволяет управлять правами доступа централизованно — этого как раз часто требуют безопасники при развертывании подобных решений.
Установка Termit: 11 шагов
Эта часть статьи будет более технической и представляет собой how-to по практической настройке терминальных серверов. Читайте дальше, если хотите повторить опыт развертывания Termit 2.1.
СПОЙЛЕР 1. Подготовка базы данных
Подключаемся на машину с ролью базы данных (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. Cоздаем пустую базу данных командой
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 с помощью команды
sudo systemctl restart postgresql-15.service

СПОЙЛЕР 2. Установка брокера
Подключаемся на машину с ролью брокера (FQDN машины – orion-br.termit.lab). Для установки брокера выполняем следующие шаги:
-
Копируем дистрибутив на сервер, распаковываем и проверяем права на выполнение установочного скрипта с помощью команды ls -la. Должно быть назначено право на исполнение;

-
При необходимости выдаем права на запуск скрипта с помощью команды
chmod +x ./install.sh
-
Запускаем установочный скрипт с помощью команды
sudo ./install.sh install




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

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

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

-
Появляется вариант подключения существующей или создания новой базы данных. Выбираем интересующий нас вариант в зависимости от предварительной настройки базы данных. Я выберу первый вариант.

-
Указываем FQDN адрес базы данных “orion-db.termit.lab”, порт 5432, имя ранее созданной БД, пользователя и пароль от БД.



После завершения инсталляции для подтверждения успешной операции в браузере в адресной строке вводим адрес брокера: https://orion-br.termit.lab. В появившемся окне аутентификации указываем логин «admin» и пароль «admin» от учетной записи по умолчанию.

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

СПОЙЛЕР 3. Установка на терминальные серверы
Выбранная архитектура предполагает использование нескольких терминальных серверов. Я расскажу, какие шаги нужно пройти для настройки одного из них. Далее аналогично этим шагам происходит настройка остальных серверов.
Подключаемся на первую машину с ролью терминального сервера (FQDN машины – orion-nd01.termit.lab).
Для установки на терминальный сервер выполним следующие шаги:
-
Устанавливаем Java 11 с помощью команды:
sudo dnf install java-11-openjdk


-
Изменяем версию Java, используемую по умолчанию, с помощью команды
sudo alternatives —config java
Так как нам требуется версия 11, указываем номер 2:

-
Устанавливаем компоненты X2Go server на терминальный сервер с помощью команды:
sudo dnf install x2goserver-xsession x2goserver-fmbindings x2goserver-common x2goserver x2goagent -y

-
Вводим терминальный сервер в домен командой:
sudo join-to-domain.sh -d termit.lab -n orion-nd11 -u admin -p Ori0n —ou «OU=TermitComputers,DC=termit,DC=lab» -y

СПОЙЛЕР 4. Настройка LDAP
Для настройки LDAP выполним следующие действия:
-
В браузере, в адресной строке вводим адрес брокера https://orion-br.termit.lab.
-
Для аутентификации в Termit вводим данные для входа в окне аутентификации:
-
Учетная запись — admin
-
Пароль — admin

-
В левом меню выбираем раздел Настройки — Настройки LDAP и нажимаем редактировать.
-
Выбираем «LDAP используется».
-
Задаем параметры для подключения:
-
Базовое уникальное имя. Для домена termit.lab: «OU=termitusers,DC=termit,DC=lab»;
-
Имя пользователя. Для домена termit.lab: «CN=termitsvc,OU=termitusers,DC=termit,DC=lab»;
-
Пароль — пароль от сервисной учетной записи;
-
Период синхронизации (минуты).

Нажимаем «Далее».
-
Чтобы добавить сервер LDAP, нажимаем «+». Указываем адрес(можно FQDN), порт и протокол

Выбираем «Сохранить», «Далее».
-
На вкладке «Подтверждение информации» проверяем информацию о сервере LDAP и соединение.
При успешном соединении появится сообщение «Проверка соединения прошла успешна».

Нажимаем «Сохранить».
Состояние синхронизации LDAP и Termit можно в любой момент уточнить в разделе «Журнал событий».
СПОЙЛЕР 5. Настройка ролей
В Termit можно настроить следующие роли:
-
Администраторы могут полностью контролировать систему, например, управлять серверами, пользователями и приложениями.
-
Служба поддержки может просматривать настройки, информацию о серверах и сессиях в разделе «Обзор», журнал событий и список сессий, а также завершать сессии и блокировать пользователей. Выполняет функцию L1 технической поддержки.
-
Пользователи обладают учетными записями, с помощью которых они имеют доступ к Termit. Только пользователи могут запускать приложения.
Для настройки ролей выполняем следующие действия:
1. В левом меню выбираем раздел «Настройки».
2. Переходим на вкладку «Роли».

3. Наводим курсор на «Администраторы», нажимаем «Редактировать», затем «+».
4. Добавляем группы из каталога пользователей для роли администраторов. Можно добавить несколько групп. Поддерживаются вложенные группы.

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

СПОЙЛЕР 6. Создание сервера
Для создания сервера выполняем следующие действия:
-
На «Портале администрирования» в левом меню выбираем раздел «Серверы».
-
В правом верхнем углу нажимаем «Новый сервер».

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

-
Нажимаем «Далее».
-
На вкладке «Группа терминальных серверов» группу выбирать не нужно, так как она еще не создана. Нажимаем «Далее».
-
На вкладке «Подтверждение информации» проверяем информацию о сервере и нажимаем «Создать».
-
Чтобы установить агент на терминальный сервер, выполняем указанный скрипт в консоли терминального сервера. Агент будет установлен и зарегистрирован на терминальном сервере.
В этом скрипте содержится секрет, используемый для аутентификации агента на сервере только во время установки. В случае потери скрипта необходимо удалить сервер и заново развернуть его.
Созданный сервер появился в списке.

Далее создадим группу серверов.
СПОЙЛЕР 7. Создание группы серверов
Для создания группы серверов выполните следующие действия:
-
В левом меню выбираем раздел «Группы серверов».
-
В правом верхнем углу нажимаем «Новая группа».

-
На вкладке «Основные настройки»:
-
Имя — указываем название группы.
-
Тип — выбираем операционную систему Linux.
-
(Опционально) Описание — описание группы серверов.

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

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

Нажимаем «Далее».
-
На вкладке “Таймауты сессий” оставим всё по умолчанию.

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

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

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

СПОЙЛЕР 8. Публикация приложения
Для публикации приложения выполняем следующие действия:
-
В левом меню выбираем раздел «Приложения».
-
Нажимаем «Добавить приложение».

-
На вкладке «Основные настройки» задаем параметры:
-
Имя — название приложения.
-
(Опционально) Наименование у пользователя — название приложения, которое будет отображаться у пользователя.
-
Операционная система (Linux/Windows)
-
Тип — выбираем «Приложение».
-
Команда для запуска — команда для запуска приложения.
-
(Опционально) Версия — версия приложения.
-
(Опционально) Описание — описание приложения.

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

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

Нажимаем «Сохранить», «Далее».
-
На вкладке «Подтверждение информации» проверяем информацию о приложении и нажимаем «Создать».
СПОЙЛЕР 9. Установка SSL-сертификата
Чтобы избавиться от вывода предупреждения о незащищенном подключении к Termit, необходимо импортировать сертификат и закрытый ключ в настройках брокера. Сертификат. разумеется, следует использовать только от доверенного центра сертификации.

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

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

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

СПОЙЛЕР 10. Установка клиента
Для установки клиента выполним следующие действия:
-
В браузере в адресной строке вводим адрес, по которому доступен Termit — https://orion-br.termit.lab
-
Вводим имя пользователя и пароль доменной учетной записи:

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

СПОЙЛЕР 11. Установка сертификата на клиент
Для успешного подключения к Termit необходимо, чтобы используемый SSL-сертификат был добавлен в список доверенных на клиенте. Для этого выполняем следующие шаги:
-
Копируем файл корневого сертификата в каталог /etc/pki/ca-trust/source/anchors/ с помощью команды:
sudo cp %Путь_к_сертификату% /etc/pki/ca-trust/source/anchors/
Где: %Путь_к_сертификату% — полный путь к файлу сертификата в формате PEM.
-
Чтобы применить изменения, выполняем команды:
sudo update-ca-trust force-enable
sudo update-ca-trust extract

СПОЙЛЕР 12. Проверка работоспособности
Чтобы проверить, что у нас все работает, нужно зайти на клиентскую машину и проверить доступ к интернет-ресурсу orionsoft.ru. Используем браузер напрямую:

Как видите, ничего не работает — но так и должно быть!
Теперь проверяем доступ к тому же ресурсу orionsoft.ru через опубликованный в Termit браузер, для этого:
-
В десктопном приложении Termit вводим адрес брокера без http(s).

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

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

-
Открывается опубликованный браузер, где мы переходим на ресурс orionsoft.ru:

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

Кстати, раз вы дочитали до конца, значит вопрос применения СТД для вас актуален! И на случай, если вы хотите узнать больше о новшествах в Termit, 22 апреля мы проводим вебинар по релизу Termit 2.1. Мы будем подробно говорить о поддержке Windows-серверов, переподключении к терминальной сессии и других функциях в новой редакции ПО. Демонстрация работы и Q&A тоже включены в меню. Всех желающих ждем по ссылке, а если у вас есть какие-то мысли о Termit уже сейчас, давайте обсудим их в комментариях!
ссылка на оригинал статьи https://habr.com/ru/articles/808699/
Добавить комментарий