본문 바로가기
IT Life

ssh 터널링을 이용한 안전한 인터넷 우회 방법

by 미스터트롤 2023. 5. 11.
반응형

오픈된 와이파이 환경이라던가, 아니면 정책으로 인하여 접근이 안되는 사이트에 접속을 해야하는 경우가 있다면 원하는 인터넷 사이트에 접속하기 어려울 수 있다.

 

후자의 경우는 프록시를 이용할 수도 있겠으나, 프록시 서버도 안전하다는 보장이 없기 때문에 꺼려지는 것이 사실이다.

 

필자는 과거 여러가지 이유로 집에 초간단 우분투 서버를 구축한 바 있다.

 

https://mrtroll.tistory.com/587

 

초저가 잡 스케줄러 구축 (1) : 구상과 지름

그동안 지인들의 부탁을 받고 만들어준 웹 어플리케이션이 몇가지 있다. 그 중 일부는 매일 또는 일정시간마다 확인하고 동작해야하는 배치성 작업이 필요한 것들이 있었다. 즉, 주기적인 작업

mrtroll.tistory.com

 

usb 전원으로 구동되는 작고 소중한 서버다. 그리고 사실 이 서버에 squid를 이용해서 프록시 서버를 이미 구축해두었었다. 그럼 왜 또 ssh 터널링을 이용해서 인터넷을 하려고 하는가?에 대해서 간단히 이야기를 해보려고 한다.

 

 

어쩌다보니 타지에서 혼자 1년정도 살 일이 생겼는데, 최소의 비용으로 생활하려다보니까 인터넷을 설치할까말까 고민이 된다. 통상 최근에 지었거나 잘 되어있는 곳은 단체 인터넷으로 저렴하게 인터넷을 쓸 수 있지만 내가 계약한 숙소는 오피스텔임에도 불구하고 그런 것이 불가능하다.

 

숙소에 가서 와이파이를 잡아보니 두 개 정도 오픈된 AP가 검색이 된다. 하지만 연결해보니 해킹이 된 AP인건지 초기페이지가 무슨 비트코인 사이트로 뜨는 상황이..

 

 

폰이 무제한 데이터지만 3Mbps 제약이 있어서 단순히 동영상을 감상하거나 하는 정도는 AP가 허락하는 한 여기에 최대한 빌붙어(?)보려고 한다. 그럼 이제 어떻게 하면 안전하게 이 AP를 이용할 수 있겠는지를 생각해봐야한다.

 

 

오픈된 와이파이를 쓰는 경우 가장 위험이 되는 부분은 패킷 스니핑이다. 즉 이 AP를 통해 이루어지는 인터넷 활동 데이터가 암호화되지 않고 날라다니기 때문에 누구나 볼 수 있다는 것이다. 그럼 어떻게 하면 안전할 수 있을까?

 

오픈된 와이파이지만 내 패킷을 암호화하여 인터넷을 할 수 있다면 가능할 것이다. 이때 생각해 볼 수 있는 것이 ssh 터널링을 이용하는 것이다.

 

ssh 접속프로토콜은 말 그대로 Secure Shell의 약자다. 어떻게 secure 하냐면 공개키/비공개키를 이용한 암호화 통신이 기본적으로 적용이 되어있다고 생각하면 된다. 쉽게 말해서 나름 강력한 암호화가 되어있다는 것이다.

 

그럼 ssh 터널링이란 무엇인가? ssh를 이용해서 접속할 때 접속한 서버와 같은 네트워크에 있는 것 같은 효과, 즉 VPN 같은 역할을 할 수 있다는 것이다. 애초에 외부에서 원격서버에 접속해서 해당 네트워크에 있는 다른 서버나 PC 등에 접속할 때 쓸 수 있다. 여기서 하나 더 나아가보면, 제한이 많이 걸린 환경에서 내가 신뢰할 수 있는 네트워크의 인터넷에 접속할 수 있는 것이 포인트다.

 

예를 들어보겠다.

 

[회사PC] ------ [방화벽] ------ [회사인터넷]

 

이와 같은 상황의 환경이 있다고 가정하고 [회사PC]에서 게임 사이트에 접속을 한다고 가정해보자.

그럼 회사 방화벽이 해당 url이 정책적으로 접속할 수 없는 사이트임을 감지하고 접속을 허용하지 않을 것이다.

 

이때 회사PC에서 내가 구축한 서버에는 ssh 접속이 가능한 환경인 경우 ssh 터널링을 이용해서 내가 구축한 서버에서 인터넷을 하는 것과 같은 효과를 낼 수 있다.

 

                                                               ↓ ssh

[회사PC] ------ [방화벽] -------- [회사인터넷] --------- [내서버] ------- [원격지인터넷]

 

실제로는 이런 형태지만 개념적으로는 아래와 같이 된다.

 

 

                                       ↓ ssh 터널

[회사PC] ===============================[내서버]--------[원격지인터넷]

 

 

이렇게 되면 회사PC는 접속이 허용된 내 서버와만 통신하는 것처럼 보이는데, 실제로 나는 원격지의 인터넷 망을 이용해서 인터넷 접속을 하고 있는 셈이 되어, 안전하면서도 제약없는 인터넷을 할 수 있게 된다는 것이다.

 

[ 물론 이렇게 되는 경우 회사내 정책이나 규정에 의해 위반할 소지가 다분하므로 회사에서는 이용하지 말 지어다]

 

 

필자가 이용할 오픈된 AP를 이용한 인터넷의 경우 해커가 패킷스니핑을 하는 과정은 아래와 같이 될 것이다.

(AP가 해킹되어있거나 악의적인 사용자가 네트워크를 감시한다고 가정)

 

                              ↓ 해커의감시포인트

[내PC] -----------[공개AP]-------------[인터넷]

 

 

그럼 내PC에서 암호화 되지 않은 채로 인터넷을 하게되니, 내가 뭘 하고 있는지 다 속속들이 알게 될 것이며 https를 이용하지 않는 사이트 등 네트워크 감시를 통해 패스워드를 확인한다거나 세션 하이재킹을 이용해서 나의 계정들이 털릴 수 있는 확률이 매우 높아진다.

 

 

이대도 ssh 터널링을 이용하면 개념적으로

 

                                  ↓ ssh 터널

[내PC] ===========================[내서버]-----------[원격지인터넷]

 

와 같이 될 것이고 ssh터널은 이미 패킷들이 모두 암호화 되어있기 때문에 이전 상황보다는 안전한 환경이 된다. 여기서 해커가 내 패킷을 들여다본다한들 내 서버의 주소와 암호화된 패킷들만 볼 수 있을 것이다. 하지만 세션 하이재킹 등에 대해서는 정확히 가능한지 아닌지 모르겠다.

 

 

결론. 자 그럼 어떻게 하면 되는가!

 

[1] 앞서 말한대로 인터넷이 자유로운 서버에 ssh 접근이 가능해야한다.

[2] ssh 클라이언트 중 터널링이 가능한 소프트웨어 (bitvise ssh client같은)로 내 서버에 접속한다

[3] 터널링에 설정한 로컬 ip와 포트를 이용해서 프록시 설정을 한다

 

이게 끝이다.

 

 

bitvise를 기준으로 설명해보겠다.

 

[1] 은 이미 되어있다고 가정하고

[2] 부분은 아래 캡쳐를 확인해보자.

 

bitvise ssh client를 다운받아 설치(https://www.bitvise.com/)하고 ssh 접속에 필요한 ip, 포트, 계정정보를 입력해둔다.

 

 

그리고 option 탭으로 이동해서 On Login항목에 Open Ternimal이나 Open Remote Desktop, Open SFTP 설정이 모두 해제되어있는지 확인한다.

 

 

마지막으로 Services 탭으로 이동해서 SOCKS/HTTP Proxy Forwarding에 체크해서 활성화 해주고 Listen interface에는 로컬 PC의 IP를 나타내는 127.0.0.1, Listen port는 자기 편한대로 (여기서는 임의로 1080)을 입력해주면 된다.

 

 

그리고 하단의 Log in 버튼을 누르면 접속이 될 것이다. (키 관련 물음이 나오면 허용해주면 된다)

하단의 Log in 버튼이 Log out으로 변경이 된다면 정상적으로 접속이 완료된 것이다.

 

이 부분에서 좀 삽질을 했던게 putty도 ssh tunneling 옵션이 있는데, 동일하게 했다고 생각했는데도 뭔가 잘 되지 않았다. 그래서 bitvise로 했더니 한 방에 성공.. 그냥 bitvise를 쓰는게 좋겠다.

 

 

접속을 완료하면 하단부 로그 모니터에 여러가지 정보가 나오는데, 별다른 오류메시지가 없다면 정상이라고 생각하면 된다. 이 상태에서 bitvise 프로그램을 종료하면 터널이 사라지는 것이므로 계속 접속을 유지하기 위해 프로그램을 끄지말고 최소화 해놓고 있어야 한다는 점을 명심하자.

 

 

이제 [3]의 과정으로 넘어가서 프록시 세팅을 해보자.

 

윈도우 시작표시줄에서 '프록시' 라고 쳐보면 [프록시 설정 변경] 이라는 메뉴가 나온다. (윈도우 버전마다 다름) 해당메뉴로 진입하면 아래와 같은 화면을 볼 수 있다.

 

여기서 지금 방금 내가 뚫어놓은 ssh 터널을 프록시로 만들어주면 된다. 설정이 어려울게 없다. 앞서 bitvise services 탭에서 설정할 때 입력한 값을 입력만 해주면 된다. 프록시 서버 사용에 끔을 켬으로 변경하고, 주소는 127.0.0.1, 포트는 위에서 설정한 것과 같이 1080을 입력하고 저장한다.

 

 

자 이제 사용준비가 완료되었다. (필요한 경우 브라우저마다, 또는 특정 프로그램마다 프록시를 사용하도록 설정해야 동작할 수도 있다.)

 

인터넷을 켜서 daum.net에 접속을 해보자.

 

bitvise 클라이언트 services 로그에 아래와 같이 여러가지 통신이나 접속 관련 로그가 뜬다면, 정상적으로 ssh 터널링을 이용해서 인터넷 통신이 되고 있다는 의미로 생각하면 된다.

 

 

일반인에게는 이게 도데체 무슨소리야? 하는 말들로 들리겠지만 컴돌이들이라면 어느정도 금새 알아먹을 수 있을거라 생각한다. 조금이라도 안전하고 편리한 인터넷 생활을 위해 한 번 끄적여보았다.

 

 

 

끝.

반응형