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

Что такое 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 возможны рассинхроны.
План работы
- Установить Teleport из официального репозитория.
- Сгенерировать/подготовить TLS сертификаты и DNS.
- Сконфигурировать Teleport (teleport.yaml) и запустить сервис.
- Открыть нужные порты в firewall (firewalld).
- Создать пользователя с ролями и включить 2FA.
- Присоединить узлы: автоматически через веб‑дэшборд и вручную через token/ca_pin.
- Безопасная эксплуатация: отключение прямого 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 станет доступен.

Установите пакет:
sudo dnf install teleport
Бинарники устанавливаются в /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 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 добавьте блок 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Убедитесь, что сервис активен и включён при старте.

Откройте в 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 настроены корректно, вы увидите страницу входа.

Совет: если используется обратный прокси или облачная сеть, проверьте проброс портов и 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.

Важно: не теряйте резервную копию 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 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 и запустит сервис.

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

Проверка из CLI (на teleport‑rocky):
sudo tctl nodes lsПодключение к client1 через tsh:
tsh ssh rocky@client1
Ручное добавление узла (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
Веб‑интерфейс также покажет новый узел.

Проверки перед отключением прямого 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 для добавления узла вручную
- Получить ca_pin и сгенерировать токен на auth‑сервере.
- На клиенте: открыть порты 3021/3022/3025.
- Установить пакет teleport и добавить secure_path.
- Создать /etc/teleport.yaml с token_name, proxy_server и ca_pin.
- Запустить и включить сервис systemctl.
- Проверить регистрацию узла через 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)
- Если после отключения SSH у вас потерян доступ: немедленно подключитесь к консоли провайдера (VNC/serial) и восстановите SSHd.
- Если Teleport auth упал — переключитесь на запасной экземпляр Auth (если настроено HA) или восстановите из снапшота.
- Если токены скомпрометированы — отозвать токены, пересоздать и переинициализировать 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.
- Внедрите аудит и мониторинг.
Спасибо за внимание — применяйте методично и проверяйте каждую стадию в тестовом окружении перед продакшном.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента