Security

在 Debian Squeeze 中限制使用者訪問

  • August 22, 2012

我一直在考慮限制使用者訪問他們自己的目錄的方法,不允許他們在他們自己的使用者目錄之上導航。

我正在使用 SFTP,並且不想安裝正常 FTP,因為會引入所有額外的安全問題。

rbash聽起來是個好主意,減去它禁用的事實cd。我希望使用者能夠在他們的主目錄中創建目錄,並瀏覽他們自己的文件夾。

chroot監獄聽起來有其自身的一系列問題,而且聽起來比它的價值更令人頭疼。

所以,我的問題是,有沒有更簡單的方法來限制使用者只能瀏覽他們的使用者目錄,而不是他們使用者目錄之上的任何東西?

如果您可以將它們限制為僅 SFTP 並且不允許他們通過 ssh 登錄,那麼您可以使用 openssh 中內置的 chroot 工具。這是一篇很好的文章,解釋瞭如何

因此,按照 Stew 指向我的連結和說明,我能夠完成這項工作。不過,為了讓 SSH 密鑰正常工作,我必須進行一些更改,所以我想我會發布一份我所做的詳細列表,以供其他人閱讀。

對於chroot使用 SSH 進行僅 SFTP 訪問的使用者:

從 Debian Squeeze 6.0.5 和 OpenSSH 5.5p1 開始

  1. 添加使用者:adduser username
  2. 添加一個組以將使用者分配給您想要 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

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