본문 바로가기
컴퓨터 공학/네트워크

SSH 터널링(포트포워딩)을 해보자

by Montmartree 2020. 9. 13.

 

SSH 터널링 개요

 

 

Kali가 Win7과 통신을 하려고 한다.

 

그런데 보안상 Win7 에서는 SSH서버인 CentOS 에서 오는 패킷만 받는다고 한다.

 

이때, Kali에서 SSH 터널링을 이용하여 CentOS에 접속하여 Win7과 통신을 해보자.

 

 

참고로 이 과정은 Putty의 SSH 원격접속과 같은 원리이다.

 

 

 

 

[환경 설정]

 

1. VM을 이용하여 3개의 OS를 구동 후 네트워크 설정을 모두 Host-Only로 설정한다.

   (∵ VM끼리만 통신)

 

Host-Only 설정법

 

2. Win7 에 netcat 프로그램을 다운로드 한다.

   (다운로드 주소 : eternallybored.org/misc/netcat/)

 

   저는 1.11버전 사용했고 로컬에서 다운로드 한 뒤 Win7에 드래그 앤 드롭하면 됩니다.

   ※ Kali랑 CentOS에는 netcat이 있습니다.

 

 

3. 각 OS에 IP를 설정한다.

 

    Kali -> ifconfig eth0 10.10.10.10/24       

    CentOS -> ifconfig eth0 10.10.10.20/24

 

    Win7 -> 네트워크 및 공유 센터 > 어댑터 설정 변경 > 네트워크 속성 > TCP/IPv4

                IP 주소 : 10.10.10.30 / 서브넷 마스크 : 255.255.255.0

 

 

4. 통신 테스트를 위하여 Win7의 고급 방화벽 설정 > 인바운드 규칙

 

   TCP/8080(로컬)의 연결 허용 규칙을 생성한다.

   (규칙이 없으면 Kali와 통신이 안되요)

 

Win7 방화벽 규칙 추가

 

   그 다음으로

 

   Win7 -> nc -lvp 8080 으로 먼저 통신 대기를 한다.

 

   Kali -> nc 10.10.10.30 8080 으로 Win7에 메시지를 보내본다.

 

   

   Kali 측)

Kali (Client)

 

    Win7 측)

Win7 통신 테스트

 

   위의 그림처럼 Kali 에서 보낸 메시지가 잘 왔는지 확인 후

 

   CentOS에서도 Win7으로 메시지를 보내서 통신이 잘 되나 확인한다.

 

   여기까지 왔다면 아까 만들었던 Win7의 TCP/8080 규칙을 끈다.

 

 

 

 

 

[SSH 터널링]

 

1. Kali에서 Win7으로의 통신을 막는 방화벽 규칙을 만든다.

 

   사용자 지정 > 모든 프로그램 > TCP / 모든 포트 > 원격IP주소에 10.10.10.10 추가 > 연결 차단

 

 

   CentOS에서 Win7의 8080포트와의 통신을 하기 위한 방화벽 규칙을 만든다.

 

   사용자 지정 > 모든 프로그램 > TCP / 로컬 8080 > 원격IP주소에 10.10.10.20 추가 > 연결 허용

 

 

   이렇게 설정하면 CentOS에서 Win7의 TCP/8080 통신만 가능하다.

 

 

2. SSH 통신을 위하여 CentOS에 SSH 서비스를 실행한다.

 

   CentOS -> service sshd start

 

 

3. Kali에서 Win7과의 통신을 위하여 SSH 터널을 설정한다.

 

   Kali -> ssh -L 1004:10.10.10.30:8080 10.10.10.20

             ( ssh -L [사용할 로컬포트]:[최종접근지] [SSH 서버 IP] )

 

   위의 명령을 내린 후 CentOS의 패스워드를 입력하라고 나오면 SSH 터널이 생성된 것이다.

 

 

4. Kali에서 Win7으로 다시 통신을 해본다.

 

   Kali -> nc 10.10.10.30 8080

 

 

5. 결과

 

 

   Kali 측)

 

SSH Tunneling (Client 측)

 

   Win7 측)

 

SSH Tunneling (Server 측)

 

   저는 10.10.10.10(Kali)에서 메시지를 보냈지만

   Win7 측의 빨간색 박스를 보면 10.10.10.20(CentOS)에서 메시지가 온 것으로 나옵니다.

 

 

 

 

 

   추가로 Kali에서 22번 포트(SSH 포트)를 확인해본다.

 

   Kali -> lsof -i:22

 

SSH 확인 (Client)

 

   10.10.10.20(CentOS)과 SSH 연결이 되었음을 알 수 있다.

 

 

 

 

   마지막은 Win7의 Wireshark 패킷 캡쳐입니다.

 

Win7측 Wireshark 패킷 캡쳐

 

 

 

 

 

6. 참조

 

SSH 터널링이란? m.blog.naver.com/PostView.nhn? blogId=alice_k106&logNo=221364560794&proxyReferer=https:%2F%2Fwww.google.com%2F