개발 환경 | 도구/서버 | 인프라 | 배포 | 운영

[NetWork] 파일 FTP / SFTP 란 무엇일까?

알쓸신개 2024. 12. 23. 17:16

1. 개요

FTP(File Transfer Protocol)는 원격 서버와 클라이언트 간 파일 전송을 위한 인터넷 통신 규약입니다. 기본적으로 내 컴퓨터의 파일을 계정을 제공하는 서버로 전송하거나, 서버의 파일을 내려받는 방식으로 사용됩니다. 다만, 기본 FTP는 암호화되지 않은 평문 방식으로 동작하여 보안에 취약한 단점이 있어, 실무에서는 보안이 강화된 SFTP가 많이 사용됩니다.


2. FTP (File Transfer Protocol)

2-1. FTP의 개념 및 특징

  • 정의:
    FTP는 원격 서버와 클라이언트 간 파일 전송을 위한 프로토콜로, 파일 업로드 및 다운로드 작업에 사용됩니다.
  • 기본 포트:
    • 기본 포트: 21
      다만, 상황에 따라 포트를 변경하여 사용할 수도 있습니다.
  • 보안 문제:
    • FTP는 전송되는 데이터와 명령어가 암호화되지 않으므로 보안에 취약합니다.
    • 평문 전송 방식은 중간자 공격(man-in-the-middle attack) 등의 보안 위험에 노출될 수 있습니다.

2-2. FTP의 두 채널 구조

FTP는 다음과 같이 두 개의 채널을 통해 동작합니다.

  • 제어 채널:
    파일 전송과 관련된 명령어와 응답을 전송하는 데 사용되며, 기본 포트 21을 사용합니다.
  • 데이터 채널:
    실제 파일을 전송하는 데 사용되며, 상황에 따라 별도의 동적 포트를 할당받습니다.

참고: 두 채널 모두 암호화되지 않아 보안 이슈가 존재합니다.

2-3. 액티브 모드 vs 패시브 모드

FTP 전송 모드에는 두 가지 주요 방식이 있습니다.

  • 액티브 모드 (Active Mode):
    클라이언트(예: 영희)가 서버(예: 철수)에게 자신이 사용할 포트 번호를 전달하고, 서버가 해당 포트로 연결을 시도하여 데이터 전송이 이루어집니다.
  • 패시브 모드 (Passive Mode):
    서버가 클라이언트에게 데이터 전송에 사용할 포트 번호를 알려주고, 클라이언트가 해당 포트로 접속하여 파일을 전송받거나 업로드합니다.

비유:
액티브 모드에서는 클라이언트가 서버에 “전화번호(포트 번호)”를 제공하여 서버가 전화를 거는 방식이고, 패시브 모드에서는 서버가 클라이언트에 “전화번호”를 제공하여 클라이언트가 전화를 거는 방식이라고 생각할 수 있습니다.


3. SFTP (SSH File Transfer Protocol)

3-1. SFTP의 개념 및 특징

  • 정의:
    SFTP는 SSH(Secure Shell) 기반의 파일 전송 프로토콜로, 일반 FTP와 달리 데이터 전송이 암호화되어 보안성이 뛰어납니다.
  • 기본 포트:
    • 기본 포트: 22
  • 보안:
    SFTP는 SSH의 암호화 기능을 활용하여 데이터 전송 시 기밀성과 무결성을 보장합니다. 따라서 중간자 공격 등에서 안전하며, 단일 포트(22)만 사용하여 방화벽 설정도 효율적으로 관리할 수 있습니다.

4. 관련 프로토콜 및 개념

4-1. 텔넷 (Telnet)

  • 정의:
    텔넷은 인터넷을 통해 원격지 호스트에 접속할 때 사용하는 표준 프로토콜입니다.
  • 특징:
    보통 텍스트 기반의 명령어 인터페이스를 제공하지만, 보안성이 부족하여 현재는 잘 사용되지 않습니다.

4-2. SSH (Secure Shell)

  • 정의:
    SSH는 원격 컴퓨터에 안전하게 접속하기 위한 프로토콜로, 강력한 암호화 기능을 통해 모든 데이터가 암호화됩니다.
  • 특징:
    SFTP 및 원격 명령어 실행 등에 활용되며, 높은 보안성을 제공합니다.

5. FTP와 SFTP 보안 차이

  • FTP:
    • 데이터와 명령어가 평문으로 전송되어 보안에 취약합니다.
  • SFTP:
    • SSH 기반 암호화 기술을 사용하여 데이터 전송 중 보안을 보장합니다.
    • 단일 포트(22)를 사용하므로 방화벽 설정 및 관리가 보다 안전합니다.

6. FTP 사용법 및 설정

6-1. FTP 클라이언트 설정

FTP 클라이언트를 실행하면 보통 다음과 같은 정보를 입력해야 합니다.

  • 프로필 이름:
    웹사이트에서 사용할 이름
  • 호스트 이름 또는 주소:
    예: ftp.example.com 또는 IP 주소(예: 192.168.0.1)
  • 사용자 ID 및 비밀번호:
    서버 관리자가 설정한 인증 정보
    • 일부 서버는 익명(Anonymous) 접속을 허용하기도 합니다.

6-2. 전송 모드 선택: ASCII vs Binary

  • ASCII 모드:
    텍스트 파일 전송에 적합하며, 일반적으로 줄바꿈 문자 등의 문자 인코딩 처리를 수행합니다.
  • Binary 모드:
    이미지, 실행 파일, 프로그램 또는 음악 파일 등 바이너리 데이터를 전송할 때 필수적입니다.
    • 주의: 잘못된 모드 선택 시 파일 손상 및 전송 오류가 발생할 수 있습니다.

7. 결론

FTP는 전통적인 파일 전송 프로토콜로서 과거에는 널리 사용되었으나, 암호화되지 않아 보안상 취약한 단점이 있습니다. 이에 비해 SFTP는 SSH 기반 암호화 기법을 사용하여 안전하게 파일 전송을 수행하므로, 현대 실무에서는 SFTP를 주로 채택하고 있습니다.
FTP와 SFTP의 채널 구조, 전송 모드 및 보안 차이를 이해하고 적절한 클라이언트 설정을 통해 안정적인 파일 전송 환경을 구축하는 것이 중요합니다.


출처: Inpa Dev 👨‍💻:티스토리