336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

목차

아래의 예를 살펴 보자.

1. 머리말

날이 갈수록 내부 네트워크의 보안 등급이 엄격 해 지는 것을 알 수 있다. 웹 접속 하는 것은 물론이거니와 각종 네트워크 서비스가 되지 않는 곳이 부지기수이다. 그럼 어떻게 방화벽을 회피하여 원하는 네트워크 서비스를 받을 수 있는 지 한번 살펴 보도록 하자.



2. 주의사항

이 방법은 다음과 같은 상황에서 적용되지 않을 수 있다.

  • 1~1023(Well-Known Port) 중 SSH 포트(22번)이 막혀 있고, SSH 서버의 포트가 22번만 지원 하는 경우
  • 웹 호스팅 SSH 계정이 없는 경우



3. SSH 터널링이란?

현재 80번 포트(HTTP)는 방화벽에 차단되어 직접적인 접속(Direct Connection)을 하지 못하는 상태라 가정 해 보자. 이러한 상황에서 어떻게 방화벽에 걸리지 않고 원하는 데이터를 송/수신 할 수 있을까? 여러 방법이 있을지 모르지만, 한마디로 요약해 보면 방화벽에 차단되어 있는 포트의 송/수신 데이터방화벽에 차단되지 않는 포트가 대신 받아 송/수신(port forwarding) 하면 된다는 것이다. 즉, 각종 네트워크 서비스의 데이터를 대신 받아 처리 해 줄 데몬(Proxy)을 설치 하고, 방화벽을 우회하여 원하는 서비스를 받을 수 있다는 것이다. 이러한 구성은 SSH(Secure Shell)라는 프로토콜이 지원해 주며, Client 쪽에 SSH Client를 실행 시켜 Proxy의 역할을 하게 만들 수 있다. 그리고 SSH Client의 데이터를 받아 줄 SSH Server가 존재 해야 하며, 이 둘 사이의 연결 구간(Tunnel)은 SSH의 고유 기능(데이터 암/복호화 등)이 적용 되어 있어, 특별히 터널링(Tunneling)이라 부른다.

[그림 1] 『SSH, The Secure Shell : The Definitive Guide』 터널링을 이용한 방화벽 우회

위 그림은 mail 서비스가 내부 네트워크 망에 차단되어 있는 경우를 가정 한 것이다.



4. Port Forwarding의 종류

SSH 가 제공 하는 Port Forwarding의 종류는 3가지로 Local, Remote, Dynamic이 있다. 이 글에서 자세한 내용을 다룰 순 없으나, Remote는 통상적으로 SSH Server 설정을 다루며, Local은 SSH Client에서 접근 하여 사용하는 포트를 설정하는 내용을 다루고 있다. 하지만 Local, Remote와 같은 방법은 이 글에서 다루려는 네트워크 구성 및 처리 방법과는 거리가 있다. 그러므로 Dynamic Port Forwarding만을 다룰 것이다. 나머지 자세한 내용을 원한다면 참고 사이트를 방문 해 보도록 한다.

4.1 Dynamic Port Forwarding

이 방법은 외부에 접근을 시도하는 로컬 포트(http 서비스, 메신저 서비스 등)가 SSH 클라이언트에게 우회 요청 하면, 데이터를 전달 받은 SSH 서버는 요청 데이터를 해석 하여 처리하는 매커니즘을 가지고 있다. 아래의 예를 살펴 보자.



5. SSH 터널링 구성

5.1 필요사항

눈치가 빠른 사람들은 알았겠지만 5.와 같이 구성하려면 SSH Server에 접근 할 계정이 필요하다. 필자의 경우 SSH 서비스가 지원되는 웹 호스팅 업체에 1년 무료 행사로 가입 되어 있다. -_-;; 결론은 유료로 하든 무료로 하든 계정이 필요하므로 알아서 구하도록 하자. 계정을 구했다면 SSH로 접속 할 클라이언트 프로그램이 필요 할 것이다. 대표적인 프로그램으로 putty를 사용 하도록 하자.

5.2 SSH 터널링 연결

putty 프로그램을 구한다. (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)

버젼이 낮은 putty는 dynamic tunneling을 지원하지 않는다. 이점 참고 하기 바란다.

Putty 설정 카테고리에서 Connection -> SSH -> Tunnels로 이동한다. 그리고 그림과 같이 설정하면 Port 10000으로 인입된 요청을 ssh client가 대신 처리 한다는 의미가 된다.

설정이 끝나고, 접속하게 되면 SSH간 연결이 완료된다.

5.3 Proxy 설정

방화벽에 차단되어 있던 네트워크 서비스를 받을 프로그램에 SSH Client로 데이터를 우회 요청 하도록 지시하는 설정을 의미 한다.

5.3.1 인터넷 익스플로어

인터넷 옵션 -> LAN 설정을 클릭 한다.

그림과 같이 체크 하고 고급 버튼을 클릭 해 Proxy 설정에 들어간다.

인터넷 익스플로어의 입장에서 보면 SSH Client는 서비스를 대신 해 주는 역할을 하므로 Proxy라 할 수 있으며, 양측은 소켓을 이용하여 접근 하므로 그림과 같이 구성 할 수 있다.

5.3.2 파이어폭스

도구 -> 설정으로 들어가서 아래의 위치로 이동하여 설정을 클릭한다.

인터넷 익스플로어와 마찬가지로 그림과 같이 설정한다.

5.3.3 네이트온

설정 -> 환경 설정으로 들어가 아래 그림과 같이 구성한다.



6. MyEntunnel

SSH Client 프로그램 putty는 터널링 외에도 많은 기능들을 처리 한다. 하지만 터널링 기능을 사용 한다면, 굳이 putty와 같은 쉘 프로그램을 구동 하지 않고, 터널링 전용 프로그램이 있으면 좋을 것 같다. 이러한 요구 사항을 충족할 프로그램이 있었으니, 이름 하여 MyEntunnel이다.

다운 로드 : http://nemesis2.qx.net/software-myentunnel.php

이 프로그램은 SSH를 단순히 터널링 용도로 사용 될 수 있으며, 사용 하는 동안에는 트레이 아이콘으로써 유지 시켜주는 기능을 포함하고 있다.

프로그램을 다운 받아 실행을 시킨 다음, 설정 탭에서 각종 정보를 기입 하고 Enable Dynamic Socks를 체크 하고 Port 번호를 적어 주고, Connect 버튼을 눌러 연결하면 터널링이 완료된다.



7. SocksCap

프로그램에 따라 Socks Proxy를 지원하지 않는 경우도 있다. 이러한 경우 Socks Proxy를 대신 적용 시켜 줄 프로그램이 필요 한데, SocksCap이 이러한 역할을 한다.

다운로드 : http://soft.softoogle.com/ap/sockscap-download-5157.shtml

프로그램을 실행 시켜 Proxy 기능을 사용 하고자 하는 프로그램을 등록한다.(예 : Winamp)

그리고 설정에서 필요한 내용을 기입하고, 터널링 기능을 사용 하려는 프로그램을 실행 시켜 사용 하면 된다.



8. 참고

SSH Tunneling 사용하기 : http://www.hanbit.co.kr/network/category/category_view.html?cms_code=CMS5064906327

SSH를 사용한 터널링(한글) : http://simplelife.pe.kr/tc/620



+ Recent posts