Jailkit 未鎖定 SFTP,適用於 SSH

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 存取?

答案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

相關內容