SSH 터널로 OpenVPN 트래픽을 숨기는 방법

터널 (2)
그래서 OpenVPN과 Amazon EC2 서버를 사용하여 자신의 VPN 서버를 설정하는 방법에 대한 자습서를 따라갔습니다. 즉, 갑자기 차단 될 때까지입니다. 인스턴스를 재부팅하고 새 IP 주소를 얻었을 수 있습니다. 다른 며칠 동안 다시 잘 작동 한 다음 차단됩니다. 사무실, ISP 또는 정부에서 OpenVPN 서버를 적극적으로 차단하고있는 것 같습니다. 그래서 당신은 무엇을합니까?


기본 방화벽은 사용 된 포트와 대상 IP 주소를 기반으로 연결을 차단하지만 고급 방화벽은 심층 패킷 검사 (DPI) 및 / 또는 상태 저장 패킷 검사 (SPI)를 사용하여 다양한 유형의 암호화 알고리즘과 VPN 프로토콜을 구분합니다. 즉, 관리자가 OpenVPN 트래픽을 감지하고 플래그를 지정할 수 있으므로 관리자가 서버를 차단할 수 있습니다.

이 문제를 해결하기위한 난독 화 프록시, SSL 터널링 및 SSH 터널링의 세 가지 옵션이 있습니다. 이 자습서에서는 가장 후자에 대해 설명합니다. SSH 터널링은 이미 암호화 된 연결을 다른 암호화 계층으로 래핑하므로 방화벽은 구별 할 수 없습니다. 이러한 각 방법은 기업이나 중국과 같은 검열이 많은 정부가 설치 한 DPI 및 SPI 방화벽을 우회해야합니다..

SSH를 통한 OpenVPN에는 몇 가지 단점이 있습니다. 첫 번째는 이중 암호화로 인한 성능 저하입니다. 둘째, SSH를 통해 터널링 할 때 OpenVPN의 지문을 더 이상 감지 할 수 없지만 일부 방화벽은 SSH 트래픽도 차단합니다. 이는 모든 유형의 암호화 된 프록시, OpenVPN, SSH 등의 사용을 중지시키는 Netflix와 같은 서비스의 경우입니다. 이 경우 대신 암호화 된 트래픽이 정상적이고 암호화되지 않은 것처럼 보이게하는 Obfsproxy를 대신 설정하는 것이 좋습니다. Obfsproxy는 이러한 이유로 훨씬 강력하지만 설정 및 실행이 더 복잡합니다..

불행히도, OpenVPN과 결합 된 Obfsproxy는 현재 우리가 알고있는 한 데스크탑에서만 작동합니다. SSH 터널링은 Android 또는 iOS 모바일 장치에서 사용할 수 있습니다.

이 자습서에서는 이미 작동중인 OpenVPN 서버가 설정되어 있고 OpenVPN GUI 또는 OpenVPN Connect 앱을 사용하여 서버에 연결할 수 있다고 가정합니다. Mac의 터미널 또는 PC의 PuTTy를 사용하여 서버에 SSH 할 수도 있어야합니다. 데모 목적으로 PuTTy를 사용합니다. 설정이 완료되지 않은 경우 이전 자습서를 참조하십시오.

PC에서 SSH를 통한 OpenVPN 설정

마지막 자습서에서는 간단한 SSH 프록시를 설정 한 다음이를 확장하여 완전한 VPN 서버를 만드는 방법에 대해 설명했습니다. 이 접근법은 두 가지를 결합하여 필요한 모든 것을 이미 갖추고 있어야합니다..

PuTTy를 열고 VPN 서버 구성을로드하십시오. 사이드 바에서 연결로 이동하십시오. > SSH > 터널. D8080이 목록에 포함되어 있는지 확인하십시오. 그렇지 않은 경우 "소스 포트"에 8080을 입력하고 자동 및 동적을 확인하십시오. 그런 다음 추가를 누르십시오. 이제 포트 8080을 통해 실행되는 SSH 프록시가 있습니다. 탐색 트리의 세션 탭에서 다시 원하는 경우이를 별도의 세션 구성으로 저장할 수 있습니다..

openvpn ssh 퍼티 8080

열기를 클릭하고 서버에 로그인하십시오. 최신 Amazon Linux AMI에서 사용자 이름은 "ec2-user"입니다..

openvpn.conf 파일로 이동하여 다음 명령을 사용하여 내용을 확인하십시오.

CD / etc / openvpn
고양이 openvpn.conf

OpenVPN 서버 구성 파일의 내용이 표시됩니다. 다음과 같아야합니다.

포트 1194
프로토 TCP 서버
dev tun1
ifconfig 10.4.0.1 10.4.0.2
상태 서버 -tcp.log
동사 3
비밀 ovpn.key

openvpn ssh 서버 설정

중요한 것은 두 번째 줄이 UDP가 아닌 TCP로 설정되어 있다는 것입니다. 변경해야 할 경우 다음 명령으로 편집 할 수 있습니다.

sudo nano openvpn.conf

그런 다음 Ctrl + O (문자 "o", 0이 아님)를 클릭하여 파일을 저장 한 다음 Ctrl + X를 클릭하여 편집기를 종료하십시오..

클라이언트 구성

로컬 컴퓨터에서 OpenVPN 클라이언트 구성 파일로 이동하십시오. 기본 설치 디렉토리를 사용한 경우 C : / Program Files / OpenVPN / config입니다..

마지막 튜토리얼에서 기존 OpenVPN 구성 파일의 사본을 작성하거나 새로 작성하십시오. 메모장 또는 다른 일반 텍스트 편집기를 찾아 마우스 오른쪽 단추로 클릭하여 관리자 권한으로 실행하십시오. 다음과 같이 새 구성 파일을 열거 나 만듭니다.

프로토 TCP 클라이언트
원격 로컬 호스트 1194
포트 1194
dev tun1
비밀 ovpn.key
리디렉션 게이트웨이 def1
ifconfig 10.4.0.2 10.4.0.1
양말 프록시 재시도
양말 프록시 127.0.0.1 8080

두 번째 "원격"라인은 OpenVPN 서버 IP 대신 localhost를 사용하고 마지막에는 SOCKS 프록시를 사용하도록 OpenVPN을 구성하는 두 라인을 사용합니다. 다른 모든 것은 이전과 동일.

새 설정 파일을 OpenVPN 디렉토리의 설정 폴더에 저장하십시오.

앱 설정

마지막 단계는 포트 8080을 통한 프록시를 사용하도록 앱을 구성하는 것입니다. 이는 마지막 자습서의 기본 SSH 프록시로 수행 한 것과 유사합니다. 많은 앱은 설정에서 프록시 설정을 사용할 수 있으며 일부 앱은 프록시 설정을 자동 감지 할 수도 있습니다. 수동으로 설정해야하는 경우 필요한 세 가지 정보는 다음과 같습니다.

  • 호스트 : 127.0.0.1
  • 포트 : 8080
  • 프록시 유형 : SOCKS5 (또는 SOCKS v5)

Firefox 및 Chrome에 대한 지침은 다음과 같습니다.

Firefox에서 :

  • 도구로 이동 > 옵션 > 많은 > 회로망 > 연결 > 설정 > 수동 프록시 구성
  • SOCKS 호스트를 127.0.0.1로 설정하고 포트를 8080으로 설정하십시오 (또는 PuTTy에서 터널 포트를 설정 한 모든 것).
  • 확인을 클릭하여 저장

Chrome 프록시 전환

  • 확장 프로그램을 설치하자마자 설정 페이지가 나타나거나 Chrome 오른쪽 상단의 아이콘을 클릭하고 옵션을 클릭하십시오.
  • 원하는 이름으로 프로필 이름을 지정하십시오. 수동 구성에서 SOCKS 호스트를 127.0.0.1로 설정하고 포트를 8080 (또는 PuTTy에서 터널 포트를 설정 한 모든 것)으로 설정하십시오..
  • 저장을 누른 다음 아이콘을 다시 클릭하여 프록시 프로필을 선택하십시오..

obfsproxy 크롬 프록시 전환

위의 구성을 사용하여 PuTTy로 먼저 서버에 연결 한 다음 생성 한 새 구성 파일을 사용하여 VPN으로 연결하십시오..

SSH를 통한 OpenVPN으로 인터넷에 연결되었습니다!

변하기 쉬운

iOS는 다르지 않지만 Android 용 OpenVPN + SSH 터널을 조정하는 방법에 대해 설명하겠습니다..

시작하기 전에 몇 가지 경고가 있습니다. 첫째,이 방법은 웹 탐색에만 작동합니다. 데스크톱과 달리 기본 Android 또는 iOS 기기에서 원하는대로 포트를 열 수 없기 때문입니다. 즉, 다른 앱에서 사용하는 포트는 SSH 프록시를 통해 전달되지 않습니다. 이를 극복하기 위해 기기를 루팅하거나 탈옥하고 ProxyDroid 또는 Cydia의 Unix 앱과 같은 앱을 사용하여 프록시를 구성 할 수 있습니다.

나중에 배우기위한 튜토리얼입니다. 지금은 Firefox가 설치된 기본 Android에서 실행 해 보겠습니다. 다음과 같은 앱을 설치해야합니다.

  • Android 용 OpenVPN (참고 : 인증에 더 까다로운 OpenVPN Connect는 아님)
  • ConnectBot 또는 이와 동등한 SSH 터미널 앱 (JuiceSSH는 좋지만 포트 전달에 추가 비용이 듭니다)
  • File Commander와 같은 파일 관리자
  • Firefox 또는 프록시를 구성 할 수있는 다른 브라우저

컴퓨터에서 휴대 전화로 파일을 전송하는 방법도 필요합니다. USB 케이블은 괜찮습니다. IBackup의 동기화 폴더를 사용했습니다.

데스크탑에서 위에서 만든 ovpn.key 및 .ovpn 구성 파일을 찾아 휴대 전화의 내부 저장소 또는 SD 카드로 옮깁니다. 또한 서버 호스트에서 제공 한 .pem 키 파일을 이동하십시오. PuTTy 인증에 사용하는 .ppk 파일과 같은 위치에있을 수 있습니다. 분실 한 경우 Amazon EC2 대시 보드 또는 사용하는 서버 호스팅 서비스에서 다른 것을 생성해야합니다..

선택적으로 SSH없이 연결하는 데 사용하는 표준 .ovpn 구성 파일을 가져올 수 있습니다. 그런 다음 브라우저 대신 모든 앱에서 VPN을 사용할 수 있으며 문제 해결에 유용합니다..

ConnectBot 설정

휴대폰에서 ConnectBot을 실행하십시오. 오른쪽 상단 모서리에있는 세 개의 점을 클릭하고 Pubkeys 관리로 이동하십시오. 다음 페이지에서 점을 다시 클릭하고 가져 오기를 클릭하십시오. 설치 한 파일 관리자가 시작됩니다. 휴대 전화로 옮긴 .pem 파일을 찾아서 선택하십시오. 이제 공개 키 목록 옆에 빨간색 자물쇠가 나타납니다. 녹색으로 변합니다. 뒤로 버튼을 누르면 ConnectBot의 기본 페이지로 돌아갑니다..

커넥트 봇

“ssh”옆의 맨 아래 터미널 필드에 SSH 세부 사항을 입력하십시오. 다음과 같아야합니다.

ec2-user @ : 22

OpenVPN 서버의 IP 주소로 교체하십시오. Enter 키를 눌러 서버에 SSH로 연결하십시오. 이 모든 것을 저장하여 다시 입력하지 않아도되지만 나중에 공개 키를 다시 전환해야 할 수도 있습니다.

성공적으로 연결되면 세 개의 점을 다시 누르고 연결을 끊습니다. 프로파일은 ConnectBot의 홈 화면에 저장되어야합니다. 길게 누르면 컨텍스트 메뉴가 열리고 "포트 포워드 편집"을 탭하십시오. 다음 페이지에서 3 개의 점을 탭하고 "포트 포워드 추가"를 선택하십시오.

원하는대로 이름을 지정하십시오. 유형을 동적 (SOCKS)으로 설정하고 소스 포트를 8080으로 설정하십시오 (또는 OpenVPN 구성 파일의 socks-proxy 행에있는 내용). “포트 포워드 생성”을 누릅니다.

ConnectBot을 사용할 준비가되었지만 아직 연결하지는 않습니다. 먼저 OpenVPN을 설정하겠습니다.

Android 설정을위한 OpenVPN

Android 용 OpenVPN 실행.

오른쪽 상단 모서리에 아래쪽 화살표가있는 사각형 버튼을 클릭하여 프로파일을 가져옵니다. .ovpn 구성 파일로 이동하여 선택하십시오. 다음 페이지에서“Select”라고 표시된 버튼을 누르십시오.

안드로이드를위한 openvpn

이번에는 ovpn.key 파일로 이동하여 선택하십시오. 오른쪽 하단의 노란색 저장 버튼을 누르십시오.

이제 새 프로필이 앱의 홈 화면에있는 목록에 나타납니다..

연결하기 전에 서버 방화벽을 다시 확인하십시오. AWS에 로그인하고 인스턴스를 선택한 다음 OpenVPN 서버를 강조 표시하십시오. 보안 그룹 필드에서이 인스턴스에 사용 된 보안 그룹을 클릭하십시오. 마우스 오른쪽 단추로 클릭하고 "인바운드 규칙 편집"을 선택하십시오..

포트 22, 1194 및 8080에 대한 사용자 정의 TCP 규칙을 추가하여 개인 구성에 맞게 조정하십시오..

이제 연결해야합니다. 먼저 ConnectBot을 엽니 다. 방금 생성 한 프로필을 서버에 SSH로 연결하십시오. pubkey가 켜져 있는지 확인하십시오. 그렇지 않으면 암호에 대한 오류가 발생합니다. 성공적으로 연결되면 OpenVPN 앱으로 전환하십시오. 프로필을 탭하여 연결.

openvpn ssh 안드로이드 성공

연결할 때 나타나는 OpenVPN 로그의 끝에 "CONNECTED, SUCCESS"라는 메시지가 표시됩니다.

데스크톱과 동일한 .pem 및 .key 파일을 사용하므로 한 번에 하나의 기기에서만 이러한 자격 증명을 사용할 수 있습니다. 먼저 바탕 화면에 연결되어 있지 않은지 확인하십시오. 여러 기기에서 동시에 연결하려면 각 기기마다 새로운 자격 증명 (.key 및 .pem)을 생성해야합니다..

프록시를 사용하도록 Firefox 구성

마지막으로 프록시를 사용하도록 Firefox를 구성해야합니다. 모바일의 Chrome 및 Safari에는 프록시 구성 옵션이 제공되지 않으므로 Firefox를 권장합니다. Wi-Fi 설정에서 프록시 설정을 시도 할 수 있지만 프록시없이 연결할 때마다 프록시를 변경해야합니다.

파이어 폭스 프록시 설정

Firefox URL 표시 줄에 "about : config"를 입력하십시오. 해당 페이지의 검색 창에“network.proxy”를 입력하십시오. 이렇게하면 관련된 모든 필드가 나타납니다. 표시된 필드에 다음 설정을 입력하십시오.

  • network.proxy.socks : 127.0.0.1
  • network.proxy.socks_port : 8080 (또는 OpenVPN 구성 및 ConnectBot에서 설정 한 내용)
  • network.proxy.type : 1

OpenVPN과 SSH를 통해 Firefox의 브라우저 트래픽을 라우팅해야합니다. 심층 패킷 검사에 대한 두려움없이 VPN을 통해 모바일 장치에서 웹을 서핑 할 수 있습니다.!

OpenVPN없이 SSH 프록시를 통해 연결하려면 ConnectBot를 사용하여 서버에 SSH 만 연결하고 OpenVPN과 연결하지 마십시오. 반대로 기본 비 SSH .ovpn 구성 파일을 OpenVPN 앱으로 가져와 해당 sans SSH 프록시에 연결할 수 있습니다.

CC BY 2.0에 따라 라이센스가 부여 된 jo.sau의 "터널"

Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me

Add a Comment

Your email address will not be published. Required fields are marked *

15 − 11 =