* Active Mode
FTP CLIENT --------------------- FTP SERVER
-------------------> 21 (COMMAND CHANNEL)
<------------------- 20 (DATA CHANNEL)
Active Mode인 경우에,
Data Channel은
Control Channel에서 (21번 Port ) "Port" 명령어로
데이터 채널에 사용할 random(?) Port를 클라이언트 -> 서버 방향으로 알려 주는 것으로 알고 있습니다.
Data Channel 연결은 Server(20) -------> Client(클라이언트가 미리 "Port" 명령어로 알려주 포트) 이렇게 접속
위와 같이 이해하고 있습니다.
질문1) 위와 같이 데이터 채널을 굳이 FTP Client에서 알려주는 형태로 만든 이유가 궁금합니다.
컨트롤 및 데이터 채널을 SERVER에서 리슨하는 Passive Mode는 알고 있긴 합니다.
질문2) Active Mode를 사용하려면, 클라이언트 네트워크에서 방화벽을 어떻게 열어 주어야 할런지요 ?
방화벽에서 FTP PORT 명령어를 해석(DPI)하여, 자동으로 열어 주는지요 ? 아니면.. 정해진 포트 Range가 있는지요 ?
NAT에서 문제점이 있을거 같은데... 어떻게 이렇게 문제 없이 사용되는지 궁금합니다.
Passive Mode에서도 random 포트를 서버에서 열어 주어야 되는데, 동일한 질문일 거 같긴 합니다
질문3) Active Mode에서 굳이 20번 포트를 지정(예약)해 두고 사용하는지 궁금합니다. 어차피 클라이언트(데이터 채널 접속 요청)로 사용하니...
질문4) FTP Data Channel은 개별 파일 전송시마다, 끊고 새롭게 여는지요 ? 아니면 Control channel처럼 계속 유지되는지요 ?
감사합니다.
2. 방화벽 기능에 따라 다릅니다. FTP 프로토콜을 신경 안쓰는 방화벽이면 컨트롤포트는 통상적인 방법대로 열고, 데이터포트는 서버 Soruce 20에서 Destination 아무데나 갈 수 있도록 세팅해야 합니다.
3. 프로토콜 설계가 그렇습니다.
4. 새로 엽니다.
그런데 클라이언트도 NAT 하단 방화벽 구간이고 서버도 NAT를 통과하는 구간이라면 Passive를 사용하게 됩니다. 21번을 사용했을 경우는 또 문제가 안되는데 비정규 포트를 쓸경우에는 이게 또 문제가 됩니다.
FTP가 데이터채널과 세션유지 때문에 방화벽과 많이 마찰이 발생하고 이게 어느 클라이언트는 잘되고 어느 클라이언트는 끊기고 대응하기 힘듭니다. 그래서 VPN을 사용해서 NAT를 통과하지 않는게 제일 편한방법입니다. 요즘은 FTP포트 외부로 쉽게 안열어줍니다. 열어준다고 해도 허용된 IP만 열어주고 SFTP를 써야하거나 FTPS를 강제적으로 써야하는게 지금의 보안 이슈입니다. 일반 FTP는 패스워드 너무 쉽게 털려서 사용중지 권고사항중 하나입니다.