
我在我的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 存取?
答案1
雖然我確實感受到了 doublesharp 的痛苦(也剛剛遇到了這個問題),但不應該使用 doublesharp 的答案(不安全)。這裡的問題是 sshd 的內部 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(方法可能會因係統而異)。
答案2
如果有問題,希望得到修正,但以下配置似乎有效。
更改了使用者/etc/passwd
(不是 /var/jail/etc/passwd
)已被jailkit修改:
原來的testuser:503:503::/var/jail/./home/testuser:/usr/sbin/jk_chrootsh
修改的testuser:503:503::/home/testuser:/bin/bash
新增配置/etc/ssh/sshd_config
:
Match Group testuser
ChrootDirectory /var/jail/
SSH
現在,當透過或SFTP
使用者登入時,僅限於/var/jail
以下目錄,並且預設為主目錄/var/jail/home/testuser