如何為特定用戶設置SFTP登入後到chroot特定目錄?

如何設置更安全的SFTP?

本教學適用於以下系統環境

  • Red Hat Enterprise Linux (RHEL) 6
  • Red Hat Enterprise Linux (RHEL) 7

在預設的情況下使用者可以自由瀏覽整個檔案系統,但基於安全的理由,管理員希望SFTP登入伺服器的使用者只能在特定目錄下瀏覽,我們可以透過設置chroot的方式,讓SFTP使用者只可在特定目錄下瀏覽。

沒有使用chroot的情況

沒有使用chroot的情況

沒有使用chroot,登入後的路徑預設為使用者的家目錄,使用者可以進入到任何有權限的目錄瀏覽,例如 /etc 查看系統設定等等。

有使用chroot的情況

有使用chroot的情況

使用chroot,登入後的路徑在特定目錄,只可在特定目錄下瀏覽。

為了達到上述的需求,以下是詳細的步驟說明:

  1. 修改SSH的設定檔
    編輯「/etc/ssh//sshd_config」設定檔,找到以下Subsystem設定 

    Subsystem    sftp    /usr/libexec/openssh/sftp-server

    註解並新增Subsystem設定

    #Subsystem    sftp     /usr/libexec/openssh/sftp-server
    Subsystem    sftp    internal-sftp

    在設定檔最後加上以下設定,其中ChrootDirectory設定的 %u 代表使用者帳號

    Match group sftponly
        ChrootDirectory /chroots/%u
        AllowTcpForwarding no
        ForceCommand internal-sftp
        X11Forwarding no
  2. 建立一個SFTP專用的群組
    使用 groupadd 指令建立一個命為 sftponly 的群組 

    # groupadd sftponly
  3. 建立新的使用者或修改已有的使用者,並加入 sftponly 群組
    使用 useradd 指令建立一個命為 sftponlyuser 的使用者 

    # useradd -d /home/sftponlyuser -M -g sftponly -s /bin/false sftponlyuser
    # passwd sftponlyuser

    使用 usermod 指令修改已有的使用者

    # usermod -g sftponly -s /bin/false sftponlyuser
  4. 建立使用者的 chroot 特定目錄
    建立一個給使用者使用的 chroot 特定目錄,並配置目錄權限。目錄的擁有者必需為 root,並且只能由 root 寫入。 

    # mkdir -p /chroots/sftponlyuser
    # chmod -R 755 /chroots/sftponlyuser
  5. 在 chroot 目錄下建立使用者可讀寫的主目錄
    # mkdir /chroots/sftponlyuser/myhome
    # chown sftponlyuser:sftponly /chroots/sftponlyuser/myhome
    # chmod 755 /chroots/sftponlyuser/myhome
  6. 重啓 sshd 服務
    Red Hat 6 

    # /etc/init.d/sshd restart

    Red Hat 7

    # systemctl restart sshd.service

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*

驗證碼 * Time limit is exhausted. Please reload CAPTCHA.

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料