переадресация портов с использованием 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-порта 60000 на ваш локальный компьютер:
ssh -L60000:127.0.0.1:60000 joe@friendly.domain.tld
Это отображает TCP-порт 60000 на интерфейсе обратной связи
С этого момента вы можете подключиться к своей машине за NAT, просто используя:
ssh -p60000 my_account@localhost
где
Всего в игре задействовано три SSH-туннеля:
machine_behind_nat <=1=> friendly_instance <=2=> your_laptop
<=================3==================>
Причина такой настройки заключается в том, чтобы гарантировать, что даже если «Friendly_instance» будет взломан, ваша связь с машиной за NAT не будет скомпрометирована (мы не доверяем «Friendly_instance», кроме разрешения ему передавать байты через его интерфейс обратной связи. Мы используя сквозное шифрование в нашем туннеле №3, который проходит через туннели №1 и №2.
Я описал эту настройку в своем блоге, если вам нужно немного предыстории и других трюков, которые можно проделать с помощью ssh.