Защита TCP-подключения с использованием SSL/TLS
Базовая настройка
TERA поддерживает использование SSL/TLS для шифрования трафика между TERA-клиентом и TERA-сервером. Для работы SSL/TLS требуется выполнение условий:
-
на узле TERA-сервера:
-
должен быть загружен серверный сертификат и закрытый ключ к нему;
-
поскольку в ОС Linux любой доступ к файлу серверного сертификата/ключа должен быть запрещен, то ограничить права доступа:
sudo chmod 400 <путь_к_файлу> -
закрытый ключ может иметь парольную защиту. Для использования ключа нужно преобразовать его к начальному значению (без пароля), например:
openssl rsa -in <путь_к_файлу_ключа.key> -out <путь_к_преобразованному_ключу.key> -
(опционально) могут быть загружены промежуточные сертификаты, которые составляют цепочку доверия с существующими корневыми. Их содержимое можно перечислить в файле
ca-cert.pem;
-
-
на узле TERA-клиента (пользовательской рабочей станции):
-
должен быть загружен и добавлен в доверенные корневой сертификат УЦ, которым подписан серверный сертификат. Если используется самоподписанный серверный сертификат, то в доверенные должен добавляться он.
-
TERA-сервер будет принимать как обычные, так и SSL-подключения (на отдельном TCP-порте) и будет согласовывать использование SSL с каждым клиентом. Режим подключения (защищенный SSL/TLS или незащищенный) обусловлен настройками протокола доставки.
Конфигурация ПО tera-keyagent
Работа с чувствительной информацией (сертификатами и закрытыми ключами) выполняется ПО tera-keyagent (службой tera-keyagent.service), которое:
-
безопасно хранит и предоставляет доступ к SSL-ключам;
-
решает проблему безопасности ключей, когда TERA-сервер вынужден работать в режиме непривилегированного пользователя. ПО tera-keyagent надежно скрывает SSL-ключи в файловой системе от непривилегированного пользователя и предоставляет их по запросу только аутентифицированным процессам.
Надежность сокрытия информации обеспечивается:
-
белым списком процессов: ПО tera-keyagent отдает ключи строго только двум процессам - графическому серверу Xorg (в случае использования ВМ) и GПО x11tera (в случае использования физической машины):
-
/usr/lib/xorg/Xorg; -
/usr/bin/Xorg; -
/usr/libexec/Xorg; -
/usr/bin/x11tera;
-
-
требованием существования абсолютного реального пути к исполняемому файлу, запросившему доступ;
-
требованием принадлежности исполняемого файла суперпользователю (
root); -
получением содержимого SSL-ключей через защищенный механизм
systemd. При этом изменить настройки расположения SSL-ключей может только суперпользователь.
В более ранних версиях Termidesk расположение SSL-ключей указывалось в в конфигурационных файлах 30-teraqxl.xorg.conf и x11tera.conf. Начиная с Termidesk версии 7.0 и появления ПО tera-keyagent расположение ключей передается в сервисном файле /usr/lib/systemd/system/tera-keyagent.service (см. подраздел Параметры запуска службы tera-keyagent).
|
При смене имени узла сертификаты необходимо перевыпустить:
-
если используется ВМ:
sudo /var/lib/dpkg/info/tera-qxl.preinst cert-create
-
если используется физическая машина:
sudo /var/lib/dpkg/info/tera-x11.preinst cert-create