본문 바로가기
서버 및 보안

SSH File Transfer Protocol

by 다움위키 2023. 12. 25.

컴퓨팅에서, SSH File Transfer Protocol (역시 Secure File Transfer Protocol, 또는 SFTP)은 신뢰할 수 있는 데이터 스트림을 통해 파일 접근, 파일 전송파일 관리를 제공하는 네트워크 프로토콜입니다. 그것은 Internet Engineering Task Force (IETF)에서 안전한 파일 전송 기능을 제공하기 위해 Secure Shell 프로토콜 (SSH) 버전 2.0의 확장으로 설계되었습니다. IETF Internet Draft는, 비록 이 프로토콜이 SSH-2 프로토콜의 문맥에서 설명되지만, 전송 계층 보안 (TLS)를 통한 보안 파일 전송과 VPN 응용 프로그램에서 관리 정보의 전송과 같은 다양한 응용 프로그램에서 사용될 수 있다고 명시하고 있습니다.

이 프로토콜은 SSH와 같은 보안 채널을 통해 실행되고, 서버가 이미 클라이언트를 인증했고, 클라이언트 사용자의 ID는 프로토콜에서 사용될 수 있다고 가정합니다.

Installation

데비안은 설치 시에 기본적으로 클라이언트를 설치합니다:

  • sftp
usage: sftp [-46AaCfNpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
          [-D sftp_server_path] [-F ssh_config] [-i identity_file]
          [-J destination] [-l limit] [-o ssh_option] [-P port]
          [-R num_requests] [-S program] [-s subsystem | sftp_server]
          destination

사용법 내용이 나타나지 않는다면 ssh가 깨진 경우이므로, 재설치해 볼 수 있습니다:

  • sudo apt install --reinstall openssh-client

또한, 서버를 설치하기 위해,

  • sudo apt install openssh-server

Configurations

Further information: SSH § 설정

만약 새로운 그룹(sftp)을 만들어서 해당 그룹에 포함되는 사용자(debian)들이 sftp를 이용할 수 있도록 설정할 수 있습니다.

  • sudo groupadd sftp
  • sudo usermod -G sftp debian

파일 /etc/ssh/sshd_config에 다음을 추가합니다:

Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
  • sudo systemctl restart ssh
  • sftp debian@localhost
packet_write_wait: Connection to 127.0.0.1: Broken pipe
Couldn't read packet: Connection reset by peer

오류가 발생합니다. 이 오류는 ChrootDirectory %h로 지정된 /home/debian의 소유자가 root가 아니기 때문에 발생하는 문제입니다.

  • sudo chown root /home/debian

Software

SFTP client

용어 SFTP는 역시 이 프로토콜의 클라이언트 부분을 구현하는 명령줄 프로그램, 보안 파일 전송 프로그램을 참조할 수 있습니다. 예제로서, OpenSSH와 함께 제공되는 sftp 프로그램은 이것을 구현합니다.

scp 프로그램의 일부 구현은 서버가 지원하는 항목에 따라 SFTP 및 SCP 프로토콜을 모두 지원하여 파일 전송을 수행합니다.

SFTP server

일부 FTP 서버 구현은 SFTP 프로토콜을 구현합니다; 어쨌든, 전용 파일 서버 외부에서, SFTP 프로토콜 지원은, 다른 SSH 서비스와 기본 포트 22를 공유하기 때문에, 보통 SSH 서버 구현에 의해 제공됩니다. SFTP 구현은 대체 SSH 서버가 허용되거나 대체 포트가 사용될 수 있는 기존 FTP 서버 접근 제어와 SSH 연결 세부 정보의 통합을 활용하기 위한 SSH 프로토콜 구현을 포함할 수 있습니다. 하위 시스템을 지원하는 SSH-2 서버는 연결 세부 사항과의 세분화된 통합 및 SSH-1 호환성을 희생시키면서 타사 소프트웨어로 접근 제어를 향상시키면서 균일한 SSH 구현을 유지하기 위해 활용될 수 있습니다.

SFTP proxy

네트워크 경계에서 보안 장치의 SFTP 전송을 제어하는 것은 어렵습니다. TIS fwtk 또는 SUSE FTP 프록시와 같은 FTP 트랜잭션을 기록하기 위한 표준 도구가 있지만, SFTP는 암호화되어, 기존 프록시가 SFTP 트래픽을 제어하는 데 효과적이지 않습니다.

SFTP 제어 기능도 포함하는 SSH에 대해 메시지 가로채기 (man-in-the-middle)를 구현하는 몇 가지 도구가 있습니다. 그러한 도구의 예제는 Balabit의 Shell Control Box와 Shell Control Box와 SSH Communications Security의 CryptoAuditor (Secure Shell 프로토콜의 최초 개발자)가 있습니다. 이 도구는 SFTP 트랜잭션 로깅 및 유선에서 전송되는 실제 데이터의 로깅과 같은 기능을 제공합니다.

External links