SSH 터널링을 통한 FTP 사용

요즘같이 스니핑툴을 흔하게 구할 수 있는 상황에서는 모든 명령(접속 아이디, 암호 등)이 평문으로 전송되는 FTP는 사용하기가 많이 꺼려지죠..

안타깝게도 DS-106e는 기본으로 SFTP를 지원하지 않습니다.

다음은 SFTP를 이용하지 않고, SSH의 터널링을 이용한 FTP 접속 방법에 대해서 설명합니다.

이 방법은 또한 FTP 접속을 차단해둔 네트워크 환경에서도 FTP 서버로 연결할 수 있습니다.

[#M_[ 전체 내용 보기.. ]|[ 내용 숨기기.. ]|

전 터널링이라는 기술을 자주 사용하고 있습니다.

예를 들면, 회사 업무상 원격지에 있는 서버에 접속해야하는 경우가 종종 발생합니다.

문제는 이 서버가 있는 곳에서 외부에서의 접근을 모두 차단해 두었습니다.

서버의 프로그램에서 문제가 발생하거나 하면 직접 방문해서 처리해야 됩니다. 당연히 네트워크 관리부서에서는 특정 포트를 열어줄리가 없죠.. 왔다갔다 하는데 시간도 많이 걸리고 귀찮죠..

그래서 서버에 reverse connection 기능을 가진 텔넷 프로그램을 만들어 구동시켜 두었습니다. 이 프로그램이
외부로 주기적으로 접속을 시도해 외부의 서버 프로그램과 연결이 되면 그때부터는 마음대로 해당 서버에 접속을 할 수 있습니다.

그 후 터널링 프로그램을 구동해서 DB나 웹 등으로 접근을 하구요..

물론 저처럼 reverse connection 기능을 가진 텔넷 프로그램을 사용하지 않고도, VNC 서버의 reverse
connection 기능을 이용하거나 reverse connection 기능을 가진 다른 프로그램을 이용해도 됩니다.

본론으로 들어가서 FTP 접속에 관해서 설명드리겠습니다.(뭐 이곳에 계시는 분들이 고수분들이 많아서 대부분 알고 계실 듯합니다만…)

먼저 FTP 서버를 설정합니다.

FTP 서버의 포트와 패시브 모드 시 사용할 포트를 지정합니다. 반드시 FTP 서버에서 패시브 모드를 지원해야됩니다.

FTP 설정 화면
http://isulnara.com


FTP 서버 데몬을 재시작한 후

PuTTY를 준비하고, 다음과 같이 설정합니다.

Connection – SSH – Tunnels에서

Source port에 임의의 포트(2121)를 입력 <- FTP 클라이언트에서 사용할 포트

Destinationlocalhost:21을 입력 <- FTP 서버가 21번 포트를 사용하고 있을 경우

Add 버튼을 클릭하여 등록

위에서 설정한 것과 동일한 방법으로 패시브모드 시 사용할 포트도 등록합니다.

이 설명에서는 55536~55540를 추가하였습니다.

터널링 포트
http://isulnara.com

암호를 입력하지 않고 SSH로 로그인하기 위해서는 아래 그림에서와 같이 Private key를 지정합니다.  (이 과정은 생략해도 됩니다.)

개인키
http://isulnara.com

다음으로 아래 그림과 같이 세션을 설정합니다. 설정 후 반드시 저장합니다.

세션 설정
http://isulnara.com


Open 버튼을 클릭하고, SSH로 로그인한 다음 FTP 클라이언트의 설정을

서버의 주소는 localhost, 포트는 PuTTY에 설정한 포트 2121을 입력하고, 패시브 모드로 설정합니다.


FTP 클라이언트 설정 화면
http://isulnara.com


위 그림과 같이 설정 후 연결하면 끝입니다.


FTP 접속 완료 화면
http://isulnara.com

참고로 연결되는 과정을 보면 다음 그림과 같습니다.

일반 FTP 클라이언트에서 2121번 포트로 아이디를 평문으로 전송을 하고



FTP 클라이언트 로그인 패킷
http://isulnara.com


PuTTY에서 다시 아이디를 평문으로 localhost의 임의의 포트로 전달하고

PuTTY FTP 로그인 패킷(평문)
http://isulnara.com


PuTTY에서 실제 FTP 서버로 아이디를 암호화하여 전송하는 것을 볼 수 있습니다.

PuTTY FTP 로그인 패킷(암호화)
http://isulnara.com


암호도 위와 동일하게 전송이됩니다.

위에서 설명드린 방법으로 FTP, HTTP, DB 등 특정 포트를 SSH 터널링을 이용하여 연결할 수 있습니다.

각 이미지는 클릭하면 크게 볼 수 있습니다.

이글은 제가 활동하고 있는 네이버 넷하드 카페에 제가 작성한 글을 그대로 복사한 것입니다.

_M#]