如何在 Ubuntu 20.04 LTS 上安装带有 TLS 的 ProFTPD
通过 FTP(文件传输协议)传输文件可能仍然是将文件上传到服务器的最流行的方法之一。 ProFTPD 是一款流行且多功能的 FTP 服务器,可作为开源软件使用,并支持 TLS (SSL) 以实现安全连接。
默认情况下,FTP 是一种不安全的协议,因为密码和数据以明文形式传输。通过使用 TLS(正如我们在本指南中所做的那样),所有通信都可以加密,从而使 FTP 更加安全。
本文介绍如何在 Ubuntu 服务器 20.04 LTS 上使用 TLS 配置 proftpd。
先决条件
- Ubuntu 服务器 20.04 64 位
- 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 行中,将值替换为您的主机名或域:
ServerName "My FTP-Server"
取消注释 DefaultRoot 行以为所有用户启用监狱:
DefaultRoot ~
并通过 systemctl 命令按以下方式重新启动 ProFTPD。
sudo systemctl restart proftpd
添加 FTP 用户
有两种类型的 FTP 用户可用,匿名 FTP 用户和“普通”FTP 用户:
- 匿名 FTP:任何人都可以通过 FTP 服务器进行访问,而无需拥有用户帐户和密码。这不应该在公共服务器上使用,但可能是家庭服务器或公司 LAN 的一个选项。
- 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。
现在,配置 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(我在这里使用 FileZilla)等软件连接到您的 FTP 服务器,并填写服务器 IP、用户名、密码和端口:
Server IP : 192.168.0.100
username : tom
Password ******
Port : 21
然后单击“快速连接”。
单击“确定”以确认我们的自签名 SSL 证书。
您将看到您已使用 TLS/SSL 证书登录到 FTP 服务器。
链接
- ProFTPD 软件项目。关联