Тупиковая машина или SSH-Proxy

Как настроить «тупиковую машину» с помощью SSH-прокси? Разбираем создание инфраструктуры для безопасного доступа без выхода в интернет. Идея подходит для минимизации рисков ИБ, предоставления ограниченного доступа студентам и внешним пользователям.
Идея в стадии разработки и применение в проде пока нежелательно

Уровень статьи средне-сложный. Я не буду объяснять, как завести пользователя, как прописать ему оболочку, как настроить аутентификацию по ключам. Информации об этом валом.

Сегодня мы рассмотрим как сделать «тупиковую машину». Под ней я понимаю машину, попасть на которую можно через интернет по ssh, но на самой этой машине интернета нет.

Заинтриговал? Мозг немного взорвался? Короче, делаем ssh-прокси.


Для чего это нужно?

Это можно использовать для раздачи доступа сторонним пользователям для управления ресурсами внутри сети, для студентов, работающих на удалёнке. (студенты IT — самые агрессивные пользователи).

Короче для минимизации рисков информационной безопасности. Скажу сразу, это не панацея. Инфу/файлы можно таскать через буффер обмена. Но много информации так не передашь.

Поехали!

Понадобится 2 машины: Бастионная (Jump-сервер, ssh-прокси) — машина, которая торчит открытым портом ssh в интернет.

И Тупиковая — машина (возможно виртуалка), с открытым в локалку портом ssh, на которой будет работать пользователь. И у которой нет доступа в инет (закрыт на периметровом маршрутизаторе. Или не прописаны шлюзы.

Основное условие у пользователя не должно быть root, а то сменит IP/MAC, пропишет шлюзы…). (допустим ее локальный ip 10.10.10.10).

С Бастионной машины должен быть доступ к Тупиковой по ssh, внутри локалки.

НА БАСТИОННОЙ МАШИНЕ. (аутентификация по ключам уже настроена, ssh защищена от быстрого перебора, для этой группы пользователей запрещен проброс портов)

  1. Заводим пользователя, например, Tagd83j6 с паролем >=20 символов (не пригодится)
  2. Добавляем публичный ключ Пользователя. (Он обычно с парольной фразой) в ~/.ssh/authorized_keys
  3. Генерим ключ без пароля для доступа к Тупиковой машине. (лучше ed25519).
  4. Домашней папке Tagd83j6 создаем файл типа shell10.sh (555 root:root)

set -o errexit
set -o nounset
set -o pipefail
ssh $USER@10.10.10.10 2>/dev/null

sudo usermod -s /home/Tagd83j6/shell10.sh Tagd83j6


НА ТУПИКОВОЙ МАШИНЕ (аутентификация по ключам уже настроена)

  1. Заводим пользователя Tagd83j6 с паролем >=20 символов (не пригодится)
  2. добавляем публичный ключ(с Бастионной машины. п3) в ~/.ssh/authorized_keys

Все. Теперь, если на Бастионной машине от root набрать

su Tagd83j6


Сразу должны попасть на Тупиковую машину. Собственно все.

Аутентификация пользователя производится на Бастионной машине!!!

Мнение эксперта
Роман Шубин
Роман Шубин
CEO & CTO, действующий девопс-инженер в «Цифровой улей»
Задать вопрос
При подключении к Бастионной машине нас сразу перебрасывает на Тупиковую. На ней есть локалка, но нет интернета.

Вопросы, критика, плюсики приветствуется.

Комментарии