어리석게 들리겠지만, 내 말을 들어보세요(아마도 여전히 그렇습니다).
저는 CS 학생입니다. 제가 공부한 대학은 보안이라는 이름으로 모든 침입적인 SSH 및 VPN 트래픽을 차단한다는 영리한 아이디어를 가지고 있었습니다. 그런 다음 모든 사람은 오래되고 악용 가능한 OpenVPN 서버를 통해 방화벽 뒤에 들어가도록 요청받습니다. 이것이 내 삶을 어렵게 만듭니다. 집에서 랩 서버에 액세스하고 싶습니다. 그러나 오래된 OpenVPN 서버를 통해서는 그렇지 않습니다.
--------------- --------------- -----------------
| My home PC | ---> | Firewall | -X---> | Lab server |
--------------- --------------- -----------------
모든 것이 나에게는 어리석은 것처럼 들립니다. (누군가가 기본 비밀번호를 사용하는 것이 더 큰 문제라고 생각합니다. 어쨌든). 나는 방화벽이 얼마나 강한지 알아보기로 결정했습니다. 그러다가 내가 찾았어암호화내 교통수단은 통과한다로트 13방화벽을 속이기에 충분합니다.
--------------- --------------- -----------------
| My home PC |->| rot13 | ---> | Firewall | -----> | rot13 | -> | Lab server |
--------------- --------------- -----------------
내 개념 증명은 다음과 같습니다.
# Client side:
nc -l -p 2222 | rot13 | nc my_server_ip 2222
# server side:
nc -l -p 2222 -s my_server_ip | rot13 | nc localhost 22
. 에 연결할 때 localhost 2222
이는 단방향 링크이므로 핸드셰이크가 완료되지 않습니다. (이를 핸드셰이크 없이는 도착하지 않는 핸드셰이크 패킷과 비교해 보세요 rot13
.)
문제는 이것이 암호화된 단방향 링크라는 것입니다. 어떻게 양방향으로 만들 수 있나요? 지금까지 파이프를 통해 iptables 간에 데이터 전송을 시도했습니다 rot13
. 하지만 나는 못해.
노트
obfsproxy
나는 쉬울 것이기 때문에 이와 같이 프록시를 망칠 것을 고려하지 않을 것입니다 . 무거운 무기를 사용하고 싶지 않습니다.- ROT13은 방화벽을 우회하는 데에만 사용됩니다. 약하다는 걸 알아요.
- "글쎄... 내가 이걸 할 수 있을까? "라는 질문입니다. “이걸 꼭 해야 하나?”가 아닙니다.
답변1
socat
해야 할 것.
이것socat
이 도구는 모든 콘텐츠를 어디서나(양방향으로) 스트리밍하려는 모든 요구 사항을 충족합니다. 한 쌍의 매개변수만 사용하며, 각 매개변수는 함께 연결될 하나의 항목을 지정합니다. 이 경우 가장 흥미로운 옵션은 TCP:host:port
및 TCP-LISTEN:port
또는 FD:
입니다 OPEN:
. 각 인수는 분리된 인수 쌍으로 구성될 수도 있으며 !!
, 여기서 첫 번째 요소를 읽고 다른 요소를 씁니다.
따라서 - 기반 예제의 최소 확장은 nc
다음과 같습니다.
서비스 터미널:
mkfifo in in_rot out out_rot
rot13 < in > in_rot &
rot13 < out > out_rot &
socat TCP:localhost:22 OPEN:in_rot!!OPEN:out &
socat TCP-LISTEN:2222 OPEN:out_rot!!OPEN:in &
명명된 FIFO를 제거하고 FD:
Bash에 설정된 파이프를 참조하는 데 사용하면 이를 단순화할 수 있습니다.
작성된 대로 이는 단일 사용에만 적합합니다( socat
연결이 닫히면 종료됩니다). 무한 루프에서 이를 실행하거나 시스템 .socket
장치 또는 xinetd
사용자의 말을 듣고 연결 시 이 스크립트를 생성하는 것과 유사한 것을 설정할 수 있습니다.
클라이언트는 매우 유사한 방식으로 수행될 수 있습니다(일부 로컬 포트에서 수신 대기하고 2222에서 서버에 연결). 또는 TCP-LISTEN 부분을 생략하고 대신 전체 작업을 from ProxyCommand
( from)으로 실행할 수 있습니다 ssh
. .ssh/config
터널이 없는 것처럼 ssh를 사용하고 있습니다) .
단순한 SSH 연결 이상의 터널을 만들고 싶다면, 실제 VPN으로 쉽게 전환할 수 있도록 전체 터널 인터페이스를 제공하는 옵션 socat
도 있다는 점에 유의하세요.TUN: