SSH / SCP / SFTP 사용자를 디렉토리로 제한


36

SCP / SFTP 사용자를 디렉토리로 제한하는 간단한 방법이 있습니까? 내가 찾은 모든 방법은 바이너리를 복사하여 chroot jail을 설정해야하지만 그럴 필요는 없다고 생각합니다.

답변:


29

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를 검색하십시오.


2
"Match User testuser"로 시작하는 부분은 사용자가 "testuser"인 경우에만 구성 행을 포함하므로 파일의 끝에 있어야합니다.
Magnus

1
SFTP 프로토콜에 대해서만 Chroot를 사용하는 것이 가능하지만 여전히 정상적인 SCP 연결을 허용합니까?
lanoxx

1
내 우분투 14.04 시스템에서, 변경도 필요했다 Subsystem sftp /usr/lib/openssh/sftp-server에 라인Subsystem sftp internal-sftp -f AUTH -l VERBOSE
partofthething

@ Magnus 또는 다른 Match섹션 까지 .
roaima

12

chroot는 상당히 간단한 방법입니다. 운영 체제에는 이미이 보안 기능이 있으므로 데몬 작성자는 다시 구현하지 않습니다.

Rssh 에는 chroot jail 설정에 대한 가이드가 제공됩니다. 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로깅을위한 소켓

rssh 문서에없는 추가 팁 : chroot jail에서 일부 파일에 액세스해야하는 경우 bindfs 또는 Linux를 사용 mount --bind하여 jail 외부에서 추가 디렉토리 계층을 만들 수 있습니다 . bindfs다시 마운트 된 디렉토리가 더 제한적인 권한 (예 : 읽기 전용)을 갖도록합니다. ( mount --bind커널 패치를 적용하지 않는 한, 데비안은 이스트 레니 이후이 패치를 포함했지만 대부분의 다른 배포판은 2011 년 기준이 아닙니다.)


7

scponly (또는 최근에는 rssh ) 를보고 싶을 수도 있습니다 . 그것은 본질적으로 할 수있는 로그인 쉘의 경우에만 출시 SCP 또는 sftpd 서브 시스템에 사용. 에서 scponlyc변형이 문제의 서브 시스템을 활성화하기 전에 chroot를 수행합니다.


적어도 우분투에서 scponly 더 이상 사용되지 않는 것 같습니다
tobixen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.