Гид по технологиям

Teleport на Rocky Linux 9 — установка и защита плоскости доступа

• 11 min read • Инфраструктура • Обновлено 21 Nov 2025
Teleport на Rocky Linux 9 — установка и защита
Teleport на Rocky Linux 9 — установка и защита

Схема Teleport: единая плоскость доступа к серверам, Kubernetes и приложениям

Что такое Teleport

Teleport — это open‑source решение как «плоскость доступа» (access plane) для глобальной инфраструктуры. Коротко: это прокси, привязанное к вашей системе идентификации, которое обеспечивает безопасный доступ к SSH‑узлам, кластерам Kubernetes, базам данных, веб‑приложениям и рабочим столам через единый центр управления. Ключевые свойства:

  • Нулевое доверие (zero‑trust): явная аутентификация и авторизация перед доступом к ресурсам.
  • Identity‑native: работает с существующими провайдерами идентификации (OIDC, SAML и пр.).
  • Центральное управление доступом и аудит всех сессий.

Краткое определение: Teleport — это прокси доступа и контроллер доступа, который централизует аутентификацию, авторизацию и аудит для распределённой инфраструктуры.

Важно: Teleport прошёл публичные аудиты безопасности (например, Cure53, Doyensec) и используется в продакшне крупными компаниями.

Основные понятия (1‑строчная глоссарий)

  • Proxy: компонент, принимающий внешние подключения (HTTPS/SSH) и перенаправляющий их в кластер.
  • Auth Service: центральный сервис, выдающий сертификаты и токены.
  • Node: сервер/узел, на который Teleport устанавливается как агент.
  • tsh: клиент Teleport для пользователей (авторизация и доступ через CLI).
  • tctl: административный CLI для управления Auth Service и ресурсами.

Требования перед началом

Перед установкой убедитесь в следующем:

  • Сервер с Rocky Linux 9, на котором будет Auth/Proxy. Пример в инструкции: hostname teleport‑rocky, IP 192.168.5.100.
  • Непользователь root с sudo правами.
  • Доменное имя, указывающее на IP сервера (в примере teleport.howtoforge.local).
  • SSL‑сертификаты (например, Let’s Encrypt через Certbot) или путь к своим сертификатам.
  • SELinux в режиме permissive (рекомендация на время настройки; для продакшна лучше настроить политки).
  • Приложение 2FA: KeepassXC (desktop), Aegis (Android) или Google Authenticator (iOS).
  • Дополнительные серверы/узлы, которые вы планируете присоединить к кластеру (в примере client1 и client2).

Совет по локали: убедитесь, что время и часовой пояс сервера настроены корректно (timedatectl), иначе при выдаче сертификатов и 2FA возможны рассинхроны.

План работы

  1. Установить Teleport из официального репозитория.
  2. Сгенерировать/подготовить TLS сертификаты и DNS.
  3. Сконфигурировать Teleport (teleport.yaml) и запустить сервис.
  4. Открыть нужные порты в firewall (firewalld).
  5. Создать пользователя с ролями и включить 2FA.
  6. Присоединить узлы: автоматически через веб‑дэшборд и вручную через token/ca_pin.
  7. Безопасная эксплуатация: отключение прямого SSH, политики доступа, аудит.

Установка Teleport на Rocky Linux 9

Добавим официальный репозиторий Teleport и установим пакет.

Выполните на сервере teleport‑rocky:

sudo dnf config-manager --add-repo https://rpm.releases.teleport.dev/teleport.repo
sudo dnf repolist

После этого репозиторий Teleport станет доступен.

Экран: добавлен репозиторий Teleport

Установите пакет:

sudo dnf install teleport

Экран: установка пакета teleport через dnf

Бинарники устанавливаются в /usr/local/bin. Проверьте содержимое:

ls /usr/local/bin/

Вы должны увидеть: teleport, tsh, tctl и прочие утилиты Teleport.

Добавьте /usr/local/bin в secure_path sudoers, чтобы команды Teleport работали с sudo:

echo "Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin" > /etc/sudoers.d/secure_path
sudo chmod 440 /etc/sudoers.d/secure_path

Проверьте версии:

sudo teleport version
sudo tsh version
sudo tctl version

Ожидаемый результат: информация о версии Teleport (в примере — v11).

Проверка версий Teleport

После установки можно перейти к инициализации кластера.

Конфигурация Teleport Server и включение веб‑сервиса

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

  • Домен: teleport.howtoforge.local
  • Сертификаты Let’s Encrypt в /etc/letsencrypt/live/teleport.howtoforge.local/

Инициализируем конфигурацию Teleport (замените значения на свои):

sudo teleport configure -o file \
--cluster-name=teleport.howtoforge.local \
--public-addr=teleport.howtoforge.local:443 \
--cert-file=/etc/letsencrypt/live/teleport.howtoforge.local/fullchain.pem \
--key-file=/etc/letsencrypt/live/teleport.howtoforge.local/privkey.pem

Команда создаст /etc/teleport.yaml.

Инициализация конфигурации Teleport

Для включения встроенного веб‑приложения Teleport добавьте блок app_service в /etc/teleport.yaml:

app_service:
  enabled: yes
  apps:
  - name: "teleport-webapp"
    uri: "http://localhost:9000"
    public_addr: "teleport.howtoforge.local"

Сохраните конфигурацию и запустите сервис:

sudo systemctl start teleport
sudo systemctl enable teleport
sudo systemctl status teleport

Убедитесь, что сервис активен и включён при старте.

Статус сервиса teleport

Откройте в firewall порты, которые использует Teleport (HTTPS и порты сервисов кластера):

sudo firewall-cmd --add-port={443/tcp,3021/tcp,3022/tcp,3025/tcp,3028/tcp} --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Проверка веб‑интерфейса: откройте https://teleport.howtoforge.local/ — если TLS и DNS настроены корректно, вы увидите страницу входа.

Страница входа Teleport

Совет: если используется обратный прокси или облачная сеть, проверьте проброс портов и NAT, а также корректность public_addr в конфиге.

Создание Teleport пользователя с 2FA

Перед созданием пользователя убедитесь, что у вас установлено приложение 2FA (KeepassXC/Aegis/Google Authenticator).

Создадим административного пользователя teleport-admin с ролями editor и access и разрешёнными логинами root, rocky и ec2-user (логины должны существовать на целевых узлах):

sudo tctl users add teleport-admin --roles=editor,access --logins=root,rocky,ec2-user

Команда вернёт приглашение‑ссылку. Перейдите по ней в браузере, нажмите GET STARTED и задайте имя пользователя и пароль. Затем отсканируйте QR‑код в приложении 2FA и введите OTP.

Создание пользователя в веб‑интерфейсе

После успешной регистрации вы попадёте в дэшборд Teleport.

Дашборд Teleport

Важно: не теряйте резервную копию seed‑ссылки и настройки 2FA; предусмотрите процедуру восстановления доступа.

Управление кластером через CLI

Клиент tsh предназначен для пользователей (non‑root) — аутентификация и доступ к ресурсам. tctl — для административных задач и работы с Auth Service (требует sudo/root).

Пример: переключитесь на non‑root пользователя (rocky) и выполните вход:

su - rocky

tsh login --proxy=teleport.howtoforge.local --user=teleport-admin

Введите пароль и OTP. После успешной аутентификации просмотр статуса:

tsh status

Список хостов/узлов:

tsh ls

Список приложений, опубликованных через app_service:

tsh apps ls

Пример подключения к узлу через Teleport (вместо прямого SSH):

tsh ssh root@teleport-rocky
# или
tsh ssh rocky@teleport-rocky

Для админа, чтобы посмотреть список нод через tctl:

sudo tctl nodes ls

Список узлов и приложений в Teleport

Добавление узлов в Teleport Cluster

Узел можно добавить двумя способами: автоматически через веб‑дэшборд (инсталляторный скрипт) и вручную (генерация token и настройка /etc/teleport.yaml).

Добавление узла через веб‑дэшборд (client1)

На клиенте откройте firewall для портов Teleport:

sudo firewall-cmd --add-port={3021/tcp,3022/tcp,3025/tcp} --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Перейдите в веб‑интерфейс Teleport → ADD SERVER → выберите SERVERS → NEXT. Скопируйте сгенерированную команду‑инсталлятор и выполните её на client1 с правами root.

Инсталлятор автоматически скачает и установит Teleport, подставит токен и ca_pin, сгенерирует /etc/teleport.yaml и запустит сервис.

Инсталляция клиента через инсталлятор Teleport

После завершения node автоматически зарегистрируется в кластере и появится в дэшборде. Назначьте пользователей, которым разрешён доступ к этому узлу, и выполните тест соединения.

Узел успешно присоединился к кластеру

Проверка из CLI (на teleport‑rocky):

sudo tctl nodes ls

Подключение к client1 через tsh:

tsh ssh rocky@client1

Успешный вход на client1 через Teleport

Ручное добавление узла (client2)

Пошагово: получить ca_pin, создать token, установить Teleport на клиенте и написать /etc/teleport.yaml с параметрами join.

Проверьте CA pin на auth‑сервисе:

sudo tctl status

Скопируйте CA pin (sha256:…).

Создайте временный токен для присоединения узла (TTL 30m):

sudo tctl nodes add --ttl=30m --roles=node | grep "invite token:" | grep -Eo "[0-9a-z]{32}"
sudo tctl token ls

На client2 откройте firewall и установите Teleport как на предыдущем клиенте:

sudo firewall-cmd --add-port={3021/tcp,3022/tcp,3025/tcp} --permanent
sudo firewall-cmd --reload
sudo dnf config-manager --add-repo https://rpm.releases.teleport.dev/teleport.repo
sudo dnf repolist
sudo dnf install teleport

Добавьте /usr/local/bin в secure_path, проверьте версию:

echo "Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin" > /etc/sudoers.d/secure_path
sudo chmod 440 /etc/sudoers.d/secure_path
sudo teleport version

Создайте /etc/teleport.yaml с заполненными полями nodename, token_name, proxy_server и ca_pin. Пример содержимого (замените token и ca_pin на свои):

version: v3
teleport:
  nodename: client2
  data_dir: /var/lib/teleport
  join_params:
    token_name: 30c7156ba908284dbd6000605806f9ab
    method: token
  proxy_server: teleport.howtoforge.local:443
  log:
    output: stderr
    severity: INFO
    format:
      output: text
  ca_pin: sha256:25a6945151b89f10eaf89ac5fe0bd7c88caf77acefce9a4e77edb84737974e4d
  diag_addr: ""
auth_service:
  enabled: "no"
ssh_service:
  enabled: "yes"
  commands:
  - name: hostname
    command: [hostname]
    period: 1m0s
proxy_service:
  enabled: "no"
  https_keypairs: []
  acme: {}

Запустите сервис:

sudo systemctl start teleport
sudo systemctl enable teleport
sudo systemctl status teleport

Проверьте на auth‑сервере:

sudo tctl nodes ls

Подключитесь через tsh:

tsh ssh rocky@client2

Подключение к client2 через Teleport

Веб‑интерфейс также покажет новый узел.

Список клиентских узлов в дашборде

Проверки перед отключением прямого SSH

Если цель — запретить прямой SSH и разрешить доступ только через Teleport, выполните поэтапно:

  • Убедитесь, что все нужные пользователи и их логины (root/rocky/и т.д.) созданы на целевых узлах.
  • Проверьте SSH‑подключение через Teleport (tsh ssh user@node) для каждого пользователя.
  • Проверьте аудит и запись сессий в Teleport.
  • Настройте политики RBAC в Teleport: кто может подключаться к какому узлу и под каким логином.
  • На каждом узле измените /etc/ssh/sshd_config: ограничьте входы (PermitRootLogin no, AllowUsers none) или полностью остановите sshd AFTER подтверждения доступа через Teleport.
  • План отката: сохраните доступ к консоли/работающему облачному консоли/VM‑менеджеру, чтобы восстановить SSH при ошибке.

Критерий приёмки: все пользователи успешно подключаются к узлам только через Teleport, прямой SSH закрыт и проверено восстановление доступа через консоль провайдера.

Практики безопасности и hardening

  • Минимизируйте права ролей: используйте принцип наименьших привилегий.
  • Включите запись сессий и настройте хранилище аудита (логирование на отдельный сервер).
  • Ротация токенов и контроль их TTL.
  • Ограничение доступа по времени (time‑bound access) и MFA обязательна для всех админских аккаунтов.
  • SELinux: по возможности работайте в Enforcing, но настройте политики и проверьте все операции до перевода в Enforcing.
  • TLS: используйте проверенные цепочки сертификатов и следите за автоматическим обновлением (certbot с автоматическим renew).
  • Мониторинг: интеграция Teleport событий с SIEM/ELK/Prometheus для оповещений о подозрительных сессиях.

Риск‑матрица и рекомендации по смягчению

  • Неправильный TLS или DNS → пользователи не смогут зайти в веб‑дэшборд. Смягчение: проверить DNS, использовать ACME/Certbot и тестовый доступ по IP.
  • Просроченный token → узлы не присоединяются. Смягчение: создавайте токены с достаточным TTL или автоматизируйте создание токенов.
  • Потеря 2FA у admin → потеря доступа. Смягчение: резервные коды, второй админ с 2FA, процедура восстановления через офлайн‑ключи.
  • Ошибки в конфиге sshd при отключении SSH → потеря доступа. Смягчение: не отключать SSH до полной проверки Teleport доступа и иметь консоль доступа провайдера.

Роли и чек‑листы (Role‑based checklists)

Администратор Teleport (Setup):

  • Проверить DNS и TLS.
  • Установить Teleport и создать /etc/teleport.yaml.
  • Настроить firewall на auth/proxy.
  • Создать первого admin‑пользователя и настроить 2FA.
  • Проверить вход через tsh и веб‑дэшборд.

SRE / Оператор (Добавление узлов):

  • Убедиться, что nodename и логины существуют на целевом узле.
  • Открыть порты Teleport в firewalld.
  • Применить инсталлятор или ручную конфигурацию с корректным token и ca_pin.
  • Проверить регистрацию узла и тестовую сессию через веб и tsh.

Безопасность / Команда аудита:

  • Включить и проверить запись сессий.
  • Настроить экспорт логов в централизованное хранилище.
  • Провести ролевые проверки доступа (RBAC) и периодический аудит.

Краткий playbook для добавления узла вручную

  1. Получить ca_pin и сгенерировать токен на auth‑сервере.
  2. На клиенте: открыть порты 3021/3022/3025.
  3. Установить пакет teleport и добавить secure_path.
  4. Создать /etc/teleport.yaml с token_name, proxy_server и ca_pin.
  5. Запустить и включить сервис systemctl.
  6. Проверить регистрацию узла через sudo tctl nodes ls.

Частые ошибки и способы устранения

  • Ошибка: “CA pin mismatch” — проверьте ca_pin в конфиге клиента и ca_pin на auth‑сервисе.
  • Ошибка: токен просрочен — создайте новый токен с достаточным TTL.
  • Ошибка: веб‑интерфейс на HTTPS не открывается — проверьте DNS, certbot и путь в teleport.yaml к сертификатам.
  • Ошибка: порты закрыты — проверьте firewalld и сетевой ACL.
  • Ошибка: tsh не показывает узлы — проверьте, что пользователь имеет нужные роли и логины, и что соединение proxy работает.

Примеры команд для отладки:

sudo journalctl -u teleport -f
sudo teleport status
sudo tctl token ls
sudo tctl nodes ls
tsh login --proxy=teleport.howtoforge.local --user=teleport-admin

Когда Teleport не подходит и альтернативы

Teleport хорош для централизации доступа при распределённой инфраструктуре. Однако он может быть избыточен для очень маленьких окружений (1–2 хоста), где простого SSH с ключами достаточно. Альтернативы: OpenVPN/ZeroTier (сеть), bastion host (посредник SSH) или облачные решения типа AWS Session Manager (для AWS). Выбор зависит от требований по аудиту, 2FA и единой точке управления.

Советы по миграции и совместимости

  • Перевод пользователей: настройте роли в Teleport соответствующие текущим unix‑группам.
  • Миграция ключей: Teleport использует сертификаты, поэтому выставляйте политики доступа и проверяйте соответствия логинов.
  • Kubernetes: Teleport может выступать как прокси для k8s — тестируйте kubeconfig и права RBAC отдельно.
  • Локальные особенности: в некоторых локальных сетях нужно согласовать proxy/public_addr и NAT; убедитесь, что корпоративный firewall пропускает HTTPS (443).

Ментальные модели и эвристики

  • «Auth как сердце»: все узлы доверяют Auth Service — защита и резервирование Auth критичны.
  • «Нет прямого доверия»: любой доступ должен проходить через Teleport и проверяться логами.
  • «Малая поверхность атаки»: отключаем прямой SSH только после многоступенчатой проверки.

Критерии приёмки

  • Teleport auth/proxy запущены и доступны по DNS и HTTPS.
  • Как минимум два узла успешно присоединены и доступны через tsh и веб‑интерфейс.
  • Пользователь(и) созданы с 2FA и успешно логинятся.
  • Аудит сессий включён и логи доступны для просмотра.
  • Прямой SSH может быть отключён без потери доступа к управляющему доступу.

1‑строчный глоссарий

  • Auth Service: центральный компонент, выдающий сертификаты.
  • Proxy: публичная точка доступа для клиента.
  • Node: агент Teleport на сервере.
  • tsh: пользовательский CLI.
  • tctl: административный CLI.

Mermaid: принятие решения при добавлении узла

flowchart TD
  A[Нужен новый узел в кластере?] --> B{Доступна GUI‑консоль?}
  B -- Да --> C[Использовать ADD SERVER и инсталлятор]
  B -- Нет --> D[Использовать ручную процедуру: token + ca_pin]
  C --> E[Выполнить тест и назначить пользователи]
  D --> E
  E --> F[Узел зарегистрирован и проверен]

Сценарий отката при неудаче (Incident runbook)

  1. Если после отключения SSH у вас потерян доступ: немедленно подключитесь к консоли провайдера (VNC/serial) и восстановите SSHd.
  2. Если Teleport auth упал — переключитесь на запасной экземпляр Auth (если настроено HA) или восстановите из снапшота.
  3. Если токены скомпрометированы — отозвать токены, пересоздать и переинициализировать join для новых узлов.

Социальная превью подсказка

OG title: Teleport на Rocky Linux 9 — установка и защита
OG description: Пошаговая инструкция по установке Teleport, созданию пользователя с 2FA, и добавлению узлов в кластер. Включены чек‑листы безопасности и runbook.

Короткое объявление (100–200 слов)

Teleport — современное решение для централизованного управления доступом в распределённой инфраструктуре. В этой инструкции мы показали, как развернуть Teleport на Rocky Linux 9: установить пакет из официального репозитория, инициализировать кластер с TLS, включить веб‑дэшборд, создать пользователя с двухфакторной аутентификацией и присоединить два узла — через автoinstaller и вручную через token/CA pin. Включены практические рекомендации по безопасности, чек‑листы ролей, критерии приёмки и runbook на случай неполадок. После выполнения вы сможете централизовать доступ, включить аудит сессий и при желании отключить прямой SSH, оставив Teleport единственным входом в инфраструктуру.


Заключение

Вы установили и настроили Teleport на Rocky Linux 9, создали пользователя с 2FA и добавили две клиентские машины разными способами. Teleport даёт единый источник прав доступа и упрощает аудит и управление доступом. Следуйте чек‑листам безопасности перед отключением прямого SSH и применяйте политику наименьших привилегий.

Короткое резюме:

  • Centralize доступ через Teleport.
  • Обеспечьте 2FA для админов.
  • Добавляйте узлы через GUI или вручную по token/ca_pin.
  • Внедрите аудит и мониторинг.

Спасибо за внимание — применяйте методично и проверяйте каждую стадию в тестовом окружении перед продакшном.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро