ssh реверсивный туннель с удаленным IP

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

С сервера 192.168.0.1 я хочу достичь сервера 192.168.0.2 на порту 80.

Сервер 192.168.0.2 может достигать 192.168.0.1, но 192.168.0.1 не может достичь 192.168.0.2 (брандмауэр).

Я настроил обратный прокси, введя следующую команду на 192.168.0.2:

ssh -f -N -T -R0.0.0.0:80:localhost:80 192.168.0.1

Теперь 192.168.0.1 может достигать 192.168.0.2 с помощью следующей команды:

wget localhost:80

Тем не менее, я хочу иметь возможность достигать 192.168.0.2, вводя

wget 192.168.0.2:80

Это возможно, без изменения DNS?

Вам нужно определить GatewayPorts в sshd_config, иначе * или 0.0.0.0 будет привязываться только к интерфейсу локальной петли.

Также обратите внимание, что

Привилегированные порты могут быть перенаправлены только при входе под пользователем root на удаленной машине.

Из страницы руководства для ssh:

По умолчанию, сокеты TCP на сервере будут привязаны только к интерфейсу локальной петли. Это можно переопределить, указав bind_address. Пустой bind_address или адрес ‘*’ указывает на то, что удаленный сокет должен прослушивать все интерфейсы. Указание удаленного bind_address будет успешным только в том случае, если опция GatewayPorts сервера включена (см. sshd_config(5)).

Я испытывал трудности с этой проблемой на Ubuntu 14.04 (я пробовал как GatewayPorts clientspecified, так и GatewayPorts yes в /etc/ssh/sshd_config).

Вместо этого, добавление этого в мой sshd_config сработало:

Match User !root
    GatewayPorts yes

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

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

SSH Реверсный Туннель с Удалённым IP

Введение

В современном мире сетевых технологий, многие задачи могут оказаться неразрешимыми из-за ограничений брандмауэров и сетевых настроек. Одной из распространённых задач является необходимость установить соединение с удалённым сервером, когда доступ к нему ограничен. В данной статье мы рассмотрим, как настроить SSH реверсный туннель для доступа к серверу с IP-адресом 192.168.0.2 через сервер 192.168.0.1, используя свойство GatewayPorts в конфигурации SSH.

Проблема

Сервер 192.168.0.1 может обращаться к 192.168.0.2, но в обратном направлении доступ ограничен из-за настроек брандмауэра. Для решения этой проблемы вы настроили реверсный туннель, выполнив следующую команду на сервере 192.168.0.2:

ssh -f -N -T -R 0.0.0.0:80:localhost:80 192.168.0.1

Эта команда позволяет серверу 192.168.0.1 обращаться к 192.168.0.2 через локальный адрес, используя wget localhost:80. Тем не менее, вы хотите, чтобы доступ осуществлялся и по IP-адресу 192.168.0.2, например, через wget 192.168.0.2:80.

Решение

Для того чтобы это реализовать, требуется корректно настроить параметр GatewayPorts в файле конфигурации SSH (/etc/ssh/sshd_config) на сервере 192.168.0.1, который будет принимать соединения. Этот параметр управляет, на каком IP-адресе будет слушать сокет. По умолчанию он будет привязан только к локальному интерфейсу, что ограничит доступ к проксируемому сервису.

  1. Редактирование sshd_config: откройте файл конфигурации SSH:

    sudo nano /etc/ssh/sshd_config
  2. Добавьте или измените следующую строку: Убедитесь, что параметр GatewayPorts разрешает привязку к другим интерфейсам:

    GatewayPorts yes

    Альтернативно, если требуется установить более строгие правила, вы можете использовать следующую конструкцию:

    Match User !root
        GatewayPorts yes

    Это позволит пользователям, не имеющим привилегий root, также использовать обратный туннель, если они не являются пользователями root.

  3. Перезапустите SSH-сервер:

    После внесения изменений необходимо перезапустить SSH-сервер для применения новой конфигурации:

    sudo systemctl restart ssh
  4. Настройка реверсного туннеля: Теперь вы можете снова выполнить команду на сервере 192.168.0.2, чтобы установить реверсный туннель:

    ssh -f -N -T -R 0.0.0.0:80:localhost:80 192.168.0.1

Проверка

После выполнения всех вышеперечисленных шагов, вы сможете подключится к 192.168.0.2 с сервера 192.168.0.1 через:

wget 192.168.0.2:80

Это подтвердит, что реверсный туннель успешно работает и соединение осуществимо по IP-адресу.

Заключение

Настройка SSH реверсного туннеля с использованием GatewayPorts — это мощный инструмент для обхода ограничений брандмауэра. Благодаря правильно сконфигурированному SSH-серверу вы можете обеспечить доступ к удаленным службам, что существенно расширяет ваши возможности в управлении сетевой инфраструктурой. Убедитесь, что настройки безопасности остаются в приоритете, чтобы защитить свою сеть от несанкционированного доступа.

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

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