답변:
SSH 기본적으로 SFTP 사용자의 chroot를 지원합니다. 당신은 공급해야합니다
ChrootDirectory
sshd 구성 파일에서 sshd를 다시 시작하십시오.
sftp를 수행하는 경우 더 이상 할 필요가 없습니다. 불행히도 이것은 scp에서 작동하지 않습니다. 대화식 쉘의 경우 바이너리 및 / dev 노드를 chroot에 복사해야합니다.
단일 사용자 testuser에 대한 예제 구성 :
Match User testuser
ChrootDirectory /home/testuser
ForceCommand internal-sftp
sshd_config 매뉴얼 페이지에서 알아야 할 사항 :
경로명의 모든 구성 요소는 루트 소유 디렉토리가 아니어야합니다. 다른 사용자 나 그룹이 쓸 수 있습니다. chroot 후에 sshd (8)은 사용자의 홈 디렉토리에 대한 작업 디렉토리.
자세한 내용은 man sshd_config에서 ChrootDirectory를 검색하십시오.
Subsystem sftp /usr/lib/openssh/sftp-server
에 라인Subsystem sftp internal-sftp -f AUTH -l VERBOSE
Match
섹션 까지 .
chroot는 상당히 간단한 방법입니다. 운영 체제에는 이미이 보안 기능이 있으므로 데몬 작성자는 다시 구현하지 않습니다.
Rssh 에는 chroot jail 설정에 대한 가이드가 제공됩니다. CHROOT
소스 배포 의 파일에 있습니다. 간단히 말해서 다음이 필요합니다.
/usr/bin/scp
, /usr/libexec/openssh/sftp-server
,/usr/bin/rssh_chroot_helper
{/usr,}/lib/lib*.so.[0-9]
)도 마찬가지로 복사/etc/passwd
(아마도 사본은 아니지만 마스터에서 파생 됨)/dev/null
, /dev/tty
및 /dev/log
로깅을위한 소켓rssh 문서에없는 추가 팁 : chroot jail에서 일부 파일에 액세스해야하는 경우 bindfs 또는 Linux를 사용 mount --bind
하여 jail 외부에서 추가 디렉토리 계층을 만들 수 있습니다 . bindfs
다시 마운트 된 디렉토리가 더 제한적인 권한 (예 : 읽기 전용)을 갖도록합니다. ( mount --bind
커널 패치를 적용하지 않는 한, 데비안은 이스트 레니 이후이 패치를 포함했지만 대부분의 다른 배포판은 2011 년 기준이 아닙니다.)