在 Debian Squeeze 中限制使用者訪問
我一直在考慮限制使用者訪問他們自己的目錄的方法,不允許他們在他們自己的使用者目錄之上導航。
我正在使用 SFTP,並且不想安裝正常 FTP,因為會引入所有額外的安全問題。
rbash
聽起來是個好主意,減去它禁用的事實cd
。我希望使用者能夠在他們的主目錄中創建目錄,並瀏覽他們自己的文件夾。
chroot
監獄聽起來有其自身的一系列問題,而且聽起來比它的價值更令人頭疼。所以,我的問題是,有沒有更簡單的方法來限制使用者只能瀏覽他們的使用者目錄,而不是他們使用者目錄之上的任何東西?
如果您可以將它們限制為僅 SFTP 並且不允許他們通過 ssh 登錄,那麼您可以使用 openssh 中內置的 chroot 工具。這是一篇很好的文章,解釋瞭如何
因此,按照 Stew 指向我的連結和說明,我能夠完成這項工作。不過,為了讓 SSH 密鑰正常工作,我必須進行一些更改,所以我想我會發布一份我所做的詳細列表,以供其他人閱讀。
對於
chroot
使用 SSH 進行僅 SFTP 訪問的使用者:從 Debian Squeeze 6.0.5 和 OpenSSH 5.5p1 開始
- 添加使用者:
adduser username
- 添加一個組以將使用者分配給您想要 chroot 的使用者:
addgroup sftponly
<– 組名並不重要,只要你在下面的所有地方都改變它 3. 將使用者添加到組:usermod -G groupname username
4. 安裝 libpam-chroot:apt-get install libpam-chroot
5. 將以下行添加到/etc/pam.d/login
session required pam_chroot.so debug
6. 去:/usr/share/doc/libpam-chroot/examples
7. 然後:chmod 744 setup-chrootdir-shell.sh
所以你可以執行腳本 8. 執行腳本,指定腳本後的目錄:
./setup-chrootdir-shell.sh /path/to/userdir
9. 驗證腳本剛剛創建的目錄是否存在,由使用者和組 root 擁有,並設置為 755 權限。 10. 更改使用者的主目錄:usermod -m -d /home/chrootdir/home username
11. 禁用使用者的外殼:chsh -s /bin/false username
12. 將使用者的文件複製到新目錄(.ssh 文件夾、.profile 等) 13. 編輯 sshd 配置文件:vi /etc/ssh/sshd_config
# %h/.ssh/authorized_keys is the default
AuthorizedKeysFile /home/%u/.ssh/authorized_keys
# Subsystem for chroot jail
# Default is Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
# Chroot jail config
Match group sftponly
ChrootDirectory /home/chrootdir/home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Match
14. 如果您正在使用AllowUsers
,請將此使用者添加到其中。
AllowUsers username
15. 編輯/etc/passwd
和更改使用者的使用者目錄位置
vi /etc/passwd
例如:
username:x:1001:1002:/home/chrootdir/home:/bin/false
16. 重啟ssh:/etc/init.d/ssh restart