본문으로 바로가기

안녕하세요, SATAz입니다.

이번 포스팅은 FTP의 Active Mode와 Passive Mode 에 대해서 설명드리려고 합니다.


IPTables에서 -m 옵션을 활용한 FTP 서비스 방화벽 허용하는 방법을 말씀드리기 전에,

FTP 서비스에서는 어떠한 연결 방식을 제공하는지 알아보고 이해하기 위한 포스팅입니다.






1. FTP(File Transfer Protocol)란?

FTP는 영어 해석 그대로, 파일을 전송하는 프로토콜입니다. FTP 서버에 파일들을 업/다운로드 할 수 있게 해주는 프로토콜이며,
FTP 서버와 FTP Client 간에 통신이 이루어집니다.

기본적인 Active Mode기준에서 인증/명령 포트로 21/tcp 를 사용하며, 데이터채널 포트로 20/tcp를 사용합니다.
이는 FTP 서버 설정상에서 얼마든지 수정하여 사용될 수 있습니다.




2. FTP(File Transfer Protocol)의 통신방식부터 알아보자.

FTP의 파일 전송 방식은 Active Mode와, Passive mode 두가지로 나뉘며,

Active/Passive Mode 차이점을 두줄로 요약하자면 아래와 같습니다.


Active Mode에서는 DATA Channel 요청을 서버->클라이언트 방향으로 접속합니다.

Passive Mode에서는 DATA Channel 요청을 클라이언트->서버 방향으로 접속합니다.


이제 더 자세하게 파고 들어보겠습니다.

 

1) Active Mode의 FTP의 연결 방식

 ①-1 FTP Client에서는 FTP Server의 21번 포트로 인증 요청을 한다. 

 ①-2그리고 Client 자신의 DATA 전송 포트번호(2223)를 패킷에 포함하여 서버에 전송한다.

 ② FTP Server에서는 FTP Client에게 OK 응답을 보낸다.

 ③ FTP Server에서 생성한 20번 포트에서 -> Client의 2223포트로 데이터채널 연결을 요청한다.

 ④ FTP Client는 Server에게 OK 응답을 보내고, 이로서 데이터 채널 연결까지 완료된다.

 


*참고

   - Client PC에서 사용되는 포트번호 2222, 2223은 PC에서 생성된 포트번호입니다. 

     Client에서 생성되는 포트번호는 ">1023(1024 이상)" 중에서 사용 가능한 임의의 포트로 사용됩니다.


   - FTP의 인증/명령포트번호와 데이터채널 포트번호는 서버의 설정에서 마음대로 수정하여 사용하실 수 있습니다.

     (딱히 21/tcp, 20/tcp가 정해진 것이 아니며, 서비스 제공자의 마음대로 설정할 수 있음)



 2) Passive Mode의 FTP의 연결 방식


 ①-1 FTP Client에서는 FTP Server의 21번 포트로 인증 요청을 한다. 

 ①-2그리고 Client 자신이 연결하려는 서비스가 Passive Mode로 연결할 것임을 알린다.

 ②-1 FTP Server에서는 FTP Client에게 OK 응답을 보낸다.

 ②-2 그리고 FTP Server는 데이터 채널 포트번호가 1025라는 것을 Client에게 알려준다.

 ③ FTP Client에서 생성한 2223번 포트에서 -> Server의 1025포트로 데이터채널 연결을 요청한다.

 ④ FTP Server는 Client에게 OK 응답을 보내고, 이로서 데이터 채널 연결까지 완료된다.



*참고  

   - Client PC에서 사용되는 포트번호 2222, 2223은 PC에서 생성된 포트번호입니다. 

     Client에서 생성되는 포트번호는 ">1023(1024 이상)" 중에서 사용 가능한 임의의 포트로 사용됩니다.


   - FTP의 인증/명령포트와 데이터채널 포트번호는 서버의 설정에서 마음대로 수정하여 사용하실 수 있습니다.

     (인증/명령포트 21/tcp 는 정해진 것이 아니며, 서비스 제공자의 마음대로 설정할 수 있음)

     (Passive Mode에서는 데이터채널 포트번호를 특별하게 지정하지 않을 경우, "1023<x<65536(1024과 65535사이)" 중에서  사용가능한 임의의 포트로 자동 사용됨)

     (데이터채널 포트번호의 범위를 지정할 수 있음; ex.50000~50010, 5000~5010 등...)





3. FTP(File Transfer Protocol) 연결방식에 따른 방화벽 설정 주의사항

 1) Active Mode FTP 연결방식의 방화벽 설정

 Active Mode에서는 DATA Channel 요청을 서버->클라이언트 방향으로 접속하기 때문에, Client PC의 방화벽에 20번포트가 차단되어있을 경우에는 데이터채널 연결이 불가능하여 '디렉토리 조회'부터 실패할 것입니다.(물론 인증/명령 포트도 허용되어있어야 함)

 따라서 방화벽상에서는 FTP Server 상에서는 20번포트가 OUTPUT 방향으로 허용설정이 되어야하며, Client PC 상에서는 INPUJT 방향으로 허용설정이 되어야합니다.


 2) Passive Mode FTP 연결방식의 방화벽 설정

 Passive Mode에서는 DATA Channel 요청을 클라이언트->서버 방향으로 접속하기 때문에, FTP Server의 방화벽에서 데이터채널 포트가 차단되어있을 경우에는 데이터채널 연결이 불가능하여 '디렉토리 조회'부터 실패할 것입니다. (물론 인증/명령 포트도 허용되어있어야 함)

 FTP Server에서는 Passive Mode의 데이터채널 포트 범위를 지정할 수 있는데, 별도로 지정하지 않을 경우에는 "1023 < x < 65535" 범위 안에서 임의의 포트번호를 사용하게 된다. 따라서 특별한 범위를 지정하지 않았을 경우에는 방화벽 상에서 FTP Server 상의 1024~65534 포트를 INPUT 방향으로 모두 허용시켜주어야 하며, Client PC 상에서는 OUTPUT 방향으로 1024~65534 범위를 모두 허용시켜주어야 한다. (Client PC 대부분의 1023~65534 포트 OUTPUT 방향 정책은 허용설정이 되어있을 것이다)

 물론, Passive Mode 데이터채널 포트 범위를 지정하면, 지정한 범위의 포트번호만 허용해주면 됩니다.

반응형