SFTP 사용자를 위한 chroot

SFTP 사용자를 위한 chroot

나는 사용자가 자신의 홈 디렉토리 외부에서 파일을 변경/볼 수 없도록 제한하는 방법에 대해 인터넷에서 여러 가이드를 따랐습니다.

그래서 나는 사용자를 만들었습니다. John이라고 부르겠습니다. 그리고 그의 기본 그룹인 sftp라는 그룹도 만들었습니다. 나는 또한 그의 홈 디렉토리를 내가 수감되기를 원하는 디렉토리로 업데이트했습니다. (이 경우 /var/www/) 그런 다음 몇 가지 구성 줄을 추가했습니다./etc/ssh/sshd_config

Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcoForwarding no

이것을 사용한 적이 없습니다. John은 자신의 홈 디렉터리 외부에 있는 디렉터리에 액세스할 수 있습니다. 그런 다음 그것을 구체화하려고 노력합니다.

Match User john
    ChrootDirectory /var/www
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no

역시 작동하지 않습니다. John은 여전히 ​​모든 파일에 액세스할 수 있습니다. 그래서 두 구성을 모두 사용해 보았지만 둘 다 작동하지 않았습니다.

Johns 쉘은 일부 가이드에서 또는 /bin/bash로 설정한다고 언급되어 있지만 물론 Filezilla와 연결할 수 없습니다./bin/false/bin/nologin

배포판은 우분투 14.04입니다.

답변1

블록의 다음 줄을 변경합니다 Match Group sftp.

ChrootDirectory /var/www/%u

디렉토리 이름으로 사용자 이름을 지정하여 /var/www에 디렉토리를 생성하면 여러 사용자를 해당 /var/www/user-디렉토리로 chroot할 수 있습니다.

또한 권한을 확인해야 합니다. /var/www/user-name 디렉토리에는 사용자 및 그룹이 루트이고 755 권한이 있어야 합니다. 해당 디렉터리에서 사용자를 소유자로, 그룹 sftp를 그룹으로 포함해야 하는 몇 개의 디렉터리 또는 원하는 디렉터리(예: 입력 및 출력 디렉터리)를 만들어야 합니다. 700 권한 또는 권한에 적합하다고 생각되는 모든 권한을 권장합니다. 그 후에 사용자는 루트 디렉터리나 /var/www/user 트리 외부에 아무것도 쓰지 않고도 로그인하고 디렉터리에 액세스할 수 있어야 합니다.

쉘을 /bin/false 또는 /bin/nologin으로 설정하면 sftp 연결만 허용됩니다. 이는 sftp 액세스만 원하는 경우 흥미롭습니다. 그렇지 않으면 사용자가 시스템에 SSH를 통해 연결할 수 있지만 아마도 원하지 않을 것입니다. .

편집: 그런데 AllowTcoForwarding nosftp 블록의 줄이 잘못되었습니다. 올바른 줄로 변경하세요(AllowTcForwarding) 여기서는 단지 오타가 아닐 경우를 대비해 말씀드리겠습니다.

관련 정보