2009. 3. 3. 19:55
요즘 보면 나름대로 보안을 챙기겠답시고 포트를 하나둘씩 차단하는 네트워크 관리자가 많다.

포트만 차단하면 그나마 양반인데, 가끔은 모든 포트를 막아버린 뒤에 특정 보안 프로그램을 설치해야만 인터넷이 되게 해준다던가 하는 경우도 있다. 분통 터진다 -_-...

이런 경우, 개인적인 호불호로 설치하지 않는 경우도 있을 수 있지만 OS 특성으로 인해 설치하지 못하는 경우도 생긴다. (ex. 64bit OS에 설치할 경우 정상동작하지 못하는 프로그램 등)

그러면, 저렇게 해당 프로그램을 설치하지 못할 경우 100% 보안이 위험한가? 꼭 그런것도 아니라는걸 금방 알 수 있을거다. V3 안깔리면 카스퍼스키 쓰면 되고, 카스퍼스키 안써지면 맥아피 사다 써도 되고, 정말 자신있다면 백신 만들어 쓸 수도 있을텐데 꼭 피xxx인지 뭔지 하는 삼류 백신을 설치해야만 하는건가 하는 생각도 든다.

이럴 때, 우회하는 방법을 알아보자.

아, 무엇보다 먼저 “방화벽 밖에 있으면서 SSH 접속 및 터널링이 가능한 서버”가 필요하다. 웬만한 리눅스 서버라면 ssh를 여는 것만으로 해결되고 윈도 서버라 해도 Cygwin을 통해서 OpenSSH를 설치하면 해결될 것이다. 방화벽 밖에 있는 서버가 없다면... 아쉽지만 단념하는게 좋을 거 같다. 아니면 지인에게 부탁해서 한대쯤 얻어두는 방법이 있다. 주변에 홈페이지 서버를 직접 관리하는 사람이 있다면 부탁해보자.

서버측은 OpenSSH를 사용한다고 가정하고, 클라이언트에서는 PuTTY를 사용한다고 가정하겠다.
한글 PuTTY는 http://www.kldp.net/projects/iputty 에서 다운로드받을 수 있다.

  1. 일단, 열린 포트가 있는지 확인해본다.
    보안 목적으로 막은 경우, 즉 별도의 프로그램을 설치할 필요가 없이 인터넷은 가능하지만 일부 서비스가 불가능한 경우에는 아무리 빡빡하게 막아도 인터넷 서핑용 포트인 80번 포트는 열려 있다. 인터넷을 시도했을 때 웹페이지는 뜬다면 80번 포트는 열려있다고 보면 된다.
    DNS 서비스용 포트인 53번도 보통 열려있는 포트이며, 8080도 잘 열려 있는 포트 중 하나인 것 같다.
    SSH 서버에서 해당 포트 번호를 열어보고 접속이 되는지 확인해 보는 것이 좋을 것 같다.
    OpenSSH의 경우 포트를 추가해서 여는 방법은 설정파일(보통은 /etc/ssh/sshd_config)에 다음과 같은 명령을 추가해주면 된다.(관리를 위해 Port 명령이 나오는 근처에 써 주는게 좋을 것 같다.)
    추가해주고 나면 ssh 서버를 재시작해주는것을 잊지 말자.(/etc/init.d/sshd restart 로 재시작이 가능하다. 우분투일 경우 앞에 sudo를 붙여주자.)
    Port 8080 # 8080포트를 열 때
  2. PuTTY가 C:\Program Files\HangulPuTTY 에 설치된 경우, 명령 프롬프트를 연 다음에 다음과 같이 입력한다.(명령 프롬프트는 시작->실행을 선택해서 cmd를 치면 나온다.)
    주의할 점은, -P 뒤에 나오는 숫자는 위에서 찾은 열린 포트 번호를 넣고 server.com 대신에 위에서 설정한 서버 주소가 들어가야한다.
    C:\>cd "C:\Program Files\HangulPuTTY"
    C:\Program Files\HangulPuTTY>PUTTY -D 8080 -P 8080 -ssh server.com
  3. 잠시 기다리면 login as: 라는 프롬프트가 뜨면서 입력을 기다린다. 여기서 자신의 해당 서버 계정 아이디와 비밀번호를 입력해주면 로그인이 된다. 비밀번호는 원래 뭘 치더라도 보이지 않기 때문에 당황하지 말고 침착하게 비밀번호를 입력하자.
  4. 로그인에 성공하면 포트가 열리고 proxy 서버가 준비된다. 궁금하면 명령 프롬프트에서 netstat -a 를 통해 열린 포트를 확인해보면 된다.
  5. 이제 사용할 어플리케이션에서 Socks5 프록시 서버를 설정해줄 차례다. 웬만한 어플리케이션은 이걸 설정할 수 있게 되어 있지만 설정할 수 있는 메뉴가 없는 경우 FreeCap이나 SockCap 같은 어플리케이션의 힘을 빌릴 수 밖에 없다. 여기서 예를 들 어플은 Internet Explorer를 예로 들겠다.
  6. 도구->인터넷 옵션을 선택하여 인터넷 옵션 창을 띄운 후 연결 탭을 누른다.
  7. LAN 설정 버튼을 누른 뒤 프록시 서버 란의 체크박스를 눌러 프록시서버를 켠다.
  8. 고급을 눌러서 프록시 설정을 켠 다음, “모든 프로토콜에 같은 프록시 서버 사용”의 체크를 해제하고 모든 칸을 비운 다음 Socks 옆에 localhost를 입력한다. 그 옆에 비어있는 포트 란에는 위에서 PUTTY를 실행할 때 -D 옆에 적어준 숫자를 적어주면 된다.
  9. 확인을 눌러서 설정을 적용한 뒤 인터넷을 해 본다. 잘 될 것이다.
  10. 네이트온에도 비슷하게 찾아가면 Socks5 혹은 Socks 프록시 서버 설정이 있다. 설정해주면 방화벽이 어쩌고 투정부리던 네이트온도 인터넷이 가능해진다.
이렇게 우회하게되면 덤으로 패킷 암호화가 이루어져 다른 사람이 훔쳐볼 수 없게 되는 장점도 있다.

  • 냥이 2009.03.15 22:10

    좋은 정보 소개 감사드립니다.

    저는 리니지 VPN을 하려하는데
    VPN 서버를 운영하지 않고
    SSH로 가능한지요?

    서버의 root권한으로 2000포트(리니지사용포트)를 오픈하고, 아니면 SSH를 2000포트로 여는 것인지?

    Freecap 등으로 이용하면
    (리니지의 경우 프록시서버 기능설정이 없기에..)

    VPN서버운영을 하지 않고도 SSH로 가능한지 여쭤보고싶습니다.

    • Favicon of http://blog.gwangyi.kr BlogIcon gwangyi 2009.03.21 21:48

      외국에서 리니지 접속이 안되는가보죠?;

      ssh 서비스의 경우 기본적으로 21번 포트를 사용합니다. 하지만 특정 네트워크에서 외부의 21번 포트로 접속을 못할 때가 있는데 이를 위해서 포트를 추가해서 여는 것 뿐입니다.

      여기서 설명하는 방법에서는 ssh 서버 외의 포트른 아무 의미가 없습니다... 랄까, root 권한으로 2000번 포트를 연다는 말의 의미를 모르겠군요 -_-;;

  • bongya 2013.01.04 21:17

    들어오고 보니 성광이 블로그네ㅋㅋ
    본문과 댓글이 작은 오류들이 있지만, 좋은 정보 배워간다~