IT이야기/네트워크

FTP vs SFTP: 파일 전송 프로토콜의 차이와 보안 강화 방법

Chiba-in 2025. 2. 28. 07:30

🔹 FTP와 SFTP란?

1. FTP(File Transfer Protocol)의 정의

FTP(File Transfer Protocol)네트워크를 통해 파일을 전송하는 가장 기본적인 프로토콜입니다.
서버와 클라이언트 간 파일 업로드, 다운로드, 수정, 삭제 등의 기능을 제공합니다.

FTP의 주요 특징:

  • TCP 기반의 파일 전송 프로토콜 (포트 21 사용)
  • 사용자 인증 필요 (ID/PW 기반 로그인)
  • 보안 기능이 없음 (데이터 평문 전송, 암호화되지 않음)

✔️ FTP 연결 예제 (Linux CLI 사용)

ftp ftp.example.com

📌 FTP는 보안이 취약하여, SFTP 또는 FTPS와 같은 보안 프로토콜 사용이 권장됨


2. SFTP(Secure File Transfer Protocol)의 정의

SFTP(Secure File Transfer Protocol)SSH(Secure Shell)를 기반으로 한 파일 전송 프로토콜입니다.
FTP와 달리 데이터를 암호화하여 전송하므로 보안성이 강화됨

SFTP의 주요 특징:

  • SSH 프로토콜을 이용한 보안 파일 전송 (포트 22 사용)
  • 데이터 암호화 지원 (키 기반 인증 가능)
  • 방화벽 환경에서도 안정적인 파일 전송 가능

✔️ SFTP 연결 예제 (Linux CLI 사용)

sftp user@example.com

📌 SFTP는 FTP보다 보안성이 뛰어나며, 원격 서버에서 안전한 파일 전송이 가능함


🔹 FTP vs SFTP 비교

구분 FTP SFTP
보안성 없음 (평문 전송) 있음 (SSH 기반 암호화)
포트 번호 21 22
데이터 전송 방식 제어 채널(21) + 데이터 채널(랜덤) SSH 프로토콜 사용
속도 빠름 상대적으로 느림 (암호화 처리)
사용 사례 내부 네트워크 파일 공유 보안이 필요한 원격 파일 전송

📌 FTP는 내부 네트워크에서, SFTP는 인터넷을 통한 안전한 파일 전송에 적합


🔹 FTP와 SFTP의 주요 명령어

1. FTP 주요 명령어

✔️ FTP 접속

ftp ftp.example.com

✔️ 파일 목록 조회

ls

✔️ 파일 다운로드

get file.txt

✔️ 파일 업로드

put file.txt

✔️ FTP 종료

bye

📌 FTP는 평문으로 파일을 주고받으므로, 보안이 중요한 환경에서는 사용을 지양해야 함


2. SFTP 주요 명령어

✔️ SFTP 접속

sftp user@example.com

✔️ 파일 목록 조회

ls

✔️ 파일 다운로드

get file.txt

✔️ 파일 업로드

put file.txt

✔️ 디렉토리 생성

mkdir new_folder

✔️ SFTP 종료

exit

📌 SFTP는 SSH를 기반으로 동작하여 보안이 강화된 파일 전송이 가능함


🔹 FTP와 SFTP의 보안 이슈 및 해결 방법

1. FTP 보안 문제

  • FTP는 암호화가 없기 때문에 패킷 스니핑(Packet Sniffing) 공격에 취약
  • FTP 계정 정보(ID/PW)가 평문으로 전송되어 중간에서 가로챌 위험 존재

✔️ 해결 방법:

  • FTP 대신 SFTP 또는 FTPS(SSL/TLS 적용 FTP) 사용
  • 방화벽 및 VPN 활용하여 외부 접근 제한

2. SFTP 보안 강화 방법

SSH 키 기반 인증 설정 (비밀번호 없이 안전한 접속 가능)

✔️ SSH 키 생성 및 서버 등록 (Linux)

ssh-keygen -t rsa -b 4096
ssh-copy-id user@example.com

✔️ SFTP 전용 사용자 계정 제한 (chroot 적용)

sudo nano /etc/ssh/sshd_config
# 다음 설정 추가
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp

📌 SSH 키 인증과 Chroot 환경을 설정하면 SFTP 보안성이 더욱 강화됨


🔹 FTP 및 SFTP 서버 구축 방법

1. FTP 서버 구축 (vsftpd 사용, Ubuntu 기준)

✔️ FTP 서버 설치

sudo apt update
sudo apt install vsftpd

✔️ FTP 설정 파일 수정 (/etc/vsftpd.conf)

anonymous_enable=NO
local_enable=YES
write_enable=YES

✔️ FTP 서비스 재시작

sudo systemctl restart vsftpd

📌 vsftpd는 FTP 서버를 간단하게 구축할 수 있지만, 보안 문제로 SFTP 사용이 권장됨


2. SFTP 서버 구축 (OpenSSH 사용, Ubuntu 기준)

✔️ SSH 서버 설치

sudo apt update
sudo apt install openssh-server

✔️ SFTP 전용 사용자 추가

sudo useradd -m sftpuser -s /usr/sbin/nologin
sudo passwd sftpuser

✔️ SSH 설정 수정 (/etc/ssh/sshd_config)

Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp

✔️ SSH 서버 재시작

sudo systemctl restart ssh

📌 SFTP는 SSH 기반으로 동작하므로, 보안이 강력하고 방화벽 설정이 간편함


📌 결론

FTP는 기본적인 파일 전송 프로토콜이지만, 보안이 취약하여 SFTP 사용이 권장된다.
SFTP는 SSH 기반으로 데이터를 암호화하여 안전한 파일 전송을 제공한다.
FTP 서버(vsftpd)와 SFTP 서버(OpenSSH)는 리눅스 환경에서 손쉽게 구축할 수 있다.
보안이 중요한 환경에서는 SSH 키 인증 및 SFTP 전용 사용자 계정을 설정해야 한다.