Верной дорогой идёте, товарищи…

Источник: оригинал в Telegram

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

Tagd Tagd
Tagd Tagd
Bash Master
Задать вопрос
Сегодня мы рассмотрим как сделать «тупиковую машину». Под ней я понимаю машину, попасть на которую можно через интернет по 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)

#!/bin/bash
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

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

Собственно все.

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

При подключении к Бастионной машине нас сразу перебрасывает на Тупиковую. На ней есть локалка, но нет интернета.

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