переадресация портов с использованием IP-прокси

Я пытаюсь получить удаленный доступ к своей машине через ssh со своим общедоступным IP-адресом.

Обычный способ сделать это — разрешить переадресацию портов на моем маршрутизаторе, а затем выполнить:ssh ubuntu@myPublicIpно мой интернет-провайдер использует CGNAT, поэтому я не могу перенаправить порт с назначенным мне общедоступным IP-адресом. Поэтому я использовал tinyproxy на своем экземпляре AWS и подключил свой локальный компьютер к IP-адресу прокси.

Это означает, что каждый запрос, который я делаю через свой локальный компьютер, проходит через IP-адрес прокси. Теперь мой общедоступный IP-адрес заменен на прокси-IP. Мой вопрос заключается в том, как я могу настроить переадресацию портов на моем локальном компьютере с Linux, на котором включен прокси-сервер, чтобы я мог удаленно подключаться к компьютеру с помощью ssh, например:ssh ubuntu@myProxyIp.

2 ответа

В зависимости от того, что вам на самом деле нужно перенаправить, вы можете сделать динамическую обратную переадресацию порта с помощью ssh.

Если вам нужен только прокси-порт 22:

      ssh -R 22:0.0.0.0:2222 user@remote_server

Затем вы можете использовать SSH на своем локальном компьютере, выполнив:

      ssh -p 2222 localuser@ProxyIP

Если вы хотите пересылать динамически:

      ssh -R 0.0.0.0:2222 user @remote_server

Вы можете получить доступ ко всему в вашей локальной сети, используя цепочки прокси. Обратите внимание: любой, кто знает ваш удаленный IP-адрес и порт для прокси-сервера SOCKS, может получить доступ к вашей локальной сети. Возможно, вы захотите установить брандмауэр, чтобы ограничить доступ к нему.

Вот хорошая статья, рассказывающая об этом: https://posts.specterops.io/offensive-security-guide-to-ssh-tunnels-and-proxies-b525cbd4d4c6

Чтобы подключиться к машине за NAT/брандмауэром/чем-то еще, вам не нужно ничего, кроме того, что эта машина сможет установить исходящее соединение с общедоступной сетью и получить доступ по SSH к экземпляру в общедоступной сети.

Настройка на машине за NAT заключается в том, чтобы гарантировать, что она устанавливает исходящее ssh-соединение с включенной обратной переадресацией портов:

      ssh -R:60000:127.0.0.1:22 joe@friendly.domain.tld

где— это учетная запись и адрес экземпляра в общедоступной сети, к которой у вас есть доступ. По сути, эта команда означает следующее: установить SSH-соединение с пользователемдля аутентификации и предоставления нашего локального TCP-порта 22 на удаленном конце как TCP-порта 60000. Если программное обеспечение SSH-сервера достаточно свежее (и конфигурация позволяет это), вы также можете напрямую сопоставить свой локальный перенаправленный порт с IP-адресом, выходящим в Интернет, на , но Я предполагаю, что такая конфигурация не допускается.

Теперь, когда наша машина установила исходящее соединение, все, что нам нужно сделать для подключения к нему из любого места, — это использовать в качестве прокси-сервера в нашем SSH-соединении. Для этого вам нужно будет открыть два окна терминала: первое будет использоваться для установления соединения с экземпляром для перенаправления открытого TCP-порта 60000 на ваш локальный компьютер:

      ssh -L60000:127.0.0.1:60000 joe@friendly.domain.tld

Это отображает TCP-порт 60000 на интерфейсе обратной связик интерфейсу обратной связи экземпляра, на котором вы запускаете команду ssh.

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

      ssh -p60000 my_account@localhost

гдеэто учетная запись на вашем компьютере за NAT.

Всего в игре задействовано три SSH-туннеля:

      machine_behind_nat <=1=> friendly_instance <=2=> your_laptop
            <=================3==================>

Причина такой настройки заключается в том, чтобы гарантировать, что даже если «Friendly_instance» будет взломан, ваша связь с машиной за NAT не будет скомпрометирована (мы не доверяем «Friendly_instance», кроме разрешения ему передавать байты через его интерфейс обратной связи. Мы используя сквозное шифрование в нашем туннеле №3, который проходит через туннели №1 и №2.

Я описал эту настройку в своем блоге, если вам нужно немного предыстории и других трюков, которые можно проделать с помощью ssh.

Другие вопросы по тегам