[ISA 2000] FTP 서버의 동작 원리(#1/#4)

FTP(File Transfer Protocol) 프로토콜은 일반적으로 많이 사용되는 프로토콜이지만 한편으로는 잘못 알고 있는 프로토콜이기도 하다. 방화벽, 라우터 그리고 다른 인터넷 연결 디바이스를 다룰 때 종종 발생하는 문제점으로는 특정한 FTP 클라이언트 또는 서버 구성이 왜 제대로 동작하지 않느냐이다. 네트워크 및 방화벽 관리자들이 FTP 프로토콜의 동작원리를 이해하고 있다면 발생할 수 있는 FTP 관련 문제점들을 쉽게 해결할 수 있을 것이다.


이 강좌는 모두 4개의 장으로 구성되어 있으며, 목차는 다음과 같습니다.

● FTP 프로토콜의 동작 원리
● FTP 모드
● FTP 프로토콜에 관련된 문제 해결하기
● Secure FTP란 무엇인가 ?

이 글에서는 FTP 프로토콜에 대한 연결 부분에 대해서만 살펴 볼 것이다. 다른 말로 표현하자면 FTP 프로토콜이 어떻게 연결을 생성하는지 이러한 연결이 어떻게 서로 관계되는지에 대해서만 관심을 가질 것이다. 특정한 FTP 클라이언트나 FTP 서버 구성에 대해서는 다루지 않는다.


FTP 프로토콜의 동작 원리

1. 역사 속으로
  FTP는 TCP/IP 네트워크 간에 파일을 교환하는 목적의 일환으로 1970년대에 개발되었다. FTP는 유연한 호환성을 염두에 두고 설계되어 TCP/IP 네트워크가 아닌 네트워크에서도 사용될 수 있고 또한 다양한 시스템 간에 파일을 송수신할 수 있는 기능을 가지고 있다.

FTP의 기본 규격은 1985년 10월자로 RFC 959에 명시되어 있다. FTP에 관련된 추가적인 RFC들이 존재한다. FTP에 관련된 모든 기술 문서들은 다음의 URL에서 찾아볼 수 있다.

  http://www.networksorcery.com/enp/default0403.htm

2. FTP 모델
  FTP는 신뢰할 수 있는 종단간 연결을 제공하는 연결 프로토콜로서 TCP를 사용하는데 특이하게도 두 개의 연결이 사용된다 : 첫 번째 연결은 제어 연결, 두 번째 연결은 데이터 연결(데이터 전송을 관리하는데 사용된다). 제어 연결을 수립한 사용자는 클라이언트로 동작하고, 원격 호스트는 서버 기능을 수행한다고 가정한다.

FTP 애플리케이션의 양쪽 링크에는 PI(Protocol Interpreter)와 DTP(Data Transfer Process)가 내장되어 있다. 또한 링크의 클라이언트 측에서는 사용자 인터페이스가 존재하게 된다.

사용자 삽입 이미지

사용자 인터페이스(User Interface)는 제어 연결을 담당하는 PI와 통신한다. PI는 제어 프로토콜에 응답하는 기능을 제외하고도 데이터 연결을 관리한다. 파일이 전송되는 동안 데이터 관리는 DTP가 수행하게 된다.

3. FTP 프로토콜 모드
  FTP는 제어 연결(주 연결)과 데이터 연결(보조 연결)을 사용하기 때문에 매우 복잡하다. FTP 프로토콜 모드에 따라 데이터 연결의 수립이 결정된다. FTP의 모드에는 두 가지가 있다.

  ● 표준 또는 PORT 또는 Active 모드
  ● Passive 또는 PASV 모드

이제 두 가지 연결의 차이점에 대해 좀더 자세히 살펴 보자

4. 제어 연결
  제어 연결은 명령어의 교환 및 응답을 위해 USER-PI와 SERVER-PI간의 통신 경로를 뜻한다. 이 연결은 Telnet 프로토콜의 방식을 따라 하고 있다.

  FTP 클라이언트가 FTP 서버와 파일들을 교환하고자 할 때 FTP 클라이언트는 먼저 제어 연결을 수립해야 한다. 클라이언트는 임의의 특권을 가지지 않는 N(N>1024) 번 포트에서 FTP 서버의 잘 알려져 있는 포트인 21번 포트로 연결을 생성한다.

정보가 어떻게 서로 교환되는지 다음의 그림을 보면서 살펴 보자.

사용자 삽입 이미지

데이터 전송이 진행되는 동안 제어 연결이 열린 채로 남아 있어야 한다는 점을 주목하자. 즉, 데이터 연결은 열려진 제어 연결이 없다면 존재하지 않는다. 한편으로는 데이터 연결은 항상 존재할 필요는 없으며 제어 연결이 이루어지는 동안 많은 수의 데이터 연결이 있을 수 있다. 마지막으로 사용자는 FTP 서비스의 사용을 끝마칠 때 제어 연결을 닫는 요청을 해야 한다.

5. 데이터 연결
  데이터 연결은 실제 데이터의 전송을 위해 USER-DTP와 SERVER-DTP 간의 통신 경로를 의미한다. 선택한 FTP 모드에 기반하여 데이터 연결을 서버(Active 모드) 또는 클라이언트(Passive  모드)에서 초기화된다.
  Active 모드에서 클라이언트는 서버에게 PORT 명령을 전송한다. 기본적으로 이 명령어는 서버가 데이터 연결을 위해 반대로 연결하기 위해 호스트(IP 주소)와 포트 번호(1024보다 큰)를 알려주게 된다. Port 명령어를 수락한 이후에 서버는 서버의 로컬 20번 데이터 포트에서 PORT 명령어에서 알아 낸 IP 주소와 포트 번호로 데이터 연결을 수립할 것이다.

Passive 모드에서는 클라이언트는 서버로 PASV 명령을 전송한다. 기본적으로 이 명령은 서버가 어떤 데이터 포트로 청취할지(기본 20번 포트가 아님) 그리고 하나를 초기화하기보다는 연결을 기다리기를 요청한다.

원문: http://isaserver.org/articles/How_the_FTP_protocol_Challenges_Firewall_Security.html

reTweet
Posted by 문스랩닷컴
blog comments powered by Disqus


    Web Analytics 태그 앞에 붙여 넣습니다. -->