Linux中國

使用 chroot 監獄限制 SSH 用戶訪問指定目錄

在本教程中,我們將向你展示如何限制 SSH 用戶訪問 Linux 中指定的目錄。注意,我們將以 root 用戶身份運行所有命令,如果你以普通用戶身份登錄伺服器,請使用 sudo 命令

步驟 1:創建 SSH chroot 監獄

1、 使用 mkdir 命令開始創建 chroot 監獄:

# mkdir -p /home/test

2、 接下來,根據 sshd_config 手冊找到所需的文件,ChrootDirectory 選項指定在身份驗證後要 chroot 到的目錄的路徑名。該目錄必須包含支持用戶會話所必需的文件和目錄。

對於互動式會話,這需要至少一個 shell,通常為 sh 和基本的 /dev 節點,例如 nullzerostdinstdoutstderrtty 設備:

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

Listing Required Files

列出所需文件

3、 現在,使用 mknod 命令創建 /dev 下的文件。在下面的命令中,-m 標誌用來指定文件許可權位,c 意思是字元文件,兩個數字分別是文件指向的主要號和次要號。

# mkdir -p /home/test/dev/      
# cd /home/test/dev/
# mknod -m 666 null c 1 3
# mknod -m 666 tty c 5 0
# mknod -m 666 zero c 1 5
# mknod -m 666 random c 1 8

Create /dev and Required Files

創建 /dev 和所需文件

4、 在此之後,在 chroot 監獄中設置合適的許可權。注意 chroot 監獄和它的子目錄以及子文件必須被 root 用戶所有,並且對普通用戶或用戶組不可寫:

# chown root:root /home/test
# chmod 0755 /home/test
# ls -ld /home/test

Set Permissions on Directory

設置目錄許可權

步驟 2:為 SSH chroot 監獄設置互動式 shell

5、 首先,創建 bin 目錄並複製 /bin/bashbin 中:

# mkdir -p /home/test/bin
# cp -v /bin/bash /home/test/bin/

Copy Files to bin Directory

複製文件到 bin 目錄中

6、 現在,識別 bash 所需的共享庫,如下所示複製它們到 lib64 中:

# ldd /bin/bash
# mkdir -p /home/test/lib64
# cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/

Copy Shared Library Files

複製共享庫文件

步驟 3:創建並配置 SSH 用戶

7、 現在,使用 useradd 命令創建 SSH 用戶,並設置安全密碼:

# useradd tecmint
# passwd tecmint

8、 創建 chroot 監獄通用配置目錄 /home/test/etc 並複製已更新的賬號文件(/etc/passwd/etc/group)到這個目錄中:

# mkdir /home/test/etc
# cp -vf /etc/{passwd,group} /home/test/etc/

Copy Password Files

複製密碼文件

注意:每次向系統添加更多 SSH 用戶時,都需要將更新的帳戶文件複製到 /home/test/etc 目錄中。

步驟 4:配置 SSH 來使用 chroot 監獄

9、 現在打開 sshd_config 文件。

# vi /etc/ssh/sshd_config

在此文件中添加或修改下面這些行。

# 定義要使用 chroot 監獄的用戶
Match User tecmint
# 指定 chroot 監獄
ChrootDirectory /home/test

Configure SSH Chroot Jail

配置 SSH chroot 監獄

保存文件並退出,重啟 sshd 服務:

# systemctl restart sshd
或者
# service sshd restart

步驟 5:測試 SSH 的 chroot 監獄

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

# ssh tecmint@192.168.0.10
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname

Testing SSH User Chroot Jail

測試 SSH 用戶 chroot 監獄

從上面的截圖上來看,我們可以看到 SSH 用戶被鎖定在了 chroot 監獄中,並且不能使用任何外部命令如(lsdateuname 等等)。

用戶只可以執行 bash 以及它內置的命令(比如:pwdhistoryecho 等等):

# ssh tecmint@192.168.0.10
-bash-4.1$ pwd
-bash-4.1$ echo "Tecmint - Fastest Growing Linux Site"
-bash-4.1$ history

SSH Built-in Commands

SSH 內置命令

步驟 6: 創建用戶的主目錄並添加 Linux 命令

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

# mkdir -p /home/test/home/tecmint
# chown -R tecmint:tecmint /home/test/home/tecmint
# chmod -R 0700 /home/test/home/tecmint

Create SSH User Home Directory

創建 SSH 用戶主目錄

12、 接下來,在 bin 目錄中安裝幾個用戶命令,如 lsdatemkdir

# cp -v /bin/ls /home/test/bin/
# cp -v /bin/date /home/test/bin/
# cp -v /bin/mkdir /home/test/bin/

Add Commands to SSH User

向 SSH 用戶添加命令

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

# ldd /bin/ls
# 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/

Copy Shared Libraries

複製共享庫

步驟 7:測試 sftp 的 用 chroot 監獄

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

/etc/ssh/sshd_config 中添加下面的行:

# 啟用 sftp 的 chroot 監獄 
ForceCommand internal-sftp

保存並退出文件。接下來重啟 sshd 服務:

# systemctl restart sshd
或者
# service sshd restart

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

# ssh tecmint@192.168.0.10

Test SSH Chroot Jail

測試 SSH Chroot 監獄

試下使用 sftp:

# sftp tecmint@192.168.0.10

Testing sFTP SSH User

測試 sFTP SSH 用戶

建議閱讀: 使用 chroot 監獄將 sftp 用戶限制在主目錄中

就是這樣了!在文本中,我們向你展示了如何在 Linux 中限制 ssh 用戶到指定的目錄中( chroot 監獄)。請在評論欄中給我們提供你的想法。

作者簡介:

Aaron Kili 是一個 Linux 及 F.O.S.S 熱衷者,即將成為 Linux 系統管理員、web 開發者,目前是 TecMint 的內容創作者,他喜歡用電腦工作,並堅信分享知識。

via: http://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/

作者:Aaron Kili 譯者:geekpi 校對:jasminepeng

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國