본문 바로가기
IT/Network

[network] FTPS & SFTP: 보안 파일 전송의 모든 것 - 소스코드, 네트워크 확인 방법 포함

by Echinacea 2025. 2. 13.
반응형

 

1. FTPS & SFTP란?

인터넷 환경에서 FTP는 파일 전송을 위한 강력한 도구이지만, 보안이 취약하다는 단점이 있다. 이를 해결하기 위해 FTPS(FTP Secure)와 SFTP(SSH File Transfer Protocol)가 등장했다.

  • FTPS (FTP Secure): 기존 FTP에 SSL/TLS 암호화를 추가하여 보안성을 강화한 프로토콜.
  • SFTP (SSH File Transfer Protocol): FTP와는 다르게 SSH(보안 셸) 기반으로 동작하는 안전한 파일 전송 프로토콜.

 

2. FTPS & SFTP의 차이점

좌측FTPS 우측 SFTP

기반 프로토콜 FTP + SSL/TLS SSH (Secure Shell)
포트 번호 기본 21번, TLS 활성화 시 990번 기본 22번
데이터 암호화 SSL/TLS 사용 SSH 암호화 사용
전송 방식 명령 채널과 데이터 채널 분리 단일 채널에서 암호화된 데이터 전송
방화벽 설정 복잡 (다중 포트 필요) 상대적으로 간단 (단일 포트 사용)

 

3. 네트워크가 FTPS인지 SFTP인지 구분하는 방법

사용자는 아래 방법을 통해 자신이 사용하는 네트워크가 FTPS인지 SFTP인지 확인할 수 있다.

  1. 포트 번호 확인:
    • FTPS는 기본적으로 21번(일반) 또는 990번(암호화) 포트를 사용
    • SFTP는 기본적으로 22번 포트를 사용
  2. 명령어로 확인:
    • FTPS는 ftp 명령어를 사용하여 서버에 접속하며, 연결 후 AUTH TLS 또는 AUTH SSL 명령어를 실행해 SSL/TLS 지원 여부를 확인 가능
    • SFTP는 sftp 명령어를 통해 접속하며, 기본적으로 SSH를 통해 작동하므로 ssh [username]@[host] 명령어로도 접근 가능
  3. 로그인 과정:
    • FTPS는 로그인 과정에서 명시적으로 TLS 암호화를 활성화하는 과정이 필요할 수 있음
    • SFTP는 SSH 인증을 기반으로 하므로, 일반적으로 비밀번호 입력 또는 SSH 키 인증 방식으로 로그인 진행
  4. 네트워크 트래픽 분석:
    • FTPS는 SSL/TLS를 사용하므로 Wireshark 등의 네트워크 분석 도구를 사용하면 FTP 데이터 패킷이 암호화되는 것을 확인 가능
    • SFTP는 SSH 기반이므로 패킷이 SSH 프로토콜로 캡슐화되어 전달됨

 

4. FTPS 사용 예제 (Python 코드)

FTPS를 사용하여 서버에 파일을 업로드하는 기본적인 Python 코드 예제:

from ftplib import FTP_TLS

ftps = FTP_TLS('ftp.example.com')
ftps.login(user='username', passwd='password')
ftps.prot_p()  # 보안 모드 활성화

filename = 'example.txt'
with open(filename, 'rb') as file:
    ftps.storbinary(f'STOR {filename}', file)

ftps.quit()

 

5. SFTP 사용 예제 (Python 코드)

SFTP를 사용하여 파일을 업로드하는 방법은 다음과 같다.

import paramiko

host = 'sftp.example.com'
port = 22
username = 'username'
password = 'password'

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(host, port, username, password)

sftp = client.open_sftp()
filename = 'example.txt'
sftp.put(filename, f'/remote/path/{filename}')  # 원격 서버로 파일 업로드

sftp.close()
client.close()

 

6. FTPS & SFTP가 사용되는 곳

FTPS와 SFTP는 보안이 중요한 파일 전송 환경에서 주로 사용된다.

  • 기업 데이터 전송: 중요 문서 및 고객 정보 보호
  • 금융 서비스: 은행 및 보험사 데이터 전송
  • 서버 관리: 안전한 파일 업로드 및 관리
  • 백업 시스템: 클라우드나 외부 서버로 안전한 백업 파일 전송

 

7. FTPS vs SFTP: 어떤 걸 선택해야 할까?

  • FTPS는 기존 FTP 서버를 보안 강화하는 방식이므로, 기존 FTP 환경을 유지해야 할 때 적합.
  • SFTP는 SSH 기반으로 더 강력한 보안을 제공하며, 별도의 FTP 서버 없이 사용할 수 있어 유연성이 뛰어남.
  • 보안이 가장 중요한 경우?SFTP 추천!
  • 기존 FTP 환경을 유지하면서 보안을 강화하고 싶다면?FTPS 추천!

 

8. 결론

FTPS와 SFTP는 기존 FTP의 보안 취약점을 보완한 기술로, 각기 다른 장점을 갖고 있다. 사용 목적과 네트워크 환경에 맞춰 적절한 방식을 선택하는 것이 중요하다.

반응형

댓글