天天看點

使用 chroot 監獄限制 SSH 使用者通路指定目錄

在諸如 linux 之類的類 unix 系統中更改 root(chroot)是将特定使用者操作與其他 linux 系統分離的一種手段;使用稱為 chrooted 監獄 的新根目錄更改目前運作的使用者程序及其子程序的明顯根目錄。

<a target="_blank"></a>

1、 使用 mkdir 指令開始建立 chroot 監獄:

<code># mkdir -p /home/test</code>

2、 接下來,根據 <code>sshd_config</code> 手冊找到所需的檔案,<code>chrootdirectory</code> 選項指定在身份驗證後要 chroot 到的目錄的路徑名。該目錄必須包含支援使用者會話所必需的檔案和目錄。

對于互動式會話,這需要至少一個 shell,通常為 <code>sh</code> 和基本的 <code>/dev</code> 節點,例如<code>null</code>、<code>zero</code>、<code>stdin</code>、<code>stdout</code>、<code>stderr</code> 和 <code>tty</code> 裝置:

<code># ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}</code>

使用 chroot 監獄限制 SSH 使用者通路指定目錄

列出所需檔案

3、 現在,使用 <code>mknod</code> 指令建立 <code>/dev</code> 下的檔案。在下面的指令中,<code>-m</code> 标志用來指定檔案權限位,<code>c</code> 意思是字元檔案,兩個數字分别是檔案指向的主要号和次要号。

<code># mkdir -p /home/test/dev/</code>

<code># cd /home/test/dev/</code>

<code># mknod -m 666 null c 1 3</code>

<code># mknod -m 666 tty c 5 0</code>

<code># mknod -m 666 zero c 1 5</code>

<code># mknod -m 666 random c 1 8</code>

使用 chroot 監獄限制 SSH 使用者通路指定目錄

建立 /dev 和所需檔案

4、 在此之後,在 chroot 監獄中設定合适的權限。注意 chroot 監獄和它的子目錄以及子檔案必須被 <code>root</code> 使用者所有,并且對普通使用者或使用者組不可寫:

<code># chown root:root /home/test</code>

<code># chmod 0755 /home/test</code>

<code># ls -ld /home/test</code>

使用 chroot 監獄限制 SSH 使用者通路指定目錄

設定目錄權限

5、 首先,建立 <code>bin</code> 目錄并複制 <code>/bin/bash</code> 到 <code>bin</code> 中:

<code># mkdir -p /home/test/bin</code>

<code># cp -v /bin/bash /home/test/bin/</code>

使用 chroot 監獄限制 SSH 使用者通路指定目錄

複制檔案到 bin 目錄中

6、 現在,識别 bash 所需的共享庫,如下所示複制它們到 <code>lib64</code> 中:

<code># ldd /bin/bash</code>

<code># mkdir -p /home/test/lib64</code>

<code># cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/</code>

使用 chroot 監獄限制 SSH 使用者通路指定目錄

複制共享庫檔案

<code># useradd tecmint</code>

<code># passwd tecmint</code>

8、 建立 chroot 監獄通用配置目錄 <code>/home/test/etc</code> 并複制已更新的賬号檔案(<code>/etc/passwd</code> 和 <code>/etc/group</code>)到這個目錄中:

<code># mkdir /home/test/etc</code>

<code># cp -vf /etc/{passwd,group} /home/test/etc/</code>

使用 chroot 監獄限制 SSH 使用者通路指定目錄

複制密碼檔案

注意:每次向系統添加更多 ssh 使用者時,都需要将更新的帳戶檔案複制到 <code>/home/test/etc</code> 目錄中。

9、 現在打開 <code>sshd_config</code> 檔案。

<code># vi /etc/ssh/sshd_config</code>

在此檔案中添加或修改下面這些行。

<code># 定義要使用 chroot 監獄的使用者</code>

<code>match user tecmint</code>

<code># 指定 chroot 監獄</code>

<code>chrootdirectory /home/test</code>

使用 chroot 監獄限制 SSH 使用者通路指定目錄

配置 ssh chroot 監獄

儲存檔案并退出,重新開機 sshd 服務:

<code># systemctl restart sshd</code>

<code>或者</code>

<code># service sshd restart</code>

10、 這次,測試 chroot 監獄的設定是否如希望的那樣成功了:

<code># ssh [email protected]</code>

<code>-bash-4.1$ ls</code>

<code>-bash-4.1$ date</code>

<code>-bash-4.1$ uname</code>

使用 chroot 監獄限制 SSH 使用者通路指定目錄

測試 ssh 使用者 chroot 監獄

從上面的截圖上來看,我們可以看到 ssh 使用者被鎖定在了 chroot 監獄中,并且不能使用任何外部指令如(<code>ls</code>、<code>date</code>、<code>uname</code> 等等)。

使用者隻可以執行 <code>bash</code> 以及它内置的指令(比如:<code>pwd</code>、<code>history</code>、<code>echo</code> 等等):

<code>-bash-4.1$ pwd</code>

<code>-bash-4.1$ echo "tecmint - fastest growing linux site"</code>

<code>-bash-4.1$ history</code>

使用 chroot 監獄限制 SSH 使用者通路指定目錄

ssh 内置指令

11、 從前面的步驟中,我們可以看到使用者被鎖定在了 root 目錄,我們可以為 ssh 使用者建立一個主目錄(以及為所有将來的使用者這麼做):

<code># mkdir -p /home/test/home/tecmint</code>

<code># chown -r tecmint:tecmint /home/test/home/tecmint</code>

<code># chmod -r 0700 /home/test/home/tecmint</code>

使用 chroot 監獄限制 SSH 使用者通路指定目錄

建立 ssh 使用者主目錄

12、 接下來,在 <code>bin</code> 目錄中安裝幾個使用者指令,如 <code>ls</code>、<code>date</code>、<code>mkdir</code>:

<code># cp -v /bin/ls /home/test/bin/</code>

<code># cp -v /bin/date /home/test/bin/</code>

<code># cp -v /bin/mkdir /home/test/bin/</code>

使用 chroot 監獄限制 SSH 使用者通路指定目錄

向 ssh 使用者添加指令

13、 接下來,檢查上面指令的共享庫并将它們移到 chroot 監獄的庫目錄中:

<code># ldd /bin/ls</code>

<code># cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/</code>

使用 chroot 監獄限制 SSH 使用者通路指定目錄

複制共享庫

14、 最後用 sftp 做一個測試;測試你先前安裝的指令是否可用。

在 <code>/etc/ssh/sshd_config</code> 中添加下面的行:

<code># 啟用 sftp 的 chroot 監獄</code>

<code>forcecommand internal-sftp</code>

儲存并退出檔案。接下來重新開機 sshd 服務:

15、 現在使用 ssh 測試,你會得到下面的錯誤:

使用 chroot 監獄限制 SSH 使用者通路指定目錄

測試 ssh chroot 監獄

試下使用 sftp:

<code># sftp [email protected]</code>

使用 chroot 監獄限制 SSH 使用者通路指定目錄

測試 sftp ssh 使用者

原文釋出時間為:2017-03-16

本文來自雲栖社群合作夥伴“linux中國”

繼續閱讀