FTP와 SFTP 차이 완전정복

이름은 비슷하지만 완전히 다른 프로토콜 세 가지(FTP, FTPS, SFTP)를 표준 문서 기준으로 구분해 정리했습니다.

한눈에 보기

FTP(File Transfer Protocol)는 RFC 959(1985년 10월)로 정리된 오래된 파일 전송 프로토콜입니다. FTPS는 이 FTP에 TLS 암호화를 얹은 것이고(RFC 4217), SFTP는 FTP와 무관하게 SSH 위에서 동작하는 별개의 프로토콜입니다. 이 글은 세 가지가 어떻게 다른지, 보안과 방화벽 측면에서 무엇을 주의해야 하는지를 정리합니다. 일반 정보이며 특정 서버 설정을 보증하지 않습니다.

📤

FTP란

파일을 주고받기 위해 오래전부터 쓰여온 프로토콜로, 명령을 주고받는 제어 채널(TCP 21번)과 실제 파일이 오가는 별도의 데이터 채널을 함께 사용합니다.

FTP(File Transfer Protocol)는 로그인, 디렉터리 이동 같은 명령은 21번 포트의 제어 채널로 주고받고, 실제 파일 데이터는 별도의 데이터 채널로 전송하는 구조입니다. 이 데이터 채널은 능동 모드에서는 20번 포트를, 수동 모드에서는 그때그때 협상된 포트를 사용합니다. 기본 상태의 FTP는 이 모든 과정을 암호화 없이 평문으로 주고받습니다.

🔒

SFTP란

이미 암호화되어 있는 SSH 연결 위에서 동작하는 파일 전송 방식으로, FTP와는 이름만 비슷할 뿐 사용하는 프로토콜 자체가 완전히 다릅니다.

SFTP(SSH File Transfer Protocol)는 SSH 프로토콜의 하위 기능(서브시스템)으로 동작하며, 기본적으로 SSH와 같은 22번 포트를 사용합니다. 로그인부터 파일 목록 조회, 실제 파일 전송까지 하나의 암호화된 SSH 연결 안에서 전부 이뤄지기 때문에 별도의 데이터 채널을 따로 열 필요가 없습니다. 참고로 SFTP의 명세는 IETF의 인터넷 초안(draft-ietf-secsh-filexfer, 마지막 버전 13, 2006년)으로 남아 있으며 RFC로 확정된 적은 없습니다. 또한 IANA 포트 목록의 "sftp"(115번)는 이와 무관한 구형 Simple File Transfer Protocol(RFC 913)의 등록입니다.

❗

흔한 오해: SFTP는 "FTP + SSL"이 아니다

SFTP는 FTP 프로토콜과는 무관한 SSH 기반의 별개 프로토콜이며, 실제로 FTP에 암호화를 더한 것은 FTPS라는 또 다른 세 번째 프로토콜입니다.

이름이 비슷해 자주 혼동되지만, SFTP는 FTP 프로토콜을 전혀 사용하지 않고 SSH 위에서 완전히 새로 정의된 방식입니다. 반면 FTPS(FTP over TLS/SSL)는 기존 FTP 프로토콜의 통신 구간에 TLS 암호화를 씌운 것으로, 990번 포트(IANA의 ftps 등록)를 쓰는 암묵적(implicit) 방식이나, 21번 포트에서 평문으로 시작한 뒤 AUTH TLS 명령으로 TLS를 켜는 명시적(explicit) 방식으로 동작합니다. 후자는 RFC 4217("Securing FTP with TLS", 2005년 10월)이 정의합니다. 즉 FTP·SFTP·FTPS는 이름은 비슷해도 서로 다른 세 가지 프로토콜입니다.

🛡️

보안 측면 비교

평범한 FTP는 로그인 정보와 파일 내용이 그대로 노출될 수 있는 반면, SFTP와 FTPS는 방식은 다르지만 둘 다 통신 구간을 암호화해 도청 위험을 크게 줄여줍니다.

암호화되지 않은 FTP로 로그인하면 같은 네트워크 경로에 있는 누군가가 아이디·비밀번호는 물론 전송 중인 파일 내용까지 그대로 들여다볼 수 있습니다. SFTP는 SSH의 암호화 계층을, FTPS는 TLS의 암호화 계층을 각각 활용해 이런 도청 위험을 막아주기 때문에, 민감한 데이터를 다룰 때는 둘 중 하나를 사용하는 것이 권장됩니다.

🧱

방화벽·NAT 통과 이슈

FTP는 제어·데이터 채널이 분리되어 있고 수동 모드에서 포트가 매번 바뀌어 방화벽 설정이 까다로운 편이지만, SFTP는 하나의 포트만 열면 되어 관리가 한결 단순합니다.

FTP는 두 개의 채널을 오가야 하는 구조 특성상 방화벽이나 NAT 장비가 이를 제대로 처리하도록 별도 설정이 필요한 경우가 많았고, 특히 수동 모드에서는 데이터 채널 포트가 매번 다르게 협상되어 방화벽 규칙을 짜기가 더 까다로웠습니다. 반면 SFTP는 SSH와 동일하게 단일 포트(기본 22번)만으로 모든 통신이 이뤄지기 때문에 방화벽 관리가 훨씬 단순합니다.

🧭

언제 무엇을 쓰면 좋을까

오늘날에는 특별한 이유가 없다면 SFTP나 FTPS 같은 암호화된 방식을 우선 고려하는 것이 일반적으로 권장되며, 순수 FTP는 레거시 시스템에서만 제한적으로 쓰이는 경우가 많습니다.

많은 웹 호스팅 서비스와 서버 관리 도구가 이제 SFTP를 기본 또는 우선 옵션으로 제공하고 있으며, SSH 계정이 이미 있다면 별도 설정 없이 바로 SFTP를 사용할 수 있는 경우도 많습니다. 반면 순수 FTP는 오래된 내부 시스템이나 특정 레거시 장비와의 호환을 위해 제한적으로 남아 있는 경우가 대부분이므로, 새로운 환경을 구성한다면 암호화가 되는 방식을 우선 검토하는 것이 안전합니다.

FTP는 어디서 왔나

위키백과(File Transfer Protocol)에 따르면 FTP의 최초 명세는 아베이 부샨(Abhay Bhushan)이 쓴 RFC 114로, 1971년 4월 16일에 발표되었습니다. 당시에는 TCP/IP가 아니라 ARPANET의 NCP 위에서 동작했고, 1980년 6월의 RFC 765가 이를 TCP/IP로 옮겼으며, 현재 기준이 되는 명세가 1985년 10월의 RFC 959(J. Postel, J. Reynolds)입니다. RFC 959에서 제어 연결은 Telnet 프로토콜을 따르고, 데이터 연결은 필요할 때만 맺어지는 "전이중(full duplex) 연결"로 정의됩니다. RFC 959는 비밀번호가 민감한 정보이므로 화면에 표시하지 않는 것이 바람직하다고 언급하지만 전송 구간을 암호화하는 방법은 정하지 않았습니다.

세 프로토콜 비교표

구분FTPFTPSSFTP
바탕RFC 959FTP + TLS (RFC 4217)SSH 서브시스템 (IETF 인터넷 초안)
기본 포트(IANA·문서 기준)제어 21, 데이터 20(능동 모드)명시적 방식은 21에서 시작, ftps 등록은 990(제어)·989(데이터)SSH와 같은 22
암호화기본 없음TLS (데이터는 PROT P 설정 시)SSH 채널 전체
연결 수제어 + 데이터 분리FTP와 동일하나의 SSH 연결

FTPS에서 흔히 놓치는 점이 하나 있습니다. RFC 4217에 따르면 AUTH TLS는 기본적으로 제어 연결만 보호하며, 데이터 연결까지 보호하려면 PBSZ와 PROT 명령으로 보호 수준(P=private)을 지정해야 하고 초기값은 평문(Clear)입니다. RFC도 이 방식이 모든 세션과 전송이 안전함을 보장하지는 않는다고 적고 있습니다. 따라서 "FTPS를 쓰고 있다"와 "파일 내용까지 암호화되고 있다"는 서버 설정에 따라 다를 수 있습니다.

실제 기록으로 보는 사례

사례 1: FTP 바운스 공격 (RFC 2577, 1999년 5월)

M. Allman과 S. Ostermann이 작성한 정보성(Informational) 문서 RFC 2577 「FTP Security Considerations」는 FTP 명세 자체가 가진 약점을 정리합니다. 대표적인 것이 "바운스 공격"으로, FTP가 클라이언트의 요청에 따라 서버가 제3의 호스트로 데이터를 보낼 수 있게 허용하는 점을 악용합니다. 공격자는 PORT 명령으로 다른 호스트의 서비스(예: SMTP, NNTP) 주소를 지정해 서버가 대신 그 서비스에 명령을 전달하게 만들 수 있고, 이는 공격 출처를 숨기거나 주소 기반 접근 통제를 우회하는 데 쓰일 수 있다고 문서는 설명합니다. 문서가 제시한 완화책은 1024 미만 포트로의 데이터 연결 요청을 거부하는 것(응답 코드 504), 또는 PORT 명령을 비활성화하는 것입니다. 교훈은 프로토콜의 "편리한 기능"이 보안 약점이 되기도 한다는 점이며, 서버 소프트웨어를 최신으로 유지하고 불필요한 기능을 끄는 습관과 연결됩니다.

사례 2: 비밀번호가 평문으로 오가는 문제 (RFC 2577)

같은 문서는 6절에서 "모든 데이터와 제어 정보(비밀번호 포함)가 암호화되지 않은 형태로 네트워크를 지나간다"고 명시하고, FTP 보안 확장(RFC 2228) 같은 더 강한 인증·암호화를 권고합니다. 또한 서버가 비밀번호 시도를 무제한 허용하면 무차별 대입에 노출되므로 3~5회 실패 후 연결을 끊고 잘못된 PASS 응답을 5초 늦추는 방안을 제안하되, 공격자가 병렬 연결로 우회할 수 있다는 한계도 함께 적습니다. 이 사례는 "암호화 없는 프로토콜 + 약한 비밀번호"의 조합이 왜 위험한지를 표준 문서 수준에서 보여 줍니다.

사례 3: 웹 브라우저의 FTP 지원 중단 (2021년)

위키백과(File Transfer Protocol) 기준으로 구글 크롬은 88 버전에서 FTP 지원을 완전히 제거했고, 이는 마이크로소프트 엣지 같은 크로미움 기반 브라우저에도 영향을 주었습니다. 파이어폭스는 88 버전에서 FTP를 기본 비활성화한 뒤 90 버전에서 제거했으며 모두 2021년의 일입니다. 브라우저 주소창에 ftp:// 로 파일을 받던 방식이 더 이상 기본 경로가 아니게 되었다는 뜻이므로, 전송 방식을 선택할 때 전용 클라이언트와 암호화 방식을 고려해야 합니다.

방화벽에서 FTP가 까다로운 이유

능동 모드에서는 클라이언트가 PORT 명령으로 자신의 주소·포트를 알리면 서버가 20번 포트에서 클라이언트로 되접속합니다. 방화벽이나 NAT가 이 외부발 접속을 막으면 데이터 전송이 실패합니다. 패시브 모드(PASV)는 서버가 알려 준 포트로 클라이언트가 접속하므로 방화벽 환경에서 널리 쓰이며, 위키백과에 따르면 RFC 1579(1994)가 이 "방화벽 친화적" 방식을 소개했습니다. 방화벽 쪽에서도 NIST SP 800-41 Rev.1은 FTP가 최소 두 개의 포트를 쓰고 그중 하나는 예측하기 어렵다고 적습니다. 반면 SFTP는 SSH의 22번 포트 하나로 모든 통신이 이뤄져 규칙이 단순합니다. 방화벽의 일반 개념은 방화벽 기초 가이드를 참고하세요.

직접 확인해 보기: 어떤 방식을 쓰고 있나

흔한 오해와 정정

한계와 더 알아볼 점

세 방식 모두 "전송 구간"의 안전을 다룰 뿐, 서버 소프트웨어의 취약점이나 약한 비밀번호, 잘못된 파일 권한까지 해결해 주지는 않습니다. 또 SFTP는 표준 문서 상태가 완전히 공식화되지 않았기 때문에 구현체마다 지원하는 기능이 조금씩 다를 수 있습니다. 새 환경을 구성할 때는 사용 중인 서버·클라이언트의 공식 문서를 확인하세요. SSH 자체의 동작은 SSH 프로토콜 가이드에서 볼 수 있습니다.

SFTP의 바탕이 되는 SSH가 궁금하다면

SFTP가 기대는 SSH 프로토콜 자체의 동작 원리가 궁금하다면 SSH(시큐어 셸) 프로토콜이란?를 확인해보세요.

TLS 암호화 원리가 궁금하다면

FTPS가 사용하는 TLS 암호화의 동작 원리가 궁금하다면 TLS 핸드셰이크로 알아보는 HTTPS 연결 원리도 참고해보세요. 서버 공개 포트가 궁금하다면 포트 번호 정리도 함께 볼 수 있습니다.

자주 묻는 질문

그냥 웹사이트에 파일 몇 개만 올릴 건데 FTP를 써도 되나요?

기술적으로는 가능하지만, 로그인 정보와 파일 내용이 암호화 없이 전송되어 노출될 위험이 있습니다. 사용 중인 호스팅 서비스가 SFTP나 FTPS를 지원한다면 가능한 한 그쪽을 우선 사용하는 것이 안전합니다.

SFTP도 SSH 키로 로그인할 수 있나요?

네, SFTP는 SSH 위에서 동작하기 때문에 SSH가 지원하는 인증 방식(비밀번호 인증, 공개키 인증)을 그대로 사용할 수 있습니다.

FTP의 능동 모드와 수동 모드는 무엇이 다른가요?

능동 모드에서는 서버가 클라이언트 쪽으로 데이터 연결을 시작하고, 수동 모드에서는 서버가 알려 준 주소·포트로 클라이언트가 연결을 시작합니다. 클라이언트가 방화벽이나 NAT 뒤에 있으면 수동 모드가 대체로 더 잘 동작합니다.

FTPS의 "명시적"과 "암묵적" 방식은 어떻게 다른가요?

명시적 방식은 21번 포트에서 일반 FTP로 시작해 AUTH TLS 명령으로 TLS를 켭니다(RFC 4217). 암묵적 방식은 접속 즉시 TLS를 쓰며 IANA에 ftps 990번이 등록되어 있습니다. RFC 4217 본문은 "명시적/암묵적"이라는 용어를 쓰지 않으므로 이는 업계에서 통용되는 구분입니다.

SCP와 SFTP도 같은 건가요?

둘 다 SSH를 이용하지만 다른 프로토콜입니다. 위키백과에 따르면 SCP는 파일 전송만 하는 반면 SFTP는 중단된 전송 재개, 디렉터리 조회, 원격 파일 삭제 등을 지원합니다.