如何在 Ubuntu 20.04 LTS 上安装带有 TLS 的 ProFTPD

通过 FTP(文件传输协议)传输文件可能仍然是将文件上传到服务器的最流行方式之一。 ProFTPD 是一种流行的多功能 FTP 服务器,可作为开源软件使用,并支持 TLS (SSL) 以实现安全连接。

默认情况下,FTP 是一种不安全的协议,因为密码和数据以明文形式传输。 通过使用 TLS,正如我们在本指南中所做的那样,所有通信都可以加密,从而使 FTP 更加安全。

本文介绍如何在 Ubuntu 服务器 20.04 LTS 上使用 TLS 配置 proftpd。

先决条件

  1. Ubuntu 服务器 20.04 64 位
  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 行中,将值替换为您的主机名或域:

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

Save 文件并退出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

Save 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

Save 并退出。 最后一步是重启 ProFTPD 服务器:

sudo systemctl restart proftpd

测试 ProFTPD

要测试配置,请尝试使用 FileZilla 等软件连接到您的 FTP 服务器(我正在使用 FileZilla 此处),并填写服务器IP、用户名、密码和端口:

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

然后单击快速连接。

FileZilla 快速连接

单击“确定”以确认我们的自签名 SSL 证书。

接受自签名 SSL 证书

您将看到您已使用 TLS/SSL 证书登录到 FTP 服务器。

链接

  • ProFTPD 软件项目。 关联