🔹 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 전용 사용자 계정을 설정해야 한다.
'IT이야기 > 네트워크' 카테고리의 다른 글
ARP(Address Resolution Protocol): 네트워크 장치 간 통신의 핵심 원리 (0) | 2025.02.28 |
---|---|
SMTP vs POP3 vs IMAP: 이메일 프로토콜의 차이점과 활용 방법 (0) | 2025.02.28 |
HTTP vs HTTPS: 웹 통신 프로토콜의 차이와 보안 강화 방법 (0) | 2025.02.28 |
DNS: 인터넷 주소 체계의 핵심, 도메인 네임 시스템 완벽 정리 (0) | 2025.02.28 |
DHCP: 네트워크 자동 IP 할당의 핵심 기술 완벽 정리 (0) | 2025.02.28 |