Назад | Перейти на главную страницу

SSH-туннелирование и перенаправление портов

Прошу помочь мне установить туннели для следующих нужд:

Есть сервер LocalTest, на котором я root, поэтому я могу делать что угодно (Debian SSH). Этому серверу разрешен доступ (фильтрация IP присутствует на другой стороне) порт 443 сервера, который мы можем назвать WebserviceServer. Я хочу позволить человеку, который не может открыть SSH для localtest, получить доступ к WebserviceServer: 443. Поэтому мне нужно открыть порт сервера в Localtest (например, 10000) и перенаправить весь контент на WebserviceServer: 443. Это первая задача.

Вторая задача заключается в том, что LocalTest прослушивает определенный порт как сервер веб-службы (8099). Мне нужно время от времени пересылать его на порт разных рабочих станций для тестирования. Таким образом, весь трафик и соединения, поступающие на LocalTest: 8099, должны быть перенаправлены на somestation (назовите его John): someport (5000).

Не могли бы вы помочь мне с командами ssh, которые мне нужно отправить на Localtest для удовлетворения потребностей?

Обе ваши проблемы мне не кажутся лучшим решением - туннелирование ssh.

но все же вот некоторые из идей, которые я придумал для достижения этих целей:

Проблема 1: использование LocalTest в качестве обратного прокси для WebserviceServer

localtest:~ $ ssh -L *:10000:webserviceserver:443 localhost

убедитесь, что вы разрешили "GatewayPorts" и "AllowTcpForwarding" в / etc / ssh / sshd_config на LocalTest и sshd перезапущен.

Объяснение

это открывает соединение от localtest к самому себе и в то же время создает туннель, прослушивающий порт 10000 на всех интерфейсах localtest, перенаправляя трафик на порт 443 webserviceserver

Проблема 2: перенаправление трафика на тестовые рабочие станции

с ssh это фактически то же самое, что и проблема 1

localtest:~ $ ssh -L *:8099:somestation1:5000 localhost

если вы хотите подключиться к другой тестовой рабочей станции, просто выйдите из первого подключения и используйте что-то вроде

localtest:~ $ ssh -L *:8099:somestation2:5002 localhost

Объяснение

поскольку это в основном то же решение, что и для проблемы 1, оно также имеет такое же объяснение (только разные хосты и порты :-))

некоторые мысли

Имейте в виду, что оба предыдущих решения открывают целевые системы (webserviceserver, somestationX) для всех, у кого есть доступ к LocalTest.

И, как я уже упоминал в начале, я не думаю, что ssh - правильный инструмент для этого по нескольким причинам. Некоторые из них:

  • с ssh вы можете легко туннелировать только TCP-трафик
  • ssh редко бывает лучшим решением для постоянных туннелей
  • Проблема 1 для меня больше похожа на случай использования обратного прокси (или iptables, как упоминалось другими)
  • Проблема 2 определенно звучит для меня как аргумент в пользу iptables.

Я лично настроил бы простой сценарий для второй проблемы, который позволяет вам сбросить правила iptables для каждой тестовой системы, которую вы хотите использовать, что-то вроде

localtest:~ # reset_target somestation

такой сценарий должен будет удалить старую переадресацию (на другую тестовую рабочую станцию) в iptables, а затем настроить новую. Я не очень хорошо владею синтаксисом iptables на данный момент, поэтому я не могу сразу предоставить такой сценарий, но я уверен, что кто-нибудь здесь может помочь вам с чем-то подобным, если это необходимо.

То, о чем вы просите, должно быть достигнуто с помощью IPTables и простой переадресации портов - по крайней мере, в первой части.

Что касается второй части, вы заявляете, что на порту 8099 есть «сервер веб-службы», трафик которого вы хотите перенаправить на «Джон». Я предполагаю, что вы все равно захотите позволить «серверу веб-службы» обрабатывать информацию, и в этом случае мост между «сервером веб-службы» и «Джоном» может быть тем, что вы ищете. Для этого вы, вероятно, можете использовать netcat.

Узнайте о переадресации портов с помощью IPTables: http://www.socialhacker.com/howtos/port_forwarding.php

Узнайте об использовании Netcat: http://www.sans.org/security-resources/sec560/netcat_cheat_sheet_v1.pdf (Я считаю, что реле Netcat - это то, что вам нужно).

Надеюсь, эта информация поможет.

Вы захотите использовать флаг -L или -R с соответствующим указанием: IP:, а также включить порты шлюза в sshd_config