Привет, Хабр! Сегодня мы подробнее поговорим про 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). Для установки брокера выполняем следующие шаги:

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

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

chmod +x ./install.sh

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

sudo ./install.sh install

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

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

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

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

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

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

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

СПОЙЛЕР 3. Установка на терминальные серверы

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

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

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

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

sudo dnf install java-11-openjdk

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

sudo alternatives --config java

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

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

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

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

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 выполним следующие действия:

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

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

  • Учетная запись — admin

  • Пароль — admin

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

  2. Выбираем «LDAP используется».

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

  • Базовое уникальное имя. Для домена termit.lab: "OU=termitusers,DC=termit,DC=lab";

  • Имя пользователя. Для домена termit.lab: "CN=termitsvc,OU=termitusers,DC=termit,DC=lab";

  • Пароль — пароль от сервисной учетной записи;

  • Период синхронизации (минуты).

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

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

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

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

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

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

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

СПОЙЛЕР 5. Настройка ролей

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

  • Администраторы могут полностью контролировать систему, например, управлять серверами, пользователями и приложениями.

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

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

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

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

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

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

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

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

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

СПОЙЛЕР 6. Создание сервера

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

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

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

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

  • Адрес — указываем DNS-адрес терминального сервера

  • Тип — выбираем операционную систему Linux

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

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

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

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

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

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

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

СПОЙЛЕР 7. Создание группы серверов

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

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

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

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

  • Имя — указываем название группы.

  • Тип — выбираем операционную систему Linux.

  • (Опционально) Описание — описание группы серверов.

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

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

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

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

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

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

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

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

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

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

СПОЙЛЕР 8. Публикация приложения

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

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

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

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

  • Имя — название приложения.

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

  • Операционная система (Linux/Windows)

  • Тип — выбираем «Приложение».

  • Команда для запуска — команда для запуска приложения.

  • (Опционально) Версия — версия приложения.

  • (Опционально) Описание — описание приложения.

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

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

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

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

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

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

СПОЙЛЕР 9. Установка SSL-сертификата

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

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

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

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

СПОЙЛЕР 10. Установка клиента

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

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

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

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

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

СПОЙЛЕР 11. Установка сертификата на клиент

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

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

sudo cp %Путь_к_сертификату% /etc/pki/ca-trust/source/anchors/

Где: %Путь_к_сертификату% — полный путь к файлу сертификата в формате PEM.

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

sudo update-ca-trust force-enable

sudo update-ca-trust extract

СПОЙЛЕР 12. Проверка работоспособности

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

Как видите, ничего не работает — но так и должно быть! 

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

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

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

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

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

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

Заключение

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

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

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

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