如何在 Ubuntu 16.04 上安装支持 TLS 的 ProFTPd
本教程适用于这些操作系统版本
- Ubuntu 16.04(Xenial Xerus)
- Ubuntu 11.04(Natty Narwhal)
在此页
- 1 条初步说明
- 2 安装 ProFTPd 和 OpenSSL
- 3 为 TLS 创建 SSL 证书
- 4 在 ProFTPd 中启用 TLS
- 5 添加一个FTP用户
- 6 为 TLS 配置 FileZilla
- 7 将此设置下载为 VM
- 8 个链接
本教程展示了如何通过 ProFTPd 安全地安装和使用 FTP。没有 TLS 的 FTP 是一种不安全的协议,因为所有密码和所有数据都以明文形式传输。通过使用 TLS,可以对整个通信进行加密,从而使 FTP 更加安全。本文介绍如何在 Ubuntu 16.04 服务器上使用 TLS 设置 ProFTPd,如何添加 FTP 用户以及使用 FileZilla 与 TLS 安全连接。
1 初步说明
在本教程中,我将使用 IP 地址为 192.168.1.100 的主机名 server1.example.com。这些设置可能因您而异,因此您必须在适当的地方替换它们。
因为我们必须以 root 权限运行本教程中的所有步骤,所以我们可以在本教程中的所有命令前加上字符串 sudo,或者我们现在通过键入成为 root
sudo -s
在本教程中,我将使用 nano 编辑器来编辑配置文件。如果你也喜欢使用 nano 并且还没有安装它,那么运行这个命令来安装 nano。
apt-get -y install nano
2 安装 ProFTPd 和 OpenSSL
TLS 需要 OpenSSL;要安装 ProFTPd 和 OpenSSL,我们只需运行:
apt-get -y install proftpd openssl
你会被问到一个问题:
运行 proftpd: <-- 独立
出于安全原因,您应该将以下行添加到 /etc/proftpd/proftpd.conf:
nano /etc/proftpd/proftpd.conf
[...]
DefaultRoot ~
ServerIdent on "FTP Server ready."
[...]
第一个选项启用 FTP 用户到他们的主目录的 chrooting,第二个选项启用一个 ServerIdent 消息,其中不包含任何关于所使用的 FTP 服务器软件、版本或操作系统的信息,这样潜在的攻击者就不会在银盘上获得这些详细信息。
3 为 TLS 创建 SSL 证书
为了使用 TLS,我们必须创建一个 SSL 证书。我在 /etc/proftpd/ssl 中创建它,因此我首先创建该目录:
mkdir /etc/proftpd/ssl
之后,我们可以生成 SSL 证书,如下所示:
openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem
国家名称(2 个字母代码)[AU]:<-- 输入您的国家名称(例如,\DE\)。
州或省名称(全名)[Some-State]:<-- 输入您的州或省名称。
地方名称(例如,城市)[]:<-- 输入您的城市。
组织名称(例如,公司)[Internet Widgits Pty Ltd]:<-- 输入您的组织名称(例如,您公司的名称)。
组织单位名称(例如,部门)[]:<-- 输入您的组织单位名称(例如 \IT 部门\)。
通用名称(例如,您的name) []:<-- 输入系统的完全限定域名(例如 \server1.example.com\)。
电子邮件地址 []:<-- 输入您的电子邮件地址。
并保护生成的证书文件。
chmod 600 /etc/proftpd/ssl/proftpd.*
4 在 ProFTPd 中启用 TLS
为了在 ProFTPd 中启用 TLS,打开 /etc/proftpd/proftpd.conf...
nano /etc/proftpd/proftpd.conf
...并取消注释 Include /etc/proftpd/tls.conf 行:
[...]
#
# This is used for FTPS connections
#
Include /etc/proftpd/tls.conf
[...]
然后打开/etc/proftpd/tls.conf,如下所示:
nano /etc/proftpd/tls.conf
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol TLSv1.2
TLSCipherSuite AES128+EECDH:AES128+EDH
TLSOptions NoCertRequest AllowClientRenegotiations
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient off
TLSRequired on
RequireValidShell no
</IfModule>
如果你使用 TLSRequired,那么只允许 TLS 连接(这会锁定所有使用不支持 TLS 的旧 FTP 客户端的用户);通过注释掉该行或使用 TLSRequired off,允许 TLS 和非 TLS 连接,具体取决于 FTP 客户端支持的内容。
之后重新启动 ProFTPd:
systemctl restart proftpd.service
就是这样。您现在可以尝试使用您的 FTP 客户端进行连接;但是,您应该将 FTP 客户端配置为使用 TLS(如果您使用 TLSRequired,这是必须的)——请参阅下一章如何使用 FileZilla 执行此操作。
如果您遇到 TLS 问题,可以查看 TLS 日志文件 /var/log/proftpd/tls.log。
5 添加FTP用户
本教程中使用的 ProFTPD 配置根据 Linux 系统用户数据库(/etc/passwd 和 /etc/shadow)对用户进行身份验证。在此步骤中,我将添加一个用户“tom”,仅用于 FTP 登录。
useradd --shell /bin/false tom
然后我们必须创建用户 \tom\ 的主目录,并将该目录的所有权更改为用户和组 \tom\。
mkdir /home/tom
chown tom:tom /home/tom/
这将使用 shell /bin/false 添加用户 \tom\。这个 shell 确保他可以通过 FTP 登录,但不能通过 SSH 登录。默认情况下,用户的主目录是 /home/[USERNAME],在我们的例子中是 /home/tom。 ProFTPD 被配置为将用户禁锢在他的主目录中,因此他不能访问 /home/tom 之外的系统文件。如果您想设置不同的主目录,请使用以下命令:
useradd --home /srv/tomftp --create-home --shell /bin/false tom
此命令设置不同的主目录,在此示例中为用户设置目录 /srv/tomftp。
接下来就是为用户tom设置密码,执行passwd命令:
passwd tom
并在需要时输入新密码两次。
6 为 TLS 配置 FileZilla
为了使用带有 TLS 的 FTP,您需要一个支持 TLS 的 FTP 客户端,例如 FileZilla。
在 FileZilla 中,打开站点管理器:

选择使用带有 TLS 的 ProFTPd 的服务器;选择 FTP 作为协议并通过 FTP 要求显式 TLS。

现在您可以连接到服务器,FileZilla 将要求输入密码。

如果您是第一次这样做,您必须接受服务器的新 SSL 证书:

如果一切顺利,您现在应该已登录到服务器:

7 将此设置下载为 VM
本教程中描述的设置可供 HowtoForge 订阅者下载。 OVA/OVF 格式的即用型虚拟机与 VMWare 和 Virtualbox 兼容。
VM 的登录详细信息
虚拟机有一个 SSH 用户,名称为“administrator”,密码为“howtoforge”。此 SSH 用户具有 sudo 权限。
FTP 用户“tom”的密码是“howtoforge”。
VM的IP地址是192.168.1.100,IP可以在文件/etc/network/interfaces中修改。
在将 VM 用作实时系统之前,请更改所有用户的密码。
8个链接
- ProFTPd:http://www.proftpd.org/
- FileZilla:http://filezilla-project.org/
- Ubuntu:http://www.ubuntu.com/