“FTP”는 파일 전송을 위해 개발된 통신 프로토콜 입니다.
이 FTP는 사용자 인증과 명령어 입력을 위한 제어 채널과 (기본 21번 포트)
실제 파일을 주고 받기 위한 데이터 채널 (기본 20번 포트) 이렇게 두 개의 포트를 사용하고 있습니다.
여기에서 데이터 채널의 전송 방식에 따라 또 Active 모드와 Passive 모드로 나뉘어 지는데요 오늘은 Active 모드와 Passive 모드의 개념과 차이점에 대해서 알아보도록 하겠습니다.
FTP Active 모드 개념
[1] 클라이언트가 FTP 서버에 접속 합니다.
그리고 클라이언트는 자신의 데이터 포트가 2020 번호라는 것을 서버에 알려줍니다.
[2] FTP서버에서는 클라이언트에서 OK 응답을 보냅니다.
[3] FTP서버 데이터 포트 20번에서 클라이언트 2020 포트로 접속 연결을 요청합니다.
[4] FTP클라이언트는 서버에게 OK 응답을 보내고 대이터 채널을 연결을 유지합니다.
위의 이미지를 잘 보시면
제어 포트 21번 연결은 클라이언트에서 요청을 하고
데이터 포트 20번 연결은 서버에서 요청하는 것을 볼 수 있습니다.
Active 접속 방식은 이렇듯 두 개의 채널이 접속하는 주체가 다릅니다. 이러한 연결의 특징을 방화벽 측면과 라우터 측면으로 이야기해 보겠습니다.
방화벽 측면
윈도우 방화벽을 포함한 모든 방화벽의 기본 동작은 나가는 연결에 대해서는 관대하고, 들어오는 연결은 막아버리는 특징이 있습니다.
때문에 위와 같이 액티브 모드로 FTP 연결을 했을 경우
- 제어 포트 21번은 클라이언트 측면에서 봤을때 나가는 연결이라 방화벽이 막지 않는 반면
- 데이터 채널 연결(20번 포트)은 클라이언트 측면에서 봤을때 들어오는 연결이므로 방화벽이 연결을 막아 버립니다.
때문에 Active 접속 방식의 FTP는 클라이언트 사용자가 직접 데이터 포트(20번)를 방화벽에서 제외 시켜줘야 하는 수고로움이 있습니다.
라우터 측면
라우터 설정도 마찬가지 입니다. 집에서 사용하는 공유기를 예시로 들어보겠습니다.
클라이언트 측면에서 봤을때 나가는 연결인 21번 제어 포트는 문제가 없는 반면, 서버에서 클라이언트로 들어오는 데이터 포트에 대한 연결은 포트 포워딩을 해주지 않으면 연결이 성립하지 않습니다.
이렇듯 Active 모드를 사용하는 FTP 사용자는
- FTP 데이터 포트의 개념도 알아야 하고
- 방화벽 개념도 알아야 하고
- 라우터와 포트의 관계도 알아야 합니다.
단순히 파일만 전송 하고픈 일반 사용자에게는 조금 어려운 개념일 수 있지요. 이러한 문제점을 해결한 것이 Passive (패시브) 모드입니다.
FTP Active 모드 개념
[1] 클라이언트가 FTP 서버에 접속 합니다.
그리고 클라이언트 자신이 패시브 모드를 사용할 것을 알려줍니다.
[2] FTP 서버는 클라이언트에게 데이터 채널 1024(가변) 으로 접속할것을 알립니다.
[3] FTP 클라이언트는 패시브 포트 1024(가변) 포트로 접속 요청을 날립니다.
[4] FTP서버는 클라이언트에게 OK 응답을 보내고, 데이터 채널 연결을 유지합니다.
위 이미지를 보시면 제어 채널(21)과 더불어 데이터 채널도 모두 클라이언트가 서버로 요청되는 것을 보실 수 있습니다.
이렇게 하면 FTP 연결 함에 있어 클라이언트가 서버에게 일방적으로 요청하는 모양새가 되기 때문에 클라이언트는 별도의 방화벽이나 라우터 포트 포워딩 작업을 해주지 않아도 FTP 서버에 연결할 수 있습니다.
사용자가 방화벽, 라우터, 포트포워딩 이 세가지를 몰라도 FTP 연결과 파일 전송을 할 수 있는 것이죠.
물론 서버 입장에서는 받는 연결이기 때문에 서버의 방화벽 허용 작업과 라우터 작업을 해줘야 겠지요? 하지만 이는 서버 관리자만 수고해 주면 끝나는 이야기 입니다. 그러면 수많은 클라이언트가 편해질 수 있습니다.
다만 Passive (패시브) 모드는 다량의 패시브 포트를 서버에서 열어줘야 하기 때문에 보안에 취약해 질 수 있습니다.
때문에 패시브 모드로 FTP를 운영할 때, 데이터 포트 1024~ 65534 범위의 대부분의 포트를 열기 보다는 일부분의 포트만 선택해서 오픈 하는 것을 권장합니다.