如何在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地址的有限訪問。

更新於:2020年1月23日

263 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告