Jailkit 未鎖定 SFTP,適用於 SSH
我在我的 CentOS 5.8 伺服器上安裝了 jailkit,並根據我找到的線上指南進行了配置。以下是以 root 身份執行的命令:
mkdir /var/jail jk_init -j /var/jail extshellplusnet jk_init -j /var/jail sftp adduser testuser; passwd testuser jk_jailuser -j /var/jail testuser
然後我進行了編輯
/var/jail/etc/passwd
以更改登錄 shell,testuser
以便/bin/bash
讓他們通過 SSH 訪問完整的 bash shell。接下來我編輯
/var/jail/etc/jailkit/jk_lsh.ini
為如下所示(不確定這是否正確)[testuser] paths= /usr/bin, /usr/lib/ executables= /usr/bin/scp, /usr/lib/openssh/sftp-server, /usr/bin/sftp
testuser 可以通過 SSH 連接,僅限查看 chroot jail 目錄,也可以通過 SFTP 登錄,但是整個文件系統是可見的,可以遍歷。
SSH 輸出:
> ssh testuser@server Password: Last login: Sat Oct 20 03:26:19 2012 from x.x.x.x bash-3.2$ pwd /home/testuser
SFTP 輸出:
> sftp testuser@server Password: Connected to server. sftp> pwd Remote working directory: /var/jail/home/testuser
可以做些什麼來鎖定 SFTP 對監獄的訪問?
雖然我確實感受到了 doublesharp 的痛苦(也遇到了這個問題),但不應該使用 doublesharp 的答案(不安全)。這裡的問題是 sshd 的 internal-sftp 是在 /usr/sbin/jk_chrootsh 可以執行之前執行的,出於安全原因需要執行此操作。因此,解決此問題所需要做的就是確保您的 /etc/ssh/sshd_config 文件有這一行……
Subsystem sftp /usr/lib/openssh/sftp-server
…而不是這條線…
Subsystem sftp internal-sftp
還要確保您沒有在此文件中進行任何使用者/組匹配。這裡的主要想法是,如果您要使用 jailkit 來隔離 Linux 系統上的使用者,那麼您需要強制所有使用者通過 /usr/sbin/jk_chrootsh,如果需要,它可以啟動自己的 sftp 功能。
對 /etc/ssh/sshd_config 進行更改後,請確保重新啟動 sshd(方法可能因係統而異)。