SCP/SFTP 사용자를 특정 디렉터리로만 제한하는 쉬운 방법이 있습니까? 내가 접한 모든 방법에서는 바이너리를 복사하여 chroot 감옥을 설정해야 하지만 이것이 필요하다고 생각하지 않습니다.
답변1
SSH는 기본적으로 SFTP 사용자 루트 지정을 지원합니다. 귀하가 제공해야 할 모든 것
Chroot 디렉토리
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를 검색하세요.
답변2
chroot는 매우 간단한 방법입니다. 운영 체제에는 이미 이 보안 기능이 있으므로 데몬 작성자는 이를 다시 구현하려고 시도하지 않는 경향이 있습니다.
원격 연결chroot 감옥 설정에 대한 가이드가 함께 제공됩니다. 위치해있습니다CHROOT
소스 배포판의 파일. 즉, 다음이 필요합니다.
- 루트에서 복사된 일부 바이너리:
/usr/bin/scp
,/usr/libexec/openssh/sftp-server
,/usr/bin/rssh_chroot_helper
{/usr,}/lib/lib*.so.[0-9]
그들이 사용하는 라이브러리( )도 복사됩니다.- A
/etc/passwd
(복사본이 아닐 가능성이 높지만 마스터에서 파생됨) - 일부 장치:
/dev/null
,/dev/tty
및/dev/log
로깅용 소켓(syslog 데몬에게 이 소켓을 수신하도록 지시해야 함)
rssh 문서에 없는 추가 팁: chroot 감옥에 있는 특정 파일에 액세스해야 하는 경우 다음을 사용할 수 있습니다.파일 시스템 바인딩또는 Linux는 mount --bind
감옥 외부에 추가 디렉터리 계층을 만듭니다. bindfs
다시 마운트가 허용되는 디렉터리에는 읽기 전용과 같이 더 제한적인 권한이 있습니다. ( mount --bind
커널 패치를 적용하지 않는 한; 데비안은 east lenny부터 이것을 포함했지만 2011년 현재 대부분의 다른 배포판에는 포함되어 있지 않습니다.)