SSH 限制用戶訪問指定目錄指令
以下指令都是以 root 身分執行,其他用戶請加上 sudo
在Linux 設定用戶,並且開放 ssh 連線後,有時為了系統安全,需限制用戶僅能訪問指定目錄及指令
可以透過 chrooted 來進行設定
假設目前希望 test5 用戶只能訪問 /var/www/html
建立用戶
useradd test5
passwd test5
建立監獄範圍
mkdir -p /var/www/html/test
設定 sshd_config
開啟 sshd_config
vim /etc/ssh/sshd_config
接著設定
ChrootDirectory /var/www/html/test
Match User test5
重啟 ssh
service sshd restart
設定 chroot 監獄權限
chroot 限制資料範圍的權限必須為 root 所有
chown root:root /var/www/html/test
chmod 0755 /var/www/html/test
ls -ld /var/www/html/test
設置 Shell
在監獄中設置 bin 資料夾
mkdir /var/www/html/test/bin
將 bash 複製到其中
cp -v /bin/bash /var/www/html/test/bin
建立共用庫
建立 lib64並且複製 bash 所需要的共用庫至其中
ldd /bin/bash
mkdir -p /var/www/html/test/lib64
cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /var/www/html/test/lib64/
擴充外部指令
上述製作完畢,用戶僅可使用基本的 history, echo, pwd 等指令 若需要 ls, date, mkdir 等外部指令,則可以逐步提供授權
cp -v /bin/ls /var/www/html/test/bin/
cp -v /bin/date /var/www/html/test/bin/
cp -v /bin/mkdir /var/www/html/test/bin/
接著同樣要將對應的共用庫複製到監獄中
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} /var/www/html/test/lib64/
ldd /bin/date
ldd /bin/mkdir
建立配置
建立 etc 並且將指定的配置複製到其中
mkdir /var/www/html/test/etc
cp -vf /etc/{passwd,group} /var/www/html/test/etc/
(後續有新增SSH用戶都需再執行一次複製動作)
建立用戶專屬資料夾
mkdir -p /var/www/html/test/user_test5
chown -R test5:test5 /var/www/html/test/user_test5
chmod -R 0700 /var/www/html/test/user_test5
參考: Restrict SSH User Access to Certain Directory Using Chrooted Jail