SFTP 특정 디렉토리만 접근 가능하도록 하는 방법 (sftp chroot)

2024. 10. 29. 15:08·Linux
728x90

개요

사실상 권한 UGO(User, Group, Other) 를 수정해서 권한을 수정하는건 리눅스 관리자 사용자는 대부분 다 알고 있다.

하지만 나는 SFTP를 사용할 때 특정 사용자가 특정 디렉토리에 가둬 상위 디렉토리 접근을 막고 싶었다.

여기서 이 글을 쓰는 이유가 있다. 모든 글들을 보면 /home/사용자계정홈디렉토리 에 하라고 나와있다.

하지만 난 /appstore/webstore/ftpfile/ 이처럼 복잡한 경로에 가두고 싶었다.

그런데 이게 안된다.

뭐 때문인지 모르겠지만 어떤 내용을 보면 상위 디렉토리가 root 여야 한다. 권한이 755여야한다. 모든 의견을 수립해 다해봤다. 근데 안된다.

결론은 로그를 보니 pam_unix sshd 정책 관련해서 어떤 무언가가 막고 있는 것 같다. 조금 더 파서 어떤 영향을 받는지 테스트를 해보고 싶은데 상용 서버라서 테스트는 못했지만

추후 클라우드에서 테스트해보고 다시 한번 적겠다. 겸사겸사 chroot 사용방법이나적는다.

 

sftp chroot 조건 사항

  1. 홈 디렉토리는 /home/{사용자계정} 아래 있어야 한다.
  2. 홈디렉토리의 소유자는 root여야 한다. 그룹은 사용자계정의 그룹이 되어야 한다.
    • chroot경로 이하에 생성되는 모든 파일도 동일하다.
  3. 사용자 홈 디렉토리의 권한은 755여야 한다.
  4. ssh-key 즉 퍼블릭키로 로그인하려면 chroot설정 전, 키 교환 먼저 후에 진행하는 것이 편하다.

sftp chroot 설정 방법

sftp 사용 계정 생성

useradd -d /home/sftpuser sftpuser

사용자 홈 디렉토리 권한 및 소유자 변경

chmod 755 /home/sftpuser
chown root /home/sftpuser

chroot 설정

해당 설정에서 디렉토리에 cloudfile로 잡는 이유는 사용자 홈 디렉토리로 잡게 되면 .ssh 파일 등 숨겨진 파일들도 컨트롤할 수 있어서 1 Deps 더 만드는 게 좋다.

vi /etc/ssh/sshd_config

...
Match User sftpuser
    ChrootDirectory /home/sftpuser/cloudfile
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

ssh 서비스 재 시작

systemctl restart sshd

위 말한 것처럼 ssh 공유키로 패스워드 없이 로그인하게 하려면 위 chroot설정을 키를 공유한 후에 설정하면 된다.

물론 키를 복사해서 다른 서버에 넣으면 되긴 하는데 복잡하니까 미리 하는게 좋다.

#블로그

728x90

'Linux' 카테고리의 다른 글

All available gssapi mechanisms failed 에러가 나는 이유  (0) 2025.04.16
pam_tally2 실패 횟수 자동 증가 증상  (0) 2025.04.16
톰캣(Tomcat) 버전 가리는 방법  (0) 2024.10.25
[Network] 자주 사용하는 주요 포트 및 프로토콜  (1) 2024.09.10
[Infra] HTTPS, SSL 도메인 인증서 교체 방법 및 주의 사항  (2) 2024.09.03
'Linux' 카테고리의 다른 글
  • All available gssapi mechanisms failed 에러가 나는 이유
  • pam_tally2 실패 횟수 자동 증가 증상
  • 톰캣(Tomcat) 버전 가리는 방법
  • [Network] 자주 사용하는 주요 포트 및 프로토콜
정주원
정주원
개인블로그
  • 정주원
    Joon.eng
    정주원
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • Linux (43)
      • Windows (0)
      • Network (5)
      • Database (0)
      • Cloud (23)
      • Docker (3)
      • Ansible (2)
      • Language (1)
      • Etc (5)
  • 블로그 메뉴

    • 링크

      • GITLAB(woni)
    • 공지사항

    • 인기 글

    • hELLO· Designed By정상우.v4.10.0
    정주원
    SFTP 특정 디렉토리만 접근 가능하도록 하는 방법 (sftp chroot)
    상단으로

    티스토리툴바