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

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

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

先決條件

  1. Ubuntu 服務器 20.04 64 位
  2. 須藤/根權限

本教程的作用

  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 行中,將值替換為您的主機名或域。

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 服務器創建用戶之前,將 /bin/false 添加到 /etc/shells 文件中。

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

現在創建一個具有特定主目錄的用戶,禁用 shell 訪問,並將其授予 FTP 服務器。

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

上面的命令將創建一個名為 tom 的新用戶,其主目錄為 /home/tom/,但無法通過 shell 訪問 /bin/false。

添加 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 服務器(我使用 檔案 此處),輸入服務器 IP、用戶名、密碼和端口。

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

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

FileZilla 快速連接

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

接受自簽名 SSL 證書

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

關聯

  • ProFTPD 軟件項目。 協會