SSH e PWNAT para conexão SSH entre dois NATs separados

4

É possível usar o pwnat e o SSH para estabelecer uma conexão SSH "peer-to-peer" entre duas máquinas que estão por trás dois firewalls / NATs separados?

Se isso for possível, quais são as etapas que devem ser seguidas para configurar essa funcionalidade em uma máquina Linux dentro de um NAT que esteja executando um servidor OpenSSH e como um cliente por trás de um NAT separado se conecta?

Além disso, se isso for possível, essa configuração é um grande risco à segurança? Algum cliente SSH arbitrário pode se conectar ao servidor executando pwnat?

    
por Kevin Gurney 05.07.2014 / 18:34

2 respostas

2

Sim. Suponha que sua rede seja assim:

VocêquerSSHdeAparaB.VocêtemosshdrodandoemB;estáescutandoemtcp://127.0.0.1:22.

B$pwnat-s0.0.0.02022127.0.0.1:22

pwnatemBagoraestáouvindonoudp://0.0.0.0:2022eestáconfiguradoparapermitirconexõescomtcp://127.0.0.1:22.EletambémestáenviandosolicitaçõesperiódicasdeecoICMPpara3.3.3.3(IPcomcódigodeacesso).

A$pwnat-c127.0.0.13022104.16.111.2082022127.0.0.122

pwnatemAagoraestáescutandoemtcp://127.0.0.1:3022.

pwnatemAenviaumpacoteexcedidodetempoICMPpara104.16.111.208cujacargaútilcorrespondeàssolicitaçõesdeecoICMPdesaídavindasdoNATB.NATBvêqueacargacorrespondeàssolicitaçõesdeecoICMPdesaídaeencaminhaopacoteexcedidodotempoICMPparaBObservequeocabeçalhoIPparaopacotedetempoexcedidodoICMPcontémoIPdoNATA,151.101.193.69,comooendereçodeorigem.

pwnatemBenviaumpacoteUDPparaudp://151.101.193.69:2022comaportadeorigem2022.NATBadicionaumaentradaemsuatabelaparaquenofuturoeleencaminhetodosospacotesUDPquereceberdeudp://151.101.193.69:2022emudp://104.16.111.208:2022paraudp://192.168.2.10:2022.ObservequemuitosNATsdesignarãoumaportadiferentenainterfaceexterna.Seesteforocaso,o pwnat não funciona .

pwnat em A envia um pacote UDP para udp: //104.16.111.208: 2022 com a porta de origem 2022. O NAT A adiciona uma entrada em sua tabela e, no futuro, encaminhará quaisquer pacotes UDP que receber de udp: // 104.16.111.208:2022 em udp: //151.101.193.69: 2022 para udp: //192.168.1.10: 2022.

O NAT A recebe o pacote UDP que B enviou, faz a correspondência em sua tabela e o encaminha para A. O NAT B recebe o pacote UDP que A enviou, compara-o em sua tabela e o encaminha para B. A e B agora pode se comunicar livremente por UDP.

A$ ssh -p 3022 127.0.0.1

pwnat em A, que está escutando em tcp: //127.0.0.1: 3022, aceita a conexão do ssh. pwnat em A envia uma solicitação para pwnat em B (via UDP) para abrir um túnel para tcp: //127.0.0.1: 22. Como isso foi listado como um par de host / porta permitido quando o pwnat em B foi iniciado, ele faz a conexão. O túnel agora está completo:

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

Se o pwnat não possui bugs, então não é diferente em termos de segurança expor o sshd ao mundo em um servidor que não esteja atrás de um NAT. No entanto, olhando através do código-fonte, pwnat parece meio que cortado em conjunto e eu não confiaria em ser seguro. O pior cenário seria a execução de código arbitrário em A e B como o usuário que está executando o pwnat.

    
por 30.04.2017 / 11:40
-1

O Pwnat parece não ser autenticado, o que eu considero um grande risco de segurança. Se você controlar pelo menos um dos dois NAT / Firewalls, basta configurar o encaminhamento / tradução de porta para uma configuração muito mais segura.

    
por 06.07.2014 / 00:12