Daily Notebook

FTP, FTPS, SFTP(SSH)

by 배부른코딩로그
'디바이스 간에 데이터를 교환하기 위한 통신 규약'이 바로 '프로토콜'입니다.
FTP/SFTP 역시 프로토콜의 하나의 종류이며, 어떤 데이터를 주고받기 위한 통신 규약인지 알아볼 필요가 있습니다.

FTP는 일반 사용자도 쉽게 접할 수 있습니다. NAS 서버나 FileZila 같이 주변에 가까이 존재하기 때문입니다. FTP 같은 프로토콜은 인터넷 기술표준화위원회(IETF, Internet Engineering Task Force)에서 RFC(Request For Comment)라는 항목으로 표준화가 만들어져 있습니다.

 

FTP(File Transfer Protocol, Default Port 21)

파일 전송을 위한 가장 기본이 되는 통신규약입니다. 다만, 현재는 보안 이슈로 인하여 비지니스 로직에서는 권장하지 않습니다. 기억해두셔야 할 점은 FTP는 명령어를 전달하는 포트(21)과 데이터를 전달하는 포트(20 or Random)가 있다는 점입니다. 그리고, 데이터를 전달하는 방식에 따라 'Active mode'와 'Passive mode'가 존재합니다.

 

https://www.to-increase.com/business-integration/blog/cs-ftp

 

1) Active mode

클라이언트가 서버에 접속을 하는 것이 아닌 "서버가 클라이언트에 접속하는 방식"입니다. 만약, FTP 클라이언트에 방화벽이 설치되어 있는 등 외부에서의 접속을 막아둔 상태라면 정상적인 FTP 접속이 이뤄지지 않습니다.

 

  1. 클라이언트가 21번 포트로 접속을 시도합니다. (패시브 모드)

  2. 서버에서는 사용할 DATA 채널 포트를 클라이언트에게 알려줍니다.(ACK)

  3. 클라이언트는 다른 포트를 열어 서버가 알려준 포트로 접속을 시도합니다.

  4. 서버가 클라이언트의 요청에 응답(ACK)합니다.

 

2) Passive mode

"클라이언트가 서버에 접속하는 방식"입니다. 패시브 모드는 액티브 모드에서 사용했던 20번 포트를 사용하지 않고, 1024번 이후의 임의의 포트를 DATA 채널 포트로 사용합니다.

  1. 클라이언트는 서버의 21번 포트로 접속 후 자신이 사용할 DATA포트를 서버에 미리 알려줍니다.

  2. 서버는 클라이언트 요청에 응답(ACK)합니다.

  3. 서버의 20번 DATA포트는 클라이언트가 알려준 DATA포트로 접속을 시도합니다.

  4. 클라이언트가 요청에 응답(ACK)합니다.



3) 두 연결 방식에 따른 주의사항

 

액티브 모드의 경우, 클라이언트 측의 방화벽이 20번 포트를 차단하고 있다면 DATA 채널 연결이 불가능합니다. 따라서, 서버측의 20번 포트는 아웃바운드(OUTBOUND, 내부서버→외부서버) 허용, 클라이언트는 인바운드(INBOUND, 외부서버내부서버) 허용하는 방화벽 설정에 필요합니다.

 

액티브 모드의 경우, 서버 측의 DATA 채널 포트가 막혀있다면 연결이 불가능합니다. 그리고 DATA 채널 포트의 범위를 지정할 수 있는데, 별도로 지정하지 않는 경우는 1024 ~ 65535번의 포트를 사용합니다. 따라서, 서버측의 INBOUND에 대한 모든 허용이 필요합니다. 이에 따른 문제가 발생할 수 있기 때문에 서버 측에서 특정 범위의 DATA 채널 포트만을 허용해준다면, 발생할 수 있는 보안 이슈에 대해 어느 정도 해결할 수 있습니다.

 

FTPS

FTPS는 HTTPS와 동일한 개념입니다. 21번과 20번 포트를 안전하게 암호화하여 파일을 송수신한다는 뜻입니다.

 

SFTP(Secure File Transfer Protocal)

영어에서 Secure가 붙고 뒤는 동일하듯이 기존 FTP보다 보안이 강화된 파일 전송 프로토콜입니다. 일반적인 FTP의 경우 파일을 전송할 경우, 로그인 정보나 파일 정보에 대하여 암호화를 하지 않기 때문에 계정 및 중요 파일에 대한 정보가 노출될 위험이 있습니다. SFTP는 파일 전송시 모든 정보를 암호화하여 통신하며, 사용법은 일반 FTP와 동일합니다.

 

SFTP는 SSH의 파일 전송 버전이라고 생각하실 수 있습니다. SFTP와 SSH는 기술적으로 별도의 개념이지만, SSH과 같은 보안 채널 위에 FTP를 연결 후 파일 송수신이 수행되는데, 이 말은 서버가 이미 클라이언트와 서로 인증이 된 관계이고 현재의 연결은 안전하다는 뜻이 됩니다. 이를 위해서 서버에서 클라이언트와 인증되어 있어야 하고, 클라이언트 사용자 증명을 프로토콜에 이용할 수 있어야 합니다.

https://torquemag.io/2018/02/introduction-to-ssh-and-sftp/

 


- 출처 -

https://nhj12311.tistory.com/76 [This is IT]

https://madplay.github.io/post/ftp-active-passive [MadPlay's MadLife] 

반응형

'IT 용어' 카테고리의 다른 글

[HTTP] HTTP Header 정리  (1) 2021.06.30
[WEB] URI, URL, URN  (0) 2020.07.04
써드파티(3rd Party)  (0) 2020.04.07

블로그의 정보

배부른코딩로그

배부른코딩로그

활동하기