개요
리버스 터널링은 방화벽이 있는 회사PC에 원격제어를 접근하기 위해 사용된다.
물론 보안에 유의 해야 한다.
개념.
1. 회사PC의 원격접속 포트를 구글 서버에 전달. (연결이 유지 되도록 접속)
2. 구글서버는 받은 포트 정보를 다른 포트로 포워딩
3. 집PC는 구글서버에 접속
서버구축
구글 클라우드 플랫폼으로 항상 켜져있는 서버를 구축 할 수 있다.
1. 아래의 글을 참조해서 무료 구글 클라우드 플랫폼을 생성한다.
: https://nhj12311.tistory.com/317
: https://nhj12311.tistory.com/317
무료가능 3지역 중에, 오리건 주를 서버 위치로 하고 시작 하자.
1. 리전: us-west1(오리건) - 영역은아무거나2. 머신 : 시리즈 1세대, N1
3. 머신유형 : f1-micro
4. 부팅디스크 : 공개이미지 Ubuntu, 20.04 LTS (무료OS 선택, 우분투 추천)
5. 부팅디스크유형 : 균형있는 영구 디스크
4. 부팅디스크 : 공개이미지 Ubuntu, 20.04 LTS (무료OS 선택, 우분투 추천)
5. 부팅디스크유형 : 균형있는 영구 디스크
6. 크기: 30GB 이하 (전체 인스턴스 제한, 10짜리 3개 or 30짜리 1개 가능)
6개의 조건 중 하나라도 오버 되거나 틀리면 비용이 발생한다.
(부팅디스크 유형 잘못 선택했다가 비용지불하고 재설치함. 아래 링크는 부팅디크스 유형 설명.
https://cloud.google.com/compute/docs/disks/?hl=ko)
서버설정
2. 설치가 완료 되었으면 포트 포워딩 ssh 설정이 필요하다.
VM 인트턴스 접속창을 열자.
그리고 아래 3줄을 찾아 주석을 풀고 입력 해줍니다.
(88번째 줄로 내려가면 있다.)
// 포트 포워딩
AllowTcpForwarding yes
GatewayPorts yes
TCPKeepAlive yes
(58번째 줄로 내려가면 있다.)
// 이건 외부에서 인증서로 접근 하기 위해 추가.
PasswordAuthentication no 를 yes 로 설정
참고로 vi편집기를 다루려면
vi편집기 명령어 몇가지를 알아야 하는데 우선은 아래 4가지만 알면 입력 후 저장이 가능합니다.
방향키 : 원하는 방향으로 커서 이동
i : 커서 위치에서 입력모드로 전환
ESC : 입력모드에서 명령모드로 전환
:wq : 저장 후 종료
위와같이 sshd_config 파일을 수정했다면 ssh를 재시작 해주어야 한다.
linux-server:~$ sudo service ssh restart
마지막으로 ssh 포트를 확인 해봅니다.
linux-server:~$ sudo apt install net-tools
linux-server:~$ sudo netstat -antp
3. 이제 접속 할 방화벽을 열어야 한다.
생성된 인스턴스의 우측 끝에 점3개 메뉴 눌러 네트워크 정보로 들어갈 수 있다.
회사 PC의 5900 포트 정보를 구글서버의 XXXX 포트로 보내야 하기 때문에 SSH의 보내는 포트를 열어 주어야 한다.
3-1. Google Cloud Platform Console에서 VPC 네트워크 메뉴에서 '방화벽' 선택
3-3. 방화벽 이름 지정
3-4. 트래픽 방향: 수신 허용 (송신으로하면 돈이 나가네..)
3-5. 대상 : 네트워크의 모든 인스턴스
3-5. 대상 : 네트워크의 모든 인스턴스
3-6. 소스 범위 선택: 모든 IP를 허용하는 경우에는 '0.0.0.0/0' 입력
MacOS:~$ cat ~/.ssh/gcp_key.pub
집 PC 접속
3-7. TCP 프로토콜 XXXX 포트 허용
PS. Network Internet Egress from Americas to APAC 지속적으로 비용이 나간다.
일단 검색해보면 송신 비용이라고 하는데, 이러면 평생무료가 아닌데...
아무래도 서버가 미국에 있어서 발생하는 비용 같다. 이그레스 1G 정도만 무료라는 이야기도 있다.
1년마다 메뚜기 해서, 12개월 프리티어를 사용 하도록 해야 할듯 하다.
서버 터미널 연결
4. VM 인트턴스 접속창말고, 터미널을 사용해서 VM에 접근 해보자.
암호를 매번 치기 귀찮으니, 바로 실행 가능하도록 rsa 인증키를 만들어 사용 해보자.
RSA 키페어 생성, 사용법 예시를 보자.
설명 $ ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME(GCP 계정]
사용 $ ssh-keygen -t rsa -f ~/.ssh/gcp_key -C jhchoo.kr@gmail.com
동작 $ ssh-keygen ~~~~ -> 엔터 -> 엔터 -> 엔터
ssh-keygen 에 대한 결과로
Private 키는 '~/.ssh/gcp_key'
Public 키는 '~/.ssh/gcp_key.pub'
으로 생성이 됩니다.
확인
MacOS:~$ cat ~/.ssh/gcp_key.pub
해당 키를 구글클라우드 플랫폼에 붙인다.
메타데이터 > SSH키 > 수정 > 키 등록
// 이거 설정 바꿨는지 확인 필요
PasswordAuthentication no 를 yes 로 설정
이제 접속 해보자.
$ ssh -i gcp_key jhchoo.kr@34.82.60.106
이제 서버 준비가 끝났다.
회사 PC 설정
회사 PC에서 포트 포워딩
$ ssh -i gcp_key jhchoo.kr@34.82.60.106 -fN -R XXXXX:회사아이피:5900
대략 설명을 해보자면, gcp_key로 구글서버 34.82.60.106 에 접속
-fN : 백그라운드 모드로 지속적 접속
-R 포트 포워딩 내 5900 포트 정보를 33896으로 보냄
=-=-=-=-=
컴퓨터를 재시작 시, 매번 켜기 귀찮으니 자동실행을 시켜보자.
Automator로 로그인시 shell script 실행시키기
유틸리티 -> 쉘스크립트 실행, 더블클릭
내용에 "open 스크립트 경로"를 넣어 줍니다. (경로는 드래그 앤 드롭으로 경로가 들어 갑니다.)
응용 프로그램을 저장하고,
설정 > 사용자및 그룹 > 사용자 선택 > 로그인항목
위치에 해당 오토마타를 넣어 둡니다.
=-=-=-=-=
34.82.60.106: XXXXX
끝.
추가.
여러번 VM인스턴스를 만들어본 결과
Network Internet Egress from Americas to China
중국 봇 공격이 꼭 들어온다. (비용도 나감 1~5ㅇ)
중국 IP를 원천 차단 해보자.
기본 gcp 생성시에 모든 ip가 허용되어있는데 이걸 아래와 같이 방화벽에서 수정 해준다.
내 아이피만 적어주던지, CIDR(Classless Inter-Domain Routing)을 사용한 아이피 대역을 넣어주자.
https://www.ipaddressguide.com/cidr
모바일, 집 등등 어디서든 접근 하려면 그때,그때 확인해서 추가 하자.
https://www.findip.kr/
일단 ssh 와 내가만든 포트만 열고 나머지는 닫았다.





댓글
댓글 쓰기