Security
OpenSSH sftp jail/chroot 是如何工作的?
這個問題其實太籠統了……
我真正想知道的是它是否真的 chroot,如果是,SSH 使用者守護程序如何
$$ 1 $$儘管 chroot 中明顯缺少所需的二進製文件/lib,但仍可以在該監獄中啟動。 Google對此事出奇的沉默。但是一個很好的參考來解釋就足夠了(但是我沒有足夠的文字來閱讀和理解他們的C)。
$$ 1 $$:我說的是具有使用者權限的實際瞬態守護程序,它在由主根 OpenSSH 守護程序連接時啟動。
另一個答案很模糊(問題也是),所以我會盡量詳細說明這個現象。我知道這個話題並不適合所有人,但對於那些感興趣的人來說,了解它是件好事。
有兩個不同的地方
chroot
完成了,你正在研究它們,所以我會嘗試調整你的想法:
- 有權限分離,這是一種安全機制,其中一部分也是
chroot
網路子的限制。這通常是一些空目錄,例如/var/empty
.原因很簡單,如果存在一些漏洞,它可能無法被利用,因為這個程序看不到文件系統並且在其他方面也受到限制(沙箱,SECCOMP 關鍵字供進一步閱讀)。 2. 稍後您可以
chroot
在特定目錄中的使用者會話(不僅是 SFTP),以防止訪問整個文件系統。根據標題,這可能是您感興趣的部分。chroot 中 sftp的神奇之處在於您可以指定
Subsystem sftp internal-sftp
(而不是完整路徑Subsystem sftp /usr/lib/openssh/sftp-server
)。這意味著它sshd
具有完整sftp-server
的編譯,而不是exec
二進製文件,它只是呼叫定義伺服器行為的函式。這不需要chroot
為使用者提供任何支持文件(與正常會話不同,您需要 shell 及其依賴的共享對象)。如果您對此類資訊感興趣,您可能還需要記錄套接字。