Защита 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