본문 바로가기

말랑말랑한 이야기

Active Mode 와 Passive Mode 의 차이점

- 실제 데이터가 오가는 Data Port의 접속방식

FTP 서비스는 일반적인 서비스와는 달리 2개의 Port를 사용한다.
- 명령어와 응답이 오가는 Command Port(21번)와 실제 데이터가 오가는 Data Port(20번)로 구성된 TCP 기반의 서비스

[[ Active Mode ]]

- Command Port를 통해 클라이언트가 전해준 정보를 바탕으로 서버가 클라이언트의 Data Port에 접속을 시도한 후
  클라이언트의 요청에 따라 데이터를 클라이언트에 전송

Active Mode의 FTP에서 클라이언트는 사용되지 않는 랜덤한 포트 n(n>1023)을 통해 서버의 Command 포트(21번)에 접속
이때, 포트번호 n에 1을 더한, n+1번 포트의 정보를 서버에 전송하며, 클라이언트는 n+1번 포트를 Listening 하기 시작함
FTP 서버의 Data Port(20번)는 클라이언트에서 지정한 Data Port(n+1)를 통해 클라이언트에 접속

서버에 설치된 방화벽에서는 Active Mode의  FTP가 지원되려면 다음의 통신 채널이 열려있어야함
- FTP 서버의 21번 포트 : 클라이언트에서 접속을 시도할 수 있는 Command Port
- FTP 서버의 21번 포트 >> 클라이언트의 n(n>1023)번 포트 : 서버에서 클라이언트의 Command Port로 응답
- FTP 서버의 20번 포트 >> 클라이언트의 n+1(n>1023)번 포트 : 서버에서 클라이언트의 Data Port로 접속
- FTP 서버의 20번 포트 << 클라이언트의 n+1(n>1023)번 포트 : 클라이언트에서 서버의 Data Port 에 응답

※ Active Mode의 FTP에서 접속문제는 대부분 클라이언트측에서 기인함
     FTP클라이언트느 서버의 Data Port에 직접 접속이 불가능.
     단지 어떤 포트를 Listening 하고 있으며 서버가 데이터 전송을 위해 접속할 클라이언트 포트를 서버에 알려줄 뿐임
     클라이언트에 설치된 방화벽의 입장에서는 FTP 서버가 클라이언트의 특정포트에 접속하려는 시도가
     외부의 시스템 침입으로 간주되어 방화벽에 의해 차단되는 경우가 발생

[[ Passive Mode ]]
- Command Port 뿐만 아니라 데이터 접속도 클라이언트에서 시도하여 서버에 데이터를 요청하고 전송받는 방식

- 서버가 클라이언트에 접속을 시도해야하는 문제점을 해결하기 위해 다른 방식의  FTP 연결이 개발
   Active Mode에서 클라이언트에 설치된 방화벽이 FTP 서버의 접속 시도를 외부의 침입으로 간주하고 차단하는 문제를 해결하기위해
   Passive Mode에서는 두개의 포트 모두 클라이언트에서 서버에 접속을 함

- FTP 연결을 위해 클라이언트는 사용되지 않는 랜덤한 포트 n(n>1023)과 n+1 포트를 열 어둡니다.
  n 포트는 서버의 Command 포트인 21번 포트에 접속함
  클라이언트는 (서버로 하여금 클라이언트의 Data 포트 연결을 허용하기 위해) Port 명령어를 호출하지 않고 Pasv 명령어를 호출함
  서버는 사용되지 않는 랜덤한 포트 p(p>1023)를 열어두고 클라이언트에 해당 정보를 넘겨줌
  클라이언트는 데이터 전송을 위해 자신의 n+1 포트와 서버의 p 포트 연결을 시도

서버에 설치된 방화벽에서는 Passive Mode의  FTP가 지원되려면 다음의 통신 채널이 열려있어야함
- FTP 서버의 21번 포트 :  클라이언트에서 접속을 시도할 수 있는 Command 포트
- FTP 서버의 21번 포트 >> 클라이언트의 n(n>1023)번 포트 : 서버에서 클라이언트의 Command 포트로 응답
- FTP 서버의 p(p>1023)번 포트 : 클라이언트의 n+1(n>1023)번 포트에서 데이터 접속
- FTP 서버의 p(p>1023)번 포트 >> 클라이언트의 n+1(n>1023)번 포트 : 클라이언트의 요청에 대한 응답 및 실제 데이터 전송

※  Passive mode 에서의 문제점
      Passive mode의 FTP가 클라이언트 입장의 문제점을 해결한 방법이라면 서버 입장에서는 포트 전체를 열어두어야하는 문제점이 생김
      FTP의 접속을 위해 서버에 많은 수의 포트가 필요하다는 점이 가장 큰 문제점


명령행 FTP(CMD mode)에서 Passive 모드를 설정하는 방법

1. 시작 / 실행 / cmd 입력하고 확인
2. 명령행에서 FTP 명령을 이용해 Site에 접속 예) c:>ftp ftp.scnt.co.kr
3. User ID와 Password 를 입력하고 FTP 서버로 로그인 한다.
4. FTP 프롬프트가 뜨면 다음과 같은 명령을 입력한다
     ftp>quote pasv