如何在CentOS 7上配置和保護SFTP而不提供Shell訪問許可權
本文將學習如何在CentOS 7上配置SFTP而不啟用Shell訪問許可權。SSH檔案傳輸協議(SFTP)是一種安全的檔案傳輸方式,它使用SSH加密連線在伺服器之間傳輸檔案,這與所有FTP客戶端都支援的檔案傳輸協議(FTP)不同。
SFTP可以透過使用所有已啟用SSH訪問許可權的伺服器上的預設配置進行配置。SFTP是一種安全且易於使用的方案,但在標準配置中有一個缺點,即允許伺服器上所有SFTP使用者訪問終端Shell。
在某些組織中,我們只想允許檔案傳輸,而不允許訪問SSH。
先決條件
- 機器上安裝了CentOS 7.x。
- 具有sudo許可權的使用者。
建立SFTP使用者
我們需要建立一個新使用者,我們需要使用建立的使用者授予伺服器上僅FTP訪問許可權,併為使用者設定密碼。
$ sudo adduser ftpuser $ sudo passwd ftpuser Output: Changing password for user ftpuser. New password: Retype new password: passwd: all authentication tokens updated successfully.
建立FTP訪問資料夾
我們需要在機器上建立一個資料夾,該資料夾具有SSH伺服器許可權要求,這非常重要,特別是資料夾本身和機器中的所有子資料夾,所有上述資料夾都歸root使用者所有,任何人都不能訪問這些資料夾。
我們可以在/var/sftp/files中建立資料夾,/var/sftp由root使用者擁有,/var/sftp/files由ftpuser擁有。
現在,我們將建立所需的資料夾並設定SFTP設定所需的許可權。
為SFTP使用者建立資料夾,為資料夾提供相應的使用者許可權,並更改資料夾許可權。
$ sudo mkdir -p /var/sftp/files $ sudo chown root:root /var/sftp $ sudo chmod 755 /var/sftp
現在,我們將為新建立的使用者“ftpuser”提供/var/sftp/files資料夾的許可權。
$ sudo chown ftpuser:ftpuser /var/sftp/files
限制對資料夾的訪問
在這裡,我們將更改SSH伺服器中的配置檔案,以限制新建立的使用者ftpuser的SSH終端訪問許可權,但允許FTP檔案傳輸。
讓我們使用nano編輯SSH配置,並在檔案末尾新增以下所有配置。
$ sudo nano /etc/ssh/sshd_config Output: …. …. # Example of overriding settings on a per-user basis#Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no# ForceCommand cvs server Match User ftpuser ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /var/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
要確保需要重新啟動sshd守護程式的配置,請使用以下命令:
$ sudo systemctl restart sshd
上面配置中使用的指令是:
**Match User** - 此指令將配置應用於此處指定的使用者,我們指定了ftpuser。
**ForceCommand** - 這將限制使用者以SSH使用者身份登入終端,並在使用者登入後允許SFTP。
**PasswordAuthentication** - 這將允許對指定使用者進行密碼身份驗證。
**ChrootDirectory /var/sftp/** - 將不允許使用者訪問/var/sftp目錄之外的任何地方。
**AllowAgentForwarding no** - 將不允許對我們指定的使用者進行隧道。
**AllowTcpForwarding no** - 將不允許對我們指定的使用者進行埠轉發。
**X11Forwarding no** - 將不允許對我們指定的使用者進行X11轉發。
驗證配置
為了驗證配置,我們將檢查來自本地機器的SSH登入。
$ ssh ftpuser@localhost Output: ftpuser@localhost's password: Could not chdir to home directory /home/ftpuser: No such file or directory This service allows sftp connections only. Connection to localhost closed.
您可以看到不允許使用SSH登入ftpuser。
現在,我們將為SFTP訪問驗證相同的配置。
$ sftp ftpuser@localhost Output: ftpuser@localhost's password: Connected to localhost. sftp>
您可以看到我們允許進行SFTP登入,現在您可以使用ls命令檢視資料夾列表。
ftp> ls files sftp> ls -l drwxr-xr-x 2 1000 1000 6 Jun 19 13:31 files sftp>
在本文中,我們學習瞭如何限制使用者僅對單個資料夾進行SFTP登入,以及如何限制登入到終端,其中SSH具有更復雜的配置和方案,我們可以限制單個使用者或組或對IP地址的有限訪問。