SSH и PWNAT для SSH-соединения между двумя отдельными NATs

можно использовать pwnat и SSH, чтобы установить" одноранговое " соединение SSH между двумя машинами, которые находятся за двумя отдельными брандмауэрами / Nat?

Если это возможно, какие шаги необходимо предпринять, чтобы настроить эту функциональность на машине Linux внутри NAT, на которой работает сервер OpenSSH,и как клиент за отдельным подключением NAT?

кроме того, если это возможно, является ли эта настройка серьезной угрозой безопасности? Может ли любой произвольный SSH-клиент подключиться к серверу под управлением pwnat?

30
задан Kevin Gurney
10.03.2023 23:02 Количество просмотров материала 2446
Распечатать страницу

2 ответа

да. предположим, что ваша сеть выглядит так:

network diagram

вы хотите SSH от A до B. У вас есть sshd, работающий на B; он слушает по tcp://127.0.0.1:22.

B$ pwnat -s 0.0.0.0 2022 127.0.0.1:22

pwnat на B теперь прослушивает udp: / / 0.0.0.0: 2022 и настроен на разрешение подключений к tcp://127.0.0.1: 22. Это также передает периодические эхо-запросы ICMP к 3.3.3.3 (жестко закодированный IP).

A$ pwnat -c 127.0.0.1 3022 104.16.111.208 2022 127.0.0.1 22

pwnat на А сейчас прослушивание tcp: / / 127.0.0.1: 3022.

pwnat на посылает ICMP раз превысил пакет 104.16.111.208, чья грузоподъемность соответствует исходящие ICMP-эхо запросы, поступающие от нац нац Б. Б видит, что груз соответствует исходящие ICMP эхо-запросы и отправляет пакеты ICMP времени превышения пакета в пункт Б. обратите внимание, что IP-заголовок протокола ICMP раз превысил пакет содержит Нат интеллектуальной собственности, 151.101.193.69, в качестве адреса источника.

pwnat на B посылает UDP пакет на udp: / / 151.101.193.69: 2022 с портом источника 2022. Нац Б добавляет запись в таблицу, поэтому в будущем он будет пересылать любые пакеты UDP, которые он получает от UDP://151.101.193.69:2022 на UDP://104.16.111.208:2022 на UDP://192.168.2.10:2022. обратите внимание, что многие Nat назначат другой порт на внешнем интерфейсе. Если это так, pwnat не работает.

pwnat посылает UDP-пакет на udp: / / 104.16.111.208:2022 с исходным портом 2022. NAT A добавляет запись в своей таблице, поэтому в будущем он будет пересылать любые пакеты UDP, которые он получает от UDP://104.16.111.208:2022 на UDP://151.101.193.69:2022 на UDP://192.168.1.10:2022.

Нат получает UDP пакетов, что б прислал, он в свою таблицу, и направляет его в Лос-нац b получает UDP-пакета, что отправил, соответствует его в свою таблицу, и направляет его B. A и B теперь могут свободно общаться по UDP.

A$ ssh -p 3022 127.0.0.1

pwnat на A, который прослушивает tcp: / / 127.0.0.1: 3022, принимает соединение по ssh. pwnat на A отправляет запрос pwnat на B (через UDP), чтобы открыть туннель к tcp: / / 127.0.0.1: 22. Так как это было перечислено как позволенная пара хоста/порта, когда pwnat на B был запущен, это делает соединение. Туннель завершен:

ssh on A --[tcp]--> pwnat on A --[udp]--> pwnat on B --[tcp]--> sshd on B

если pwnat не имеет ошибок, то это не отличается по безопасности от предоставления sshd миру на сервере, который не находится за NAT. Однако, просматривая исходный код, pwnat кажется взломали вместе и Я бы не стал полагаться на его надежности. Худшим сценарием было бы выполнение произвольного кода на A и B в качестве пользователя, выполняющего pwnat.

2
отвечен Snowball 2023-03-12 06:50

Pwnat, кажется, не авторизован, что я считаю серьезным риском для безопасности. Если вы контролируете хотя бы один из двух файерволом только настройки переадресации портов/перевод гораздо более безопасной установки.

-1
отвечен MacLemon 2023-03-12 09:07

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх