Centos

Jailkit 未鎖定 SFTP,適用於 SSH

  • May 28, 2021

我在我的 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(方法可能因係統而異)。

引用自:https://serverfault.com/questions/440456