SSH туннель через proxychains

Вопрос или проблема

Надеюсь, мой вопрос имеет смысл

Итак, у меня есть JumpServer, который имеет VPN-соединение с другой подсетью, например, 10.x.x.x. Эта подсеть доступна только через JumpServer. Так что я могу подключиться к 10.x.x.x с моего локального компьютера, используя socks-прокси:

  • ssh root@JumpServer -D 9999
  • Добавьте конфигурацию в /etc/proxychains socks5 127.0.0.1 9999, затем proxychains ssh [email protected]

Когда я выполняю proxychains SSH, локальный адрес 10.x.x.x это 192.x.x.x. и я обнаружил несколько хостов

Как мне с моего локального компьютера подключиться к локальному адресу 10.x.x.x

в основном цепочка такая: 127.0.0.1:9999 … 10.x.x.x:22 … 192.x.x.x:PortNumber?

Для этого, вероятно, не нужно использовать proxychains. Ssh имеет опцию “jump proxy” для этого:

ssh -J root@JumpServer [email protected]

И вы можете сделать несколько переходов, если это необходимо:

ssh -J root@JumpServer,[email protected] [email protected]

Вы можете зашифровать это в вашем .ssh/config для удобства (не тестировалось):

192.x.x.x
    Username root
    ProxyJump 10.x.x.x

10.x.x.x
    Username root
    ProxyJump JumpServer

JumpServer
    Username root

Тогда ssh 192.x.x.x должно работать.

Я бы использовал именованный псевдоним в ‘.ssh/config’ в дополнение к вышеуказанному, но это не обязательно:

webserver
    Hostname 192.x.x.x
    Username root
    JumpServer 10.x.x.x

Теперь ssh webserver должно работать.

Ответ или решение

Концепция SSH-туннелирования через proxychains может показаться сложной, но на самом деле это эффективный способ организовать доступ к сетям, которые скрыты за удаленными хостами или шлюзами. Давайте разберемся более подробно в том, как работает эта технология и как ею можно воспользоваться в задаче, представленной выше.

Теория

SSH-туннелирование — это метод, который позволяет зашифровать соединения и направлять трафик через защищенный канал. Это достигается путем использования SSH (Secure Shell), протокола, позволяющего безопасно управлять серверами и передавать данные. Система proxychains, в свою очередь, служит для перенаправления трафика через несколько прокси-серверов.

Основная цель применения SSH-туннелирования через proxychains заключается в том, чтобы предоставить доступ к некоторым сетям или серверам, которые недоступны напрямую из вашей локальной сети. Это может быть необходимо в случаях, когда целевые серверы находятся за фаерволом или требуют, чтобы все соединения проходили через строго определенные точки входа (например, jump servers).

Пример

Рассмотрим вашу ситуацию более подробно. Вы используете JumpServer как шлюз для доступа к подсети 10.x.x.x, подключенной через VPN. Соединение к этой подсети возможно исключительно через JumpServer. Чтобы подключиться к серверу под управлением IP-адреса из подсети 10.x.x.x с вашего локального компьютера, вы изначально создаете сокс-прокси соединение:

  • Командой ssh root@JumpServer -D 9999 вы устанавливаете туннель, через который всё ваше трафик будет идти на шлюз JumpServer как на прокси-сервер.

При настройке proxychains, вы прописываете локальный сокс-прокси сервер и выполняете команду proxychains ssh [email protected], чтобы перенаправить трафик через этот туннель далее к нужному серверу.

Применение

Для более удобного использования и оптимизации работы вам не обязательно использовать proxychains. Вместо этого можно воспользоваться встроенной функциональностью SSH – Option ProxyJump. Этот параметр позволяет автоматически делать "прыжок" через промежуточный сервер или несколько серверов.

Простая команда может выглядеть так:

ssh -J root@JumpServer [email protected]

Для более сложных ситуаций, когда требуется несколько переходов, используется цепочка jump servers:

ssh -J root@JumpServer,[email protected] [email protected]

Эти команды позволяют пропустить этапы установки и настройки proxychains, сделав процесс более прямолинейным и быстрым. Однако чтобы эти команды были удобны в использовании, ещё лучше разместить конфигурацию в файле .ssh/config. Это позволит управлять соединениями без постоянного указания всех промежуточных серверов и параметров:

Host 192.x.x.x
    User root
    ProxyJump 10.x.x.x

Host 10.x.x.x
    User root
    ProxyJump JumpServer

Host JumpServer
    User root

Благодаря этому, команда ssh 192.x.x.x будет работать без необходимости добавлять что-либо еще. Удобно также использовать хост-алиасы в конфигурационном файле для дальнейшего упрощения:

Host webserver
    HostName 192.x.x.x
    User root
    ProxyJump 10.x.x.x

Теперь можно просто использовать команду ssh webserver, чтобы подключиться к нужному серверу.

Вывод

Использование SSH возможности ProxyJump — это более автоматизированный и менее громоздкий способ настройки цепочных соединений через множество серверов, чем использование proxychains. В вашем случае эта технология может значительно упростить процесс подключения к серверам в подсети, доступной через VPN, избавляя вас от необходимости создавать и поддерживать сложные прокси-цепочки вручную.

Таким образом, зная о возможностях SSH ProxyJump, можно эффективно планировать и разворачивать сетевые соединения, не опасаясь проблем с безопасностью или сложностью настройки. Попробуйте интегрировать описанные методы в вашу работу, чтобы упростить и автоматизировать использование удаленных соединений.

Оцените материал
Добавить комментарий

Капча загружается...