通过 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 行以启用所有用户的 jail:
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>
该文件应如下所示:
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。
接下来,将证书文件权限更改为 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
然后单击快速连接。
单击“确定”以确认我们的自签名 SSL 证书。
您将看到您已使用 TLS/SSL 证书登录到 FTP 服务器。
链接
- ProFTPD 软件项目。 关联