[Linux] 쉽게 따라 하는 SSH 포트 포워딩(SSH 터널링)

SSH 포트 포워딩은 SSH(Secure Shell)를 사용하여 네트워크 트래픽을 안전하게 전송하기 위한 기술입니다. 이를 통해 로컬 머신과 원격 서버 간의 트래픽을 암호화할 수 있습니다. SSH 포트 포워딩에는 로컬 포트 포워딩, 리모트 포트 포워딩, 동적 포트 포워딩의 세 가지 주요 유형이 있습니다. 이 번 글에서는 로컬 포트 포워딩과 리모트 포트 포워딩에 대해 알아 보겠습니다. PuttY 사용해서 SSH 포트 포워딩하는 방법을 알고 싶으시면 여기를 클릭하세요.

SSH 포트 포워딩(터널링)

SSH 포트 포워딩(터널링)

테스트 환경은 아래와 같습니다. 외부 클라이언트에서 외부로부터의 접근이 차단된 내부용 웹 서버로 접속하려고 하는 상황입니다.

  • 외부 클라이언트(호스트명/IP주소) : centos8 / 192.168.56.104
  • 웹 서버(호스트명/IP주소) : rhel7u9 / 192.168.56.108
    rhel7u9 리눅스의 웹 서버 디플트 페이지
로컬 포트 포워딩 (Local Port Forwarding)

방화벽 정책을 통해 내부용 웹 서버(80/tcp)의 외부 접근을 차단하고 SSH 접근(22/tcp)만 허용한 경우, 외부에서 직접 웹 브라우저를 통해 내부용 웹 서버 접속을 불가능하지만 SSH 로컬 포워팅을 통해 내부용 웹 서버 접속이 가능합니다.

  1. 외부 클라이언트에서 웹 서버의 방화벽 정책을 확인합니다.
    – ssh는 외부 접속이 가능하지만, http는 외부 접속이 차단되어 있습니다.
    [root@centos8 ~]# nmap -p22,80 192.168.56.108 -sT
    Starting Nmap 7.92 ( https://nmap.org ) at 2024-07-06 00:19 KST Nmap scan report for 192.168.56.108 Host is up (0.00056s latency). PORT STATE SERVICE 22/tcp unfiltered ssh 80/tcp filtered http MAC Address: 08:00:27:09:05:7E (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds
  2. 외부 클라이언트에서 로컬 포트 포워딩를 실행합니다.
    – 프롬프트가 [root@rhel7u9 ~]# 로 변경됩니다.
    [root@centos8 ~]# ssh -L 8080:192.168.56.108:80 192.168.56.108
    root@192.168.56.108's password: Last login: Tue Nov 14 18:24:10 2023 from 192.168.56.111 [root@rhel7u9 ~]#
  3. 외부 클라이언트에서 localhost:8080으로 접속하면 rhel7u9의 웹 서버로 접속됩니다.
    rhel7u9 리눅스의 웹 서버 디플트 페이지
리모트 포트 포워딩 (Remote Port Forwarding)

방화벽 정책을 통해 외부로부터의 모든 접근을 차단하고 아웃바운드만 허용한 경우, 외부에서 내부용 웹 서버나 SSH 서버 접속을 불가능하지만 외부에 있는 SSH 서버에 리모트 포트 포워딩 방식으로 접속하여 외부에서 내부용 웹 서버 접속이 가능합니다.

  1. 웹 서버의 방화벽에 SSH 접속 차단 정책을 등록합니다.
    [root@rhel7u9 ~]# firewall-cmd --permanent --remove-service=ssh
    success
    [root@rhel7u9 ~]# firewall-cmd --reload
    success
    
  2. 외부 클라이언트에서 웹 서버의 방화벽 정책을 확인합니다.
    – ssh의 외부 접속도 차단되어 있습니다.
    [root@centos8 ~]# nmap -p22,80 192.168.56.108 -sA
    Starting Nmap 7.92 ( https://nmap.org ) at 2024-07-06 00:43 KST Nmap scan report for 192.168.56.108 Host is up (0.00058s latency). PORT STATE SERVICE 22/tcp filtered ssh 80/tcp filtered http MAC Address: 08:00:27:09:05:7E (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds
  3. 웹 서버의 호스트에서 리모트 포트 포워딩을 설정합니다.
    – 프롬프트가 centos8로 변경된 것을 확인할 수 있습니다.
    [root@rhel7u9 ~]# ssh -R 8585:localhost:80 192.168.56.104
    root@192.168.56.104's password: Activate the web console with: systemctl enable --now cockpit.socket Last login: Fri Jul 5 23:49:11 2024 from 192.168.56.108 [root@centos8 ~]#
  4. 외부 클라이언트에서 localhost:8585으로 접속하면 rhel7u9의 웹 서버로 접속됩니다.
    rhel7u9 리눅스의 웹 서버 디플트 페이지

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다