SSH 터널링으로 원격지와 안전하게 연결하기
SSH 터널링
SSH 터널링이란?
SSH 터널링이란 SSH의 보안 연결 기능을 이용하여 네트워크 통신을 암호화된 채널로 전달하여 통신하는 기법이다. 이를 통하여 일반적으로는 접근할 수 없는 원격 서버나 내부망 내 서비스에 안전하게 접근할 수 있다.
언제 사용하나?
폐쇄망에 있는 서비스에 접속할 때 사용한다. 특히 데이터베이스 등 인가되지 않은 외부인이 접속하는 것을 차단하되 접근이 허락된 사용자가 접근하는 것을 허용하는 경우에 사용한다.
가상사설망과의 차이는?
가상사설망(VPN)은 일반적으로 기기 전체의 모든 인터넷 트래픽을 암호화하고 가상 네트워크에 연결하는 기술이다.
그러나 SSH 터널링은 가상사설망과 달리 특정 포트 주소로의 트래픽만 우회 및 암호화하는 기술이다. 전체 트래픽이 암호화되지 않기에 속도가 빠를 수 있다.
SSH 터널링 종류
SSH 터널링에는 세 종류가 있다.
로컬 포트 포워딩(Local Port Forwarding)
원격 포트 포워딩(Remote Port Forwarding)
동적 포트 포워딩(Dynamic Port Forwarding)
로컬 포트 포워딩(Local Port Forwarding)
가장 자주 사용하는 기법이다. 로컬에서 지정한 포트를 통해 원격 서버의 특정 포트에 접속할 수 있다.
ssh -L [로컬포트]:[원격서버IP]:[원격서버포트] [사용자명@SSH서버주소] -p [SSH서버포트]예시
ssh -L 8080:192.168.0.3:80 user@example.com -p 22192.168.0.3은 사설 네트워크이다. 그러므로 외부에서는 접속할 수 없다. 다만example.com은 외부에서 접속 가능한 서버이다.example.com에서는192.168.0.3으로 접속 가능하다.그래서 우선
example.com에 SSH 접속을 한 다음,192.168.0.3:80으로 연결하는 통로를 연다.해당 연결된 통로를 로컬포트(8080)에 바인딩시킨다.
로컬포트(8080)로 연결하게 되면
example.com을 거쳐192.168.0.3:80으로 연결한다.
언제 사용하나?
방화벽이나 네트워크 분리로 연결이 막힌 서버에 로컬 환경에서 접속하고 싶을 때
보안상 외부 노출이 허용되지 않는 경우 테스트를 할 때
원격 포트 포워딩(Remote Port Forwarding)
로컬 포트 포워딩이 다른 컴퓨터의 서비스(포트)를 마치 내 컴퓨터에 연결하는 것처럼 이용하는 것이라라면, 반대로 원격 포트 포워딩은 내 컴퓨터의 서비스(포트)로 원격에서 접속이 가능하게 하는 것이다.
ssh -R [원격서버포트]:[로컬IP]:[로컬포트] [사용자명@SSH서버주소] -p [SSH서버포트]예시
ssh -R 20801:localhost:80 user@example.com -p 22example.com의 20801 포트로 들어오는 연결을 로컬의 80포트로 터널링한다는 뜻이다.
주의: 외부망의 다른 사용자가 접속하게 하려면 SSH 서버의 sshd_config 설정에서 GatewayPorts yes 옵션이 활성화되어 있어야 한다.
언제 사용하나?
로컬 개발 환경을 외부에서 접속 가능하게 하려 할 때
외부에서 접근이 제한된 네트워크의 컴퓨터를 관리할 때
동적 포트 포워딩(Dynamic Port Forwarding)
로컬에 SOCKS 프록시를 열어 로컬의 트래픽을 SSH를 통해 암호화하여 라우팅하는 기술이다.
ssh -D [로컬SOCKS포트] [사용자명@SSH서버주소] -p [SSH서버포트]예시
ssh -D 1080 user@example.com -p 22이후에 proxy 프로그램이나 브라우저 내부에 있는 프록시 기능을 통해 SOCKS 프록시를 localhost:1080으로 설정하면 모든 트래팩이 SSH 연결을 통해 안전하게 암호화된다.
언제 사용하나?
안전하지 않은 네트워크(여러 사람들이 이용하는 Wi-Fi 네트워크 등)을 사용할 때
인터넷 검열을 시행하는 국가(예: 중국, 이란, 베트남, 대한민국 등)에서 제한된 서비스에 접속할 때. 단, SSH 원격 서버는 검열되는 국가 밖에 있어야 한다.
팁
위 명령어를 사용하면 두 가지 문제가 있다.
SSH 쉘이 열린다
백그라운드에서 작동하지 않고 포그라운드에서 작동된다.
첫 번째의 경우 -N 옵션을 주어 해결할 수 있고, 두 번째의 경우 -f 옵션을 주어 해결할 수 있다.
ssh -L 8080:192.168.0.3:80 user@example.com -p 2240 -N -f단점
반드시 원격 서버에 SSH가 설치되어 있어야 하고 접근이 가능하여야 한다.
인터넷 검열을 엄격하게 시행하는 국가에서는 사용자가 SSH를 통해 일반적인 서버 조작을 하는 것이 아닌
특별한 터널링을 하고 있다는 사실을 인지하여 차단할 수 있다.
댓글
댓글 쓰기