通過 FTP(文件傳輸協議)傳輸文件可能是將文件上傳到服務器的最常見方式之一。 ProFTPD 是一種流行且多功能的 FTP 服務器,可作為支持 TLS (SSL) 以實現安全連接的開源軟件。

默認情況下,密碼和數據以明文形式傳輸,因此 FTP 是一種不安全的協議。正如我們在本指南中所做的那樣,您可以使用 TLS 加密所有通信並使 FTP 更加安全。

本文介紹如何在 Ubuntu Server 20.04LTS 上使用 TLS 配置 proftpd。

先決條件

  1. Ubuntu 服務器 20.0464 位
  2. sudo / root 權限

在本教程中做什麼

  1. 安裝 ProFTPD 和 TLS。
  2. 設置 ProFTPD。
  3. 添加 FTP 用戶。
  4. 使用 ProFTPD 設置 TLS。
  5. 測試。

安裝 Proftpd 和 OpenSSL

Proftpd 和 OpenSSL 在 Ubuntu 存儲庫中可用,可以使用 apt 命令安裝。

sudo apt-get install -y proftpd openssl

ProFTPD 安裝如下。安裝過程不會提示您輸入。

接下來,確保 proFTPD 已安裝並正在運行。運行以下命令:

sudo proftpd --version

檢查安裝的 ProFTPD 版本。然後查看服務狀態,使用systemctl命令執行查詢。

sudo systemctl status proftpd

ProFTPD服務狀態

ProFTPD 設置

安裝 ProFTPD 後,您需要調整配置以成為功能齊全且安全的服務器。 ProFTPD配置文件位於/etc/proftpd/目錄——編輯文件proftpd.conf。

sudo nano /etc/proftpd/proftpd.conf

[サーバー名]在該行中,將值替換為主機名或域。

ServerName                      "My FTP-Server"

取消註釋 DefaultRoot 行,為所有用戶啟用 jail。

DefaultRoot   		~

然後使用 systemctl 命令重新啟動 ProFTPD,如下所示:

sudo systemctl restart proftpd

添加 FTP 用戶

有兩種類型的 FTP 用戶可用:匿名 FTP 用戶和“普通”FTP 用戶。

  1. 匿名 FTP: 任何沒有用戶帳號和密碼的人都可以訪問 FTP 服務器。這不應該在公共服務器上使用,但它可以是您的家庭服務器或公司 LAN 上的一個選項。
  2. FTP用戶: 只有擁有用戶帳號和密碼的人才能訪問 FTP 服務器。

在創建 FTP 服務器用戶之前,在 /etc/shells 文件中添加 /bin/false。

sudo echo "/bin/false" >> /etc/shells

然後創建一個具有特定主目錄的用戶,禁用 shell 訪問並允許 FTP 服務器。

sudo useradd -m -s /bin/false tom
sudo passwd tom

上面的命令創建了一個名為 tom 的新用戶,其主目錄為 /home/tom/,但對 /bin/false 沒有 shell 訪問權限。

添加 FTP 用戶

接下來,配置 ProFTPD 以便用戶 tom 可以訪問 FTP 服務器。

sudo nano /etc/proftpd/conf.d/tom.conf

添加此配置文件以允許用戶 tom 登錄並從服務器上傳/下載文件。

<Directory /home/tom>
  Umask 022 022
  AllowOverwrite off
  <Limit LOGIN>
    AllowUser tom
    DenyALL
  </Limit>
  <Limit ALL>
    Order Allow,Deny
    AllowUser tom
    Deny ALL
  </Limit>
  <Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
    AllowUser tom
    Deny ALL
  </Limit>
</Directory>

該文件如下所示:

每個用戶配置文件的 ProFTPD

保存文件並退出 nano。然後重新啟動 ProFTPD。

sudo systemctl restart proftpd

您可以在此階段使用 FTP,但在下一步使用 TLS 會更安全。

使用 proftpd 配置 TLS

要使用 TLS,您需要創建 SSL 證書。 使用 OpenSSL 命令生成 SSL 證書。

sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt -nodes -days 365

上述命令會在/etc/ssl/certs/目錄下生成證書文件proftpd.crt,在/etc/ssl/private/目錄下生成證書密鑰文件proftpd.key。

生成 SSL 證書

然後將證書文件權限更改為 600。

sudo chmod 600 /etc/ssl/certs/proftpd.crt
sudo chmod 600 /etc/ssl/private/proftpd.key

現在回到/etc/proftpd目錄,設置ProFTPD使用生成的SSL證書。

nano /etc/proftpd/proftpd.conf

取消註釋 TLS 行。

Include /etc/proftpd/tls.conf

保存 tls.conf 文件並退出。

然後編輯 TLS 配置文件以啟用安全身份驗證。

nano /etc/proftpd/tls.conf

取消註釋所有這些行。

TLSEngine                               on
TLSLog                                  /var/log/proftpd/tls.log
TLSProtocol                             SSLv23

TLSRSACertificateFile                   /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile                /etc/ssl/private/proftpd.key

TLSOptions                      NoCertRequest EnableDiags NoSessionReuseRequired

TLSVerifyClient                         off

TLSRequired                             on

保存並退出。最後一步是重新啟動 ProFTPD 服務器。

sudo systemctl restart proftpd

測試 ProFTPD

要測試配置,請嘗試使用 FileZilla 等軟件連接到 FTP 服務器(我 FileZilla 在此處輸入服務器 IP、用戶名、密碼和端口)。

Server IP : 192.168.0.100
username : tom
Password ******
Port : 21

下一個,[クイック接続]點擊。

FileZilla 快速連接

[OK]單擊以檢查自簽名 SSL 證書。

接受自簽名 SSL 證書

您可以看到您使用 TLS / SSL 證書登錄到 FTP 服務器。

關聯

  • ProFTPD 軟件項目。 協會