SFTP를 통해 액세스할 때 Ubuntu Server 22.04 SSH ChrootDirectory가 예상대로 작동하지 않습니다.

SFTP를 통해 액세스할 때 Ubuntu Server 22.04 SSH ChrootDirectory가 예상대로 작동하지 않습니다.

일반적으로 성공적으로 로그인하고 명령 sftp을 실행한 후에는 put내 파일이 로그인한 사용자의 디렉터리로 전송될 것으로 예상합니다 $HOME. 이것은 기본적으로 작동하지만 sftp사용자를 자신의 디렉토리로 제한하고 싶습니다( 예를 들어 더 이상 레벨을 올릴 $HOME수 없도록 ).cd

이것은 내가 사용하는 곳입니다 ChrootDirectory- 문서에 따라 (https://linux.die.net/man/5/sshd_config)

ChrootDirectory: 인증 후 chroot(2)에 대한 경로를 지정합니다. 이 경로와 모든 구성 요소는 다른 사용자나 그룹이 쓸 수 없는 루트 소유 디렉터리여야 합니다.

폴더/권한을 올바르게 설정했다고 생각합니다. 내가 생각하는 문서의 다음 문장은 예상대로 작동하지 않거나 작동하지 않습니다.

chroot 후에 sshd(8)는 작업 디렉토리를 사용자의 홈 디렉토리로 변경합니다.

사용자 작업 디렉토리를 통해 서버를 sshd_config사용 하고 성공적으로 액세스하도록 수정한 후에는 사용자의 $HOME 디렉토리로 설정되지 않으며 실제로는 한 수준 위로 설정됩니다. (예: 대신 ) 사용자를 위한 확실한 해결 방법은 한 수준 아래의 올바른 디렉토리로 CD를 이동하는 것입니다. 그러나 단순히 데이터를 현재 작업 디렉토리로 FTP로 전송하는 자동화 시스템을 사용하는 경우 이는 매우 문제가 될 수 있습니다.ChrootDirectorysftp/home/home/userTest

먼저 일반적인 사례를 보여준 다음 이를 수정하여 기본 작업 디렉토리 동작이 ChrootDirectory도입된 후 어떻게 변경되는지 보여 드리겠습니다.sshd_config

이는 예상대로 작동합니다.

  1. 사용자를 생성합니다( -m이 사용자 홈 디렉터리를 생성하는 데 사용).sudo useradd -m userTest
  2. 사용자에게 비밀번호를 제공하십시오.sudo passwd userTest
  3. userTest$HOME 디렉터리 참고 : cat /etc/passwd->userTest:x:1002:1004::/home/userTest:/bin/sh
  4. 방금 생성한 사용자를 위해 서버에 sftp를 실행합니다.sftp userTest@<your-server>
  5. 성공적으로 로그인한 후 작업 디렉터리를 기록해 두십시오. pwd->Remote working directory: /home/userTest

위의 예는 예상한 대로 정확하게 작동하지만 유일한 문제는 userTest작업 디렉터리에 잠겨 있지 않고 cd ..파일 시스템을 재설정할 수 있다는 것입니다.

여러 가이드에서 모두 이 문제에 대해 동일한 기본 해결책을 제시했습니다(https://linuxconfig.org/how-to-setup-sftp-server-on-ubuntu-20-04-focus-fossa-linux)

이전 단계에 추가

  1. Matchsftp 그룹을 추가합니다(이는 에서 블록 의 키로 사용됩니다 sshd_config).sudo addgroup sftp
  2. userTest그룹에 사용자를 추가합니다 .sudo usermod -a -G sftp userTest
  3. 편집하다 sshd_config:sudo nano /etc/ssh/sshd_config
  4. 파일 끝에 다음 줄을 추가하십시오.
Match group sftp
ChrootDirectory /home
ForceCommand internal-sftp

(이는 기본적으로 그룹에 속한 모든 사용자가 및 규칙 sftp의 적용을 받는다는 것을 의미합니다 .)ChrootDirectoryForceCommand

파일을 저장하고 SSH를 다시 ​​시작합니다. sudo systemctl restart ssh

지정된 디렉토리가 ChrootDirectory위 문서의 요구 사항을 충족하는지 확인하십시오. ls -ltr-> drwxr-xr-x 4 root root 4096 Jun 10 09:02 home(이것은 합격이라고 생각합니다)

userTest다시 사용하여 즉시 사용 가능한 설정과 새로운 구성 SFTP의 결과를 비교하십시오 .sftp userTest@<your-server>

현재 작업 디렉토리를 기록해 두십시오: pwd->Remote working directory: /

이것은 뭔가 잘못되었다는 확실한 증거가 아닙니다. 작업 디렉터리가 변경될 것으로 예상합니다... 그러나 현재 작업 디렉터리의 내용을 빠르게 확인하겠습니다.

ls -ltr-> drwxr-x--- 3 1002 1004 4096 Jun 10 09:10 userTest(!!!)

문서에 따르면:

chroot 후에 sshd(8)는 작업 디렉토리를 사용자의 홈 디렉토리로 변경합니다.

ls -ltr작업 디렉터리가 userTest홈 디렉터리에 있지 않고 실제로 한 수준 위라는 것을 보여줍니다.

ChrootDirectory예상대로 작동하도록 구성하는 방법이나 다른 방법이 있습니까 ?

참고: ForceCommandsshd_config에서 제거하면 실제로 11년 전에 ERRATA로 종결된 다른 문제가 발생합니까? https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=681202

관련 정보