在 Ubuntu 20.04 上使用 SSL/TLS 安裝 Vsftpd

虛擬機 (即非常安全的 FTP 守護進程)是 Linux 和其他類 Unix 系統的 FTP 服務器軟件。 FTP 服務器軟件有助於將文件從客戶端計算機傳輸到服務器,反之亦然。

在本教程中,您將學習如何 安裝 VsftpdUbuntu 20.04 並通過 SSL/TLS 啟用安全文件傳輸 (FTPS)。

先決條件

  • 一個 Ubuntu 20.04 Linux 系統
  • 一個用戶 sudo 能力
  • 啟用 SSL 的 FTP 客戶端,例如 FileZilla

在 Ubuntu 上安裝 Vsftpd

Vsftpd 在默認的 Ubuntu 軟件包存儲庫中可用。 您可以首先使用以下命令更新可用包。

$ sudo 適當更新

接下來,運行以下命令安裝 Vsftpd。

$ sudo apt安裝vsftpd

Enter 如果提示繼續安裝。

成功安裝 Vsftpd 後,您可以使用以下命令檢查版本。

$ vsftpd -v

另外,請按如下方式驗證 Vsftpd 服務器的狀態。

$ sudo systemctl 狀態 vsftpd

檢查 Vsftpd 服務器狀態

vsftpd 服務應該已經處於活動狀態。 按 q 返回命令提示符。

如果 vsftpd 服務尚未激活,您可以使用下一個命令啟動它。

$ sudo systemctl 啟動 vsftpd

配置 Vsftpd

您可以為 vsftpd 配置很多選項,但我們只會在本教程中檢查基礎知識。 使用以下命令打開 vsftpd 配置文件。

$ sudo 納米 /etc/vsftpd.conf

你會看到各種 vsftpd 選項在配置文件中都有很好的解釋。 您只需閱讀說明即可了解要啟用或禁用的內容。 下面是幾個例子。

配置匿名 FTP 訪問

默認情況下,匿名 FTP 處於禁用狀態。 我們建議您保持此默認設置不變。 但是,如果出於任何原因您想啟用匿名 FTP 訪問以進行測試,請更改 匿名啟用 從 NO 到 YES 的選項。

現在,保持原樣。

為 vsftpd 配置匿名 FTP 訪問為 vsftpd 配置匿名 FTP 訪問

允許本地用戶登錄

默認允許本地用戶登錄。 如果您想阻止本地用戶登錄到 Vsftpd 服務器,則更改的值 本地啟用 從是到否。

允許本地用戶登錄Vsftpd服務器允許本地用戶登錄Vsftpd服務器

您也可以只允許特定的本地用戶登錄到 Vsftpd 服務器。 為此,請確保 本地啟用 設置為是。

之後,在下面添加以下幾行。

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

Save 和 close vsftpd.conf 文件。

接下來,使用下一個命令創建用戶列表文件,並每行輸入一個允許的用戶。

$ sudo nano /etc/vsftpd.userlist

Save 和 close 用戶列表文件。

使用以下命令重新啟動 vsftpd:

$ sudo systemctl 重啟 vsftpd

啟用 FTP 寫入命令

要允許 FTP 用戶創建、刪除、重命名和保存文件,請取消註釋 寫啟用 選項並確保將其設置為 YES。

啟用 FTP 寫入命令啟用 FTP 寫入命令

在我們繼續之前,讓我們登錄到 Vsftpd 服務器以確認它是否正常工作。 現在,保存任何更改並 close vsftpd 配置文件。

登錄到 Vsftpd 服務器

為此,讓我們創建一個測試用戶並按如下方式分配密碼。

$ sudo useradd -m myftpuser $ sudo 密碼 myftpuser

筆記: 如果您啟用了 vsftpd 用戶列表 之前,不要忘記相應地將 ftp 用戶添加到 /etc/vsftpd.userlist。 默認情況下,用戶具有 ssh 訪問權限,建議禁用 FTP 用戶的 shell 訪問。

現在,啟動啟用 SSL 的 FTP 客戶端(例如 FileZilla),然後使用新創建的測試用戶登錄。

就我而言,FileZilla 通知我該服務器不安全,因為它不支持基於 TLS 的 FTP。

不安全的 FTP 服務器通知不安全的 FTP 服務器通知

取消連接。 讓我們在下一節中解決這個問題。

啟用 SSL/TLS 以實現安全文件傳輸

要通過 TLS 啟用安全文件傳輸,請執行以下操作。

首先,使用以下命令打開 vsftpd 配置文件。

$ sudo 納米 /etc/vsftpd.conf

接下來,尋找 rsa_cert_filersa_private_key_file 選項並更新值,如下所示。

rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key

另外,尋找 ssl_enable 並將值更改為 YES。

ssl_enable=YES

為 Vsftpd 啟用 TLS/SSL為 Vsftpd 啟用 TLS/SSL

Save 和 close vsftpd 配置文件。

生成私鑰和證書

現在,您需要創建一個私鑰並使用 openssl 生成一個 TLS/SSL 證書。 如果您的域指向 FTP 服務器,則可以使用 Let’s Encrypt 免費 SSL 證書。

要生成私鑰,請運行:

$ sudo openssl genrsa -out /etc/ssl/private/vsftpd.key

接下來,使用以下命令生成證書籤名請求。 系統會提示您提供一些信息,例如您的國家、城市、電子郵件地址等。請仔細閱讀說明。

$ sudo openssl req -new -key /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.csr

現在,生成並簽署有效期為 365 天的證書,如下所示。

$ sudo openssl x509 -req -days 365 -in /etc/ssl/certs/vsftpd.csr -signkey /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.pem

使用以下命令重新啟動 vsftpd:

$ sudo systemctl 重啟 vsftpd

再次嘗試連接到 Vsftpd 服務器。

通過 TLS 的安全 FTP 連接通過 TLS 的安全 FTP 連接

當然,這次 FileZilla 能夠通過 TLS 安全地連接。 您可以放心地選擇在以後的會話中始終信任此證書的選項。 然後點擊 繼續連接。

信任自簽名證書信任自簽名證書

如果您嘗試通過不支持 FTP over TLS 的命令行連接到 FTP 服務器,您將收到錯誤消息。 為了 example:

$ ftp 192.168.100.168

沒有 TLS 的 FTP 錯誤沒有 TLS 的 FTP 錯誤

這是另一個證明您的 Vsftpd 服務器確實已啟用通過 TLS 進行安全文件傳輸的證據。

結論

在本教程中,我們向您展示瞭如何在 Ubuntu 20.04 上安裝 Vsftpd 服務器。 我們還描述瞭如何通過 TLS 協議啟用安全文件傳輸。 我們在本文中只介紹了基本的 Vsftpd 選項,但您可以在 vsftpd 配置選項 手冊頁。