SFTP 사용자 제한의 정의와 아키텍처
SFTP 사용자 제한은 SSH 데몬(sshd)의 설정을 통해 특정 사용자 또는 사용자 그룹이 파일 시스템의 지정된 디렉토리 이상으로 이동할 수 없도록 격리하는 보안 메커니즘입니다. 이는 Chroot Jail 기법을 기반으로 하며, 사용자가 로그인한 후 지정된 루트 디렉토리가 그들의 "루트"가 되어 상위 디렉토리 접근이 기술적으로 불가능하게 됩니다.
핵심 구현 컴포넌트
- ChrootDirectory: /etc/ssh/sshd_config에서 사용자의 jail 디렉토리 경로를 지정하는 지시자로, %h(사용자 홈 디렉토리) 또는 절대 경로를 사용
- ForceCommand internal-sftp: SSH 셸 접근을 차단하고 SFTP 명령만 실행 가능하게 제한하는 지시자
- Match 블록: 특정 사용자 또는 그룹에만 제약을 적용하는 조건부 설정 메커니즘
- 내부-sftp (internal-sftp): 외부 sftp-server 바이너리 없이 sshd 내부에서 SFTP 서버 기능을 제공하므로 chroot 환경에서 별도 라이브러리 불필요
실무 아키텍처 고려사항
Chroot 디렉토리는 반드시 root 소유(권한 755)여야 하며, 사용자가 쓰기 권한을 갖지 않아야 OpenSSH가 보안 경계를 강제할 수 있습니다. 사용자의 업로드/다운로드 디렉토리는 chroot 내부의 별도 서브디렉토리에서 사용자 소유로 생성해야 멀티테넌트 환경에서 데이터 격리를 달성할 수 있습니다. SSH 키 인증을 사용할 경우 authorized_keys 파일은 chroot 전에 읽혀야 하므로 chroot 경계 외부의 홈 디렉토리에 배치해야 합니다.