通過 FTP(文件傳輸協議)傳輸文件可能是將文件上傳到服務器的最常見方式之一。 ProFTPD 是一種流行且多功能的 FTP 服務器,可作為支持 TLS (SSL) 以實現安全連接的開源軟件。
默認情況下,密碼和數據以明文形式傳輸,因此 FTP 是一種不安全的協議。正如我們在本指南中所做的那樣,您可以使用 TLS 加密所有通信並使 FTP 更加安全。
本文介紹如何在 Ubuntu Server 20.04LTS 上使用 TLS 配置 proftpd。
先決條件
- Ubuntu 服務器 20.0464 位
- sudo / root 權限
在本教程中做什麼
- 安裝 ProFTPD 和 TLS。
- 設置 ProFTPD。
- 添加 FTP 用戶。
- 使用 ProFTPD 設置 TLS。
- 測試。
安裝 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配置文件位於/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 用戶。
- 匿名 FTP: 任何沒有用戶帳號和密碼的人都可以訪問 FTP 服務器。這不應該在公共服務器上使用,但它可以是您的家庭服務器或公司 LAN 上的一個選項。
- 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 訪問權限。
接下來,配置 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>
該文件如下所示:
保存文件並退出 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。
然後將證書文件權限更改為 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
下一個,[クイック接続]點擊。
[OK]單擊以檢查自簽名 SSL 證書。
您可以看到您使用 TLS/SSL 證書登錄到 FTP 服務器。
關聯
- ProFTPD 軟件項目。 協會