2021. 7. 30. 14:41ㆍServer
FTP란?
파일 전송 프로토콜이다. 이 프로토콜을 사용하여 노드들간에 파일을 업로드하거나 다운로드가 가능하도록 해주는 프로그램들이 많다. Windows같은 경우 내장 프로그램와 FileZilla, Linux의 경우 vsftp등이 그 대표적인 예이다. TCP/IP를 사용하여 특정 포트를 사용하여 데이터를 교환한다. 하지만 FTP는 비밀번호가 평문으로 구성되어 보안이 취약해 FTPS를 사용하는 것을 권장한다. SSH를 기반으로 SFTP가 따로 있으나 이는 이름만 똑같지 사실상 다른 프로토콜이다. 사실상 SSH의 부속기능정도다. 내부망으로는 쉽게 구축이 되나 외부망과 연결해야 되면 보안상으로나 구조적으로나 번거롭다.
주로 Server쪽에서는 20, 21번 포트를, Client 쪽에서는 1500,1501번 포트를 사용한다. FTP에는 기본적인 Positive 모드와 Server가 교환 포트를 알려주는Passive 모드가 있다. 포트가 2개인 이유는 21번 포트로 명령어가 전달되고, 20번 포트로 데이터(파일)이 전달되기 때문이다.
먼저, Positive Mode를 알아보자. Client가 21번 포트로 접속해 Server에게 Client가 파일을 전송받을 1501번 포트를 알려준다. Server는 21번 포트로 Client의 1500번 포트를 통해 알겠다는 답(ACK)와 파일을 주고받을 20번 포트를 알려준다. 이 방식까지는 TCP/IP와 동일하며, 외부망과 연결될때 해킹의 위험을 막기 위해 포트포워딩으로 다른 포트를 여는 경우도 있다. 답을 받은 Client는 1501번 포트에서 Server의 20번 포트로 다시 접속을 시도하고, Server는 제대로 연결됬다는 확인을 해줌으로써 세션이 구축된다. 이로써 파일 구축을 위한 단계가 끝이난다.
두번째 Passive Mode는 조금 다르다. 먼저 Client가 Server의 21번 포트에 접근하면 Server에서는 21번 포트가 '아닌' 1024~65535번의 포트들 중에서 하나를 보내준다. 그럼 Client는 1501번 포트를 열어 응답받은 포트에 접속을 시도하고, 다시 요청을 받은 Server는 ACK를 보내 응답한다. Server입장에서 포트를 임의로 열어주어야 하는 번거로움이 있지만 non-wellknown 포트라 해킹의 위험이 줄어든다.
FTP Server을 Linux와 Windows에서 구축하는 방법은 따로 서술하겠다.
'Server' 카테고리의 다른 글
FTP Server - Linux (0) | 2021.07.30 |
---|---|
FTP Server - Windows 기본 (0) | 2021.07.30 |
DNS Server - Linux 심화 (0) | 2021.07.28 |
DNS Server - Linux 기본 (0) | 2021.07.26 |
DNS Server - Windows 심화 (0) | 2021.07.23 |