루트 사용자를 위한 SFTP 감옥?

루트 사용자를 위한 SFTP 감옥?

그래서 저는 사용자를 가두어 감옥에 가두는 방법을 연구해 왔습니다. 흥미로운 문제가 있지만 어디에도 답이 없습니다.

루트 계정을 감옥에 가두는 권한을 어떻게 가질 수 있나요? 현재 다음을 시도 중입니다. Match user root ChrootDirectory /opt/somedirectory/anotherdirectory ForceCommand internal-sftp 하지만 연결하면 항상 연결이 끊어집니다. - 내가 허용하는 실험실 환경이므로 이 사용 사례의 경우비밀번호 인증그리고루트 사용자 로그인 허용.

내가 아는 한 Chroot 감옥은 수퍼유저 권한을 사용하여 사람들을 자신의 틈새 시장에 가두어 둡니다. 그런데 탈옥할 수 있는 것이 있나요? 아니면 최소한 특정 디렉토리에 그를 잠가서 CD백을 할 수 없도록 해야 할까요? 이것은 제가 더 탐구하고 배우고 싶은 흥미로운 사례입니다! 시간을 내어 답변해 주셔서 감사합니다!

핵심요약: 특정 디렉터리에 루트를 SFTP로 연결하는 방법.

답변1

당신은 할 수 없습니다.

Red Hat에는 이에 대한 기사가 있습니다(여기 링크) - 사용을 고려하고 계시다면 chroots전체 기사를 읽어 보시기 바랍니다 . 다음은 이것이 작동하지 않는 이유를 설명하는 기사에서 발췌한 것입니다.

chroot 및 루트 사용자

chroot() 시스템 호출은 루트 사용자에 대해서만 작동합니다. 루트가 아닌 사용자는 chroot() 호출을 수행할 수 없습니다. chroot()를 호출할 수 있으면 이를 제거할 수 있기 때문에 이것은 좋은 것입니다. 이것은 chroot()의 버그가 아니며 단지 작동 방식일 뿐입니다. 이것을 버그라고 생각하더라도 일반적으로 루트는 시스템과 모든 리소스에 액세스할 수 있다는 점을 기억해야 합니다. chroot() 위치를 다시 "/"로 변경하기 위해 루트가 프로세스 메모리를 직접 수정하는 것을 방지할 수 있는 방법은 없습니다. 여기서 고려해야 할 중요한 점은 설계상 chroot()가 루트를 중지하지 않는다는 것입니다. 이 점은 이 기사의 뒷부분에서 중요할 것입니다.

이것이 당신이 말하는 실험실 환경이라면 간단한 비밀번호(또는 비밀번호 없는 로그인을 위한 SSH 키)를 사용하여 일반 사용자를 추가하기만 하면 됩니다.

답변2

절대 경로(예: /var/log/www)의 모든 디렉터리를 루트에서 읽을 수 있어야 하는 한 모든 것이 올바르게 관리될 수 있다는 것이 밝혀졌습니다. SSHD_Config에서 다음 줄을 추가해야 합니다.

Subsystem sftp internal-sftp
Match user Root
ChrootDirectory /var/log/www
ForceCommand internal-sftp

이렇게 하면 루트의 SSH 로그인이 비활성화되고 해당 ChrootDirectory(예: 감옥)의 SFTP 시스템에만 연결할 수 있습니다. 이것이 언젠가 누군가에게 도움이 되기를 바랍니다!

관련 정보