Tips

SSH 터널링으로 회사방화벽 우회하기

NEORAY 2012. 12. 1. 11:47


별 관계없는 사진입니다


대부분의 회사나 대학교 등의 기관들은

내부에서 외부로 나가는건 거의 다 되고 외부에서 내부로 들어오는 것은

막아 놓은 경우가 많다


근데 그 기관에 유닉스 서버를 구동하고 있는 경우라면 22번 포트 ssh 포트가 열려있는 경우가 있다

(여기서는 22번 포트로 예를 든 것이지만 그냥 포트 열려 있는게 뭔지 안다면 SSH 서버 포트를 변경하면된다)


이 방법은 회사에서 내부로 들어오는 포트중 ssh포트만을 열어 놓았고

그리고 내부에 본인의 컴퓨터가 있을 시

외부에서 내부의 컴퓨터를 제어할 때 사용할 수 있는 방법이다

(회사에 업무 처리할게 남았다거나 혹은 회사에 파일을 집으로 옮기거나)

먼저 


※SSH란

Secure Shell 의 약자로

통신 프로토콜의 하나인 텔넷(Telnet)과 거의 비슷한데

이 텔넷이라는 것이 평문통신이라 워낙에 보안에 취약하다 보니

이 보안을 강화하기 위해 패킷을 암호화 하도록 만든 것이다


그리고 SSH터널링 이란

이 SSH라는게 상당히 보안성이 좋기 때문에

SSH 접속을 다른 암호화 접속을 사용하지 않는 프로그램이

암호화 접속을 사용할 수 있도록 포트 포워딩 해주는 것입니다.


SSH는 포트를 포워딩 해준다는 것을 이용해

VNC을 사용해 보도록 하지요


모식도를 보자면 대충 이렇습니다

(구글에서 대충퍼와서 수정만 좀 한거라 그림이 상당히 허접하긴 합니다)

방화벽이 ssh외에 다른 포트들을 필터링 시켜 버릴때

사내 내 컴퓨터에 SSH서버를 설치하여

터널을 뚫는것이다

그래서 터널을 통하여 VNC과 RDP를 이용할 수 있다


퇴근 전에 SSH서버와 VNC서버를 컴퓨터에 설치한다

SSH서버 설정도 올릴려고 했는데

길바닥에 널릴 정도로 흔한게 SSH서버 설정인것 같아 생략했다


SSH서버는 윈도우용으로 Cygwin을 깔아서 OpenSSH를 설치하는방법 (쌩판 윈도우용도 있다 )

                                   FreeSSHd를 설치하는방법

     Bitvise SSH(구 WinSSHd 사명을 알리려는 수작인지 이름을 바꾸었다)를 설치하는 방법 등이 있다

     Bitvise SSH와 FreeSSHd는 상용으로는 사용을 못하기 때문에 감사 뜨면 클난다


리눅스 용으로는 그냥 걱정없이 OpenSSH를 이용하면 된다

아마 배포판 마다 그냥 설치시 기본 포함 되어 있을 것이고

sshd만 활성화 시켜주면 된다



그리고 집에서

PuTTY를 이용하여 (다른 SSH클라이언트들도 거의 동일하다)


Tunnels탭에서 터널을 생성한다(타 클라이언트에서는 Forwarding이라고도 한다)

 Source port(다른 클라이언트에는 local Port라고도 한다)에는

내 몇번포트를 SSH터널로 포워딩하고 싶은지를 넣고

Destination(타 클라이언트에는 Remote라고도 한다) 에는

내가 source port로 보낸 패킷을 어디에 몇번포트로 포워딩하고 싶은지를 적는다

예를 들어 내가 VNC을 이용하고 싶을때 


Source Port에다가는 VNC포트인 5900이나 5901을 넣고

(꼭 저 포트를 안넣어도 된다 아무거나 입력하고

접속할때 포트만 잘 입력해주면 된다

도착포트가 중요하지 보내는 포트는 별로 중요치 않다)


Destination에는 VNC에 접속하고 싶은 주소:포트를 입력하면 된다


여기서 나는 내가 VNC을 하고자 하는 컴퓨터가 곧 서버이므로

서버ip:5900을 입력하였다


접속할 아이피와 포트를 입력후 Open을 누른다

(서버에서 포트를 22번 기본 포트가 아닌 다른걸로 바꾼 경우 Port에 바꾼 포트를 입력한다)

여기서 Save를 하게 되면

다음 연결시 불러 올 수 있어 상당히 편하다


접속을 하게되면 로그인 아이디와 비밀번호를 입력한다


로그인을 완전히 하게되면 윈도우 명령프롬프트를 볼 수 있는데

(리눅스라면 리눅스 터미널이 보인다)

그냥 이대로 놔두고 VNC 뷰어를 실행한다



아이피에 상대방 아이피를 쓸 것 없이 localhost:포트 를 입력한다

이유는 터널링으로 내 로컬포트 5900으로 보내게 설정해 놓았으니

포트는 5900이라면 생략가능하고 5901이면 1만 입력하면된다


그러면 VNC로그인 창이 뜨는데 설정해 놓은 비밀번호를 입력한다


일단 연결이 되긴 했는데 언제쯤 공공기관과 회사는

XP와 엑티브X 를 버릴 수 있을 까요

윈도우 8이 나온 시점에;;;

그리고 XP지원 끊길때 까지 얼마 남지 않았죠


아 그리고 꼭 SSH서버가 깔린 곳만 제어할 수 있는건 아닙니다

일단 SSH로 회사 내부망에 들어온 상태니 서버를 통해 다른 내부망에 있는 어떤 컴퓨터로도 접근이 가능합니다

예를 들어 ip뒷자리 22인 사내 내컴퓨터에 VNC를 이용하면서도

ip 뒷자리가 39인 사내 프로젝트 서버로 접속하고 싶을때 

세팅을 저렇게 합니다

포트포워딩으로 22번포트가 연결중일 테니 Source 포트는 맘에드는 걸로 넣어주고

도착지 포트만 제대로 22로 넣어줍니다



그래서 내 컴퓨터에 연결이 되었을 때 창을 하나 더 띄워

ip에 localhost(127.0.0.1)을 넣고 포트에 아까설정한 51을 입력하면


사내 프로젝트 서버에도 동시 접속됩니다

(솔찍히 이건 이렇게 할 필요 없었는데 예를 들기 위해 보여준것)


이런식으로 방화벽이 존재 하더라도

 윈도우 RDP등등 여러가지들을 이용할 수 있습니다


위처럼 설치까지도 귀찮다 하시면

그냥 DD-WRT지원하는 공유기나 라즈베리파이 같은거 사내에 넣어놓고 그안에 있는 SSH서버 이용하시면 되겠습니다


오타, 잘못된점, 지적 감사히받습니다