[Информационная безопасность, Системное администрирование, IT-инфраструктура, Серверное администрирование] Как настроить SSH-Jump Server

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
30-Ноя-2020 13:30


Для работы с облачной инфраструктурой рекомендуется создавать SSH Jumpstation. Это позволяет повысить безопасность и удобство администрирования серверов. В этой статье мы расскажем, как настроить единую точку входа для подключений по ssh – SSH Jump Server. Для реализации выбраны два проекта с открытым исходным кодом.
  • Традиционный подход с использованием OpenSSH. Преимущество в том, что на ваших Linux-серверах уже предустановлены необходимые пакеты OpenSSH
  • Использование альтернативного opensource-проекта Teleport
Оба этих сервера просты в установке и настройке, бесплатны, имеют открытый исходный код и представляют собой демоны Linux с одним бинарником.Что такое SSH Jump Server?SSH Jump Server — это обычный сервер Linux, доступный из интернета, который используется в качестве шлюза для доступа к другим машинам Linux в частной сети с использованием протокола SSH. Иногда SSH Jump Server также называют jump host или bastion host. Назначение SSH Jump Server — быть единственным шлюзом для доступа к вашей инфраструктуре, уменьшая размер потенциальной поверхности атаки. Наличие выделенной точки доступа SSH также упрощает ведение сводного журнала аудита всех SSH подключений.Почему бы не использовать термин SSH-proxy? Отчасти по историческим причинам. В первые дни использования SSH пользователям приходилось подключаться по SSH к Jump Server, а оттуда им приходилось снова вводить ssh, чтобы «перейти» к хосту назначения. Сегодня это делается автоматически, и Teleport фактически использует термин SSH-proxy для описания этой функции.Настройка SSH Jump ServerОдной из хороших практик информационной безопасности будет использование выделенного SSH Jump-сервера, то есть отказаться от размещения на нём какое-либо другого общедоступного программного обеспечения. Кроме того, нужно запретить пользователям напрямую входить на jump-сервер. Вот парочка причин:
  • Чтобы предотвратить непреднамеренное обновление конфигурации jump-сервера
  • Чтобы исключить возможность использования jump-сервера для других задач
Также неплохо изменить порт TCP по умолчанию на сервере перехода SSH с 22 на другой.Давайте рассмотрим настройку сервера перехода SSH с использованием двух проектов с открытым исходным кодом. Начнём с OpenSSH, самого распространённого варианта.Но сначала давайте введём некоторые имена, которые будут использоваться в примерах ниже:
  • Домен организации: example.com
  • DNS-имя jump-сервера организации будет proxy.example.com
Также предполагается, что proxy.example.com — это единственная машина в локальной сети организации, доступная из Интернета.OpenSSHЭтот пакет SSH-сервера по умолчанию входит в состав большинства дистрибутивов Linux, и есть почти 100% вероятность, что он у вас уже установлен. Если у вас есть доступ к jump-серверу proxy.example.com, вы можете получить доступ к другим серверам в локальной сети за этим NAT с помощью -J флага в командной строке:$ ssh -J proxy.example.com 10.3.3.1В приведённом примере 10.3.3.1 – это адрес конечной станции в локальной сети, к которой вы подключаетесь. Выглядит довольно просто. Чтобы не печатать в командной строке параметры -J proxy.example.com, вы можете обновить конфигурацию SSH на вашем клиенте в файле ~/.ssh/config следующим образом:
Host 10.2.2.*
    ProxyJump proxy.example.com
Теперь, когда пользователь вводит ssh 10.3.3.1, SSH-клиент даже не пытается разрешить адрес 10.3.3.1 локально, а вместо этого устанавливает соединение c proxy.example.com, которое перенаправляет его на 10.3.3.1 в своем локальном сегменте.Теперь нужно немного усилить конфигурацию безопасности jump-сервера, отключив интерактивные сеансы SSH на jump-сервере для обычных пользователей, но оставив их включёнными для администраторов. Для этого необходимо обновить конфигурацию sshd, обычно она лежит в файле /etc/ssh/sshd_configсо:
# Do not let SSH clients do anything except be forwarded to the destination:
PermitTTY no
X11Forwarding no
PermitTunnel no
GatewayPorts no
ForceCommand /sbin/nologin
Приведённый выше пример будет работать для Debian и его производных, советуем проверить наличие файла /sbin/nologin.Это конфигурация будет работать, если на jump-сервере есть учётные записи для всех пользователей SSH, что не очень удобно. Вместо этого рассмотрите возможность создания отдельной учётной записи на jump-сервере, предназначенной для перенаправляемых пользователей ssh. Назовём эту учётную запись jumpuser и обновим конфигурацию ssh-сервера:
Match User jumpuser
  PermitTTY no
  X11Forwarding no
  PermitTunnel no
  GatewayPorts no
  ForceCommand /usr/sbin/nologin
И пользователям нужно будет обновить конфигурацию своего клиента SSH в файле ~/.ssh/config:
Host 10.2.2.*
    ProxyJump jumpuser@proxy.example.com
Для получения дополнительной информации по конфигурированию SSH для вашей конкретной ситуации, обратитесь к man ssh_config и man sshd_config.Надо заметить, что описанная выше настройка работает только когда общедоступные ключи SSH правильно распределены не только между клиентами и jump-сервером, но также между клиентами и серверами назначения.Teleport Teleport — это SSH-сервер и клиент, который был выпущен в 2016 году. Teleport ориентирован на работу с кластерами и большим количеством узлов.
  • Он настаивает на использовании прокси-сервера SSH по умолчанию, а его прокси-сервер SSH имеет веб-интерфейс, позволяющий пользователям подключаться к SSH с помощью браузера.
  • В отличие от традиционных серверов SSH, Teleport устраняет необходимость в ведении «инвентаризации» серверов, поскольку предлагает оперативный самоанализ, то есть вы можете увидеть все онлайн-серверы за прокси, как показано на скриншоте:

Помимо современных функций прокси, Teleport предлагает несколько преимуществ по сравнению с традиционным SSH:
  • Teleport не использует SSH-ключи и вместо этого по умолчанию использует более безопасные и гибкие сертификаты SSH. Это устраняет необходимость в управлении ключами и сильно упрощает настройку SSH-серверов.
  • Teleport поддерживает другие протоколы в дополнение к SSH, поэтому тот же jump-сервер можно использовать для доступа к другим ресурсам за NAT, таким как кластеры Kubernetes или даже внутренние приложения через HTTP(s).
  • Teleport не полагается на пользователей Linux для аутентификации. Вместо этого он поддерживает отдельную базу данных пользователей или может интегрироваться с помощью единого входа с другими поставщиками аутентификации, такими как Github, Google Apps, или корпоративными опциями, такими как Okta и Active Directory.
Teleport всегда поставляется с прокси (то есть то же самое, что и jump-сервер), и нет необходимости в специальных инструкциях по его настройке. Скачать его можно здесь.Другие особенности Teleport:
  • Помимо традиционного интерфейса командной строки имеется возможность входа через HTTPS с эмуляцией терминала в web-браузере
  • Поддержка функций аудита и повторения типовых операций. Содержимое SSH-сеансов может записываться и при необходимости воспроизводиться на других хостах
  • Режим совместного решения проблем, при котором несколько человек могут совместно использовать один сеанс SSH
  • Автоматическое определение доступных рабочих серверов и контейнеров Docker в кластерах с динамическим присвоением имён хостам
  • Поддержка обратного туннелирования для подключения к кластерам, ограждённым межсетевым экраном
  • Возможность определения меток для наглядного разделения узлов кластера
  • Поддержка блокировки доступа после нескольких неудачных попыток входа
  • Сопоставление пользователей с логинами на конечных узлах осуществляется через специальные списки маппинга
  • Для подсоединения к хосту требуется указать два имени — имя кластера и имя узла в кластере. Teleport ориентирован на управление кластерами, а не отдельными серверами. Для каждого пользователя и хоста определяется принадлежность к кластеру
  • Узлы подключаются к кластеру через определение статичестких или генерацию динамических токенов, которые при желании можно отозвать для запрета входа на данный узел
  • Для подсоединения к серверам Teleport внутри кластера можно использовать обычный клиент OpenSSH (требуется копирование ключей)
  • Успешно пройден аудит безопасности кода, заказанный в независимой проверяющей компании
ЗаключениеИтак, мы рассказали, как настроить SSH-jump сервер с помощью двух проектов с открытым исходным кодом: OpenSSH и Teleport. Но какой  же выбрать?Используйте OpenSSH, если:
  • Количество серверов и/или пользователей в вашей организации невелико
  • Вам нужна быстрая настройка jump-сервера, и у вас не так много времени, чтобы изучить новые технологии
Используйте Teleport, если:
  • Ваш парк серверов или размер вашей команды растёт
  • Вам необходимо подключиться к серверам, расположенным «в дикой природе», то есть не ограничиваться только локальной сетью.
  • У вас есть пара часов, чтобы поиграться изучить новый инструмент
Что ещё интересного есть в блоге Cloud4Y→ В тюрьму за приложение→ Детям о Кубернете, или приключения Фиппи в космосе→ Определённо не Windows 95: какие операционные системы поддерживают работу в космосе?→ Рассказываем про государственные защищенные сервисы и сети→ Внутри центра обработки данных Bell Labs, 1960-еПодписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем не чаще двух раз в неделю и только по делу.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_informatsionnaja_bezopasnost (Информационная безопасность), #_sistemnoe_administrirovanie (Системное администрирование), #_itinfrastruktura (IT-инфраструктура), #_servernoe_administrirovanie (Серверное администрирование), #_openssh, #_teleport, #_linux, #_ssh, #_blog_kompanii_cloud4y (
Блог компании Cloud4Y
)
, #_informatsionnaja_bezopasnost (
Информационная безопасность
)
, #_sistemnoe_administrirovanie (
Системное администрирование
)
, #_itinfrastruktura (
IT-инфраструктура
)
, #_servernoe_administrirovanie (
Серверное администрирование
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 10-Май 09:21
Часовой пояс: UTC + 5