Компания Gravitational объявила о доступности нового свободного SSH-пакета Gravitational Teleport (Teleport), предлагающего клиент и сервер SSH, оптимизированные для упрощения работы персонала, обслуживающего кластеры с большим числом узлов. Код проекта написан на языке Go и распространяется под лицензией Apache 2.0. Реализация SSH обратно совместима с OpenSSH и построена с использованием библиотеки Golang SSH.


Gravitational Teleport

Teleport пытается автоматизировать работу и повысить безопасность инфраструктур, в которых группам людей требуется доступ к различным серверам в кластере. Вместо применяемой в OpenSSH аутентификации по ключам, чтобы избежать необходимости копирования ключа каждого пользователя на узлы, в Teleport используются централизованные серверы аутентификации, выполняющие функции локального удостоверяющего центра (CA). При успешной аутентификации, для обеспечения входа сервер аутентификации генерирует временный сертификат, заверенный цифровой подписью CA. Достоверность узлов также подтверждается при помощи сертификата, подписанного CA.


Помимо проверки сертификата при каждом входе обязательно применяется двухфакторная аутентификация, требующая подтвердить намерение входа альтернативным путём (поддерживается Google Apps и клиенты OAuth2). Не допускается прямое обращение к конечным узлам, для доступа требуется подключение только через специальный прокси.


Другие особенности Teleport:

  • Помимо традиционного интерфейса командной строки имеется возможность входа через HTTPS с эмуляцией терминала в web-браузере
  • Поддержка функций аудита и повторения типовых операций - содержимое SSH-сеансов может записываться и при необходимости воспроизводиться на других хостах
  • Режим совместного решения проблем, при котором несколько человек могут совместно использовать один сеанс SSH
  • Автоматическое определение доступных рабочих серверов и контейнеров Docker в кластерах с динамическим присвоением имён хостам
  • Поддержка обратного туннелирования для подключения к кластерам, ограждённым межсетевым экраном
  • Возможность определения меток для наглядного разделения узлов кластера
  • Поддержка блокировки доступа после нескольких неудачных попыток входа
  • Сопоставление пользователей с логинами на конечных узлах осуществляется через специальные списки маппинга
  • Для подсоединения к хосту требуется указать два имени - имя кластера и имя узла в кластере. Teleport ориентирован на управление кластерами, а не отдельными серверами: для каждого пользователя и хоста определяется принадлежность к кластеру
  • Узлы подключаются к кластеру через определение статичестких или генерацию динамических токенов, которые при желании можно отозвать для запрета входа на данный узел
  • Для подсоединения к серверам Teleport внутри кластера можно использовать обычный клиент OpenSSH (требуется копирование ключей)
  • Успешно пройден аудит безопасности кода, заказанный в независимой проверяющей компании

Источник opennet.ru