두 개의 별도 NAT 간 SSH 연결을 위한 SSH 및 PWNAT

두 개의 별도 NAT 간 SSH 연결을 위한 SSH 및 PWNAT

사용이 가능한가요?두 개의 개별 방화벽/NAT 뒤에 있는 두 시스템 간에 "피어 투 피어" SSH 연결을 설정하려면 SSH를 사용합니까?

이것이 가능하다면 OpenSSH 서버를 실행하는 NAT 내부의 Linux 시스템에서 이 기능을 설정하기 위해 수행해야 하는 단계는 무엇이며 별도의 NAT 연결 뒤의 클라이언트는 어떻게 연결합니까?

또한 이것이 가능하다면 이 설정은 주요 보안 위험입니까? 임의의 SSH 클라이언트가 pwnat를 실행하는 서버에 연결할 수 있습니까?

답변1

예.네트워크가 다음과 같다고 가정해 보세요.

네트워크 다이어그램

A에서 B로 SSH를 실행하려고 합니다. B에서 sshd가 실행되고 있습니다. tcp://127.0.0.1:22에서 수신 대기 중입니다.

B$ pwnat -s 0.0.0.0 2022 127.0.0.1:22

B의 pwnat는 이제 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

A의 pwnat는 이제 tcp://127.0.0.1:3022에서 수신 대기 중입니다.

A의 pwnat는 페이로드가 NAT B에서 들어오는 나가는 ICMP 에코 요청과 일치하는 104.16.111.208로 ICMP 시간 초과 패킷을 보냅니다. NAT B는 페이로드가 나가는 ICMP 에코 요청과 일치하는지 확인하고 ICMP 시간 초과 패킷을 B로 전달합니다. ICMP 시간 초과 패킷의 IP 헤더에는 NAT A의 IP인 151.101.193.69가 소스 주소로 포함되어 있습니다.

B의 pwnat는 소스 포트 2022를 사용하여 UDP 패킷을 udp://151.101.193.69:2022로 보냅니다. NAT B는 테이블에 항목을 추가하므로 나중에 udp://151.101.193.69에서 수신하는 모든 UDP 패킷을 전달할 것입니다. :2022에서 udp://104.16.111.208:2022에서 udp://192.168.2.10:2022로.많은 NAT는 외부 인터페이스에 다른 포트를 할당합니다. 만일이 경우라면,pwnat가 작동하지 않습니다.

A의 pwnat는 소스 포트 2022를 사용하여 UDP 패킷을 udp://104.16.111.208:2022로 보냅니다. NAT A는 테이블에 항목을 추가하므로 나중에 udp://104.16.111.208에서 수신하는 모든 UDP 패킷을 전달할 것입니다. :2022에서 udp://151.101.193.69:2022에서 udp://192.168.1.10:2022로.

NAT A는 B가 보낸 UDP 패킷을 받아 테이블과 일치시켜 A에게 전달합니다. NAT B는 A가 보낸 UDP 패킷을 받아 테이블과 일치시켜 B로 전달합니다. 이제 A와 B는 통신할 수 있습니다. UDP를 통해 자유롭게.

A$ ssh -p 3022 127.0.0.1

tcp://127.0.0.1:3022를 수신하고 있는 A의 pwnat는 ssh로부터의 연결을 수락합니다. A의 pwnat는 UDP를 통해 B의 pwnat에 요청을 보내 tcp://127.0.0.1:22에 대한 터널을 엽니다. B의 pwnat가 시작될 때 허용되는 호스트/포트 쌍으로 나열되었으므로 연결이 이루어집니다. 이제 터널이 완성되었습니다.

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

pwnat에 버그가 없다면 이는 NAT 뒤에 있지 않은 서버의 sshd를 세상에 노출시키는 것과 보안 측면에서 다르지 않습니다. 그러나 소스 코드를 살펴보면 pwnat는 일종의 해킹을 당한 것처럼 보이며 보안이 보장되지는 않습니다. 최악의 시나리오는 pwnat를 실행하는 사용자로서 A와 B에서 임의 코드를 실행하는 것입니다.

답변2

Pwnat는 인증되지 않은 것으로 보이며 이는 주요 보안 위험으로 간주됩니다. 두 개의 NAT/방화벽 중 하나 이상을 제어하는 ​​경우 훨씬 더 안전한 설정을 위해 포트 전달/변환을 설정하기만 하면 됩니다.

관련 정보