如何在Ubuntu 16.04上安装支持TLS的ProFTPd

本教程将介绍如何安全地使用ProFTPd和FTP。 没有TLS的FTP是不安全的协议,因为所有密码和所有数据都以明文形式传输。 通过使用TLS,可以对整个通信进行加密,从而使FTP更加安全。 本文介绍如何在Ubuntu 16.04服务器上使用TLS设置ProFTPd,如何添加FTP用户并使用FileZilla与TLS安全连接。

1初步说明

在本教程中,我将使用IP地址为192.168.1.100的hostname 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: < - standalone

出于安全考虑,您应该将以下行添加到/etc/proftpd/proftpd.conf中

nano /etc/proftpd/proftpd.conf
[...]
DefaultRoot ~
ServerIdent on "FTP Server ready."
[...]

第一个选项使FTP用户能够进入主目录,第二个选项启用一个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”)。
州或省名称(全名)[某些州]: < - 输入您的州或省名称。
地点名称(例如,城市)[]: < - 输入您的城市。
组织名称(例如,公司)[互联网Widgits有限公司]: < - 输入您的组织名称(例如,您公司的名称)。
组织单位名称(如部分)[]: < - 输入您的组织单位名称(例如“IT部门”)。
通用名称(例如,您的姓名)[]: < - 输入系统的完全限定域名(例如“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,可以使用TLS和非TLS连接,具体取决于FTP客户端支持的内容。

之后重新启动ProFTPd:

systemctl restart proftpd.service

而已。 您现在可以尝试使用FTP客户端连接; 但是,您应该将FTP客户端配置为使用TLS(如果您使用TLSRequired则必须使用TLS) - 请参阅下一章如何使用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/

这将添加用户“tom”与shell / bin / false。 该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配置FileZilla for TLS

为了使用FTP与TLS,您需要一个支持TLS的FTP客户端,如FileZilla

在FileZilla中,打开站点管理器:

选择使用ProFTPd与TLS的服务器; 选择FTP作为协议, 需要通过FTP显式TLS

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

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

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

7将此设置下载为VM

本教程中描述的设置可以下载到youcl订阅者。 可以使用OVA / OVF格式的虚拟机与VMWare和Virtualbox兼容。

登录VM的详细信息

虚拟机具有SSH用户,名称为“administrator”,密码为“youcl”。 此SSH用户具有sudo权限。

FTP用户“tom”的密码是“youcl”。

VM的IP地址为192.168.1.100,可以在文件/ etc / network / interfaces中更改IP。

在将虚拟机用作Live系统之前,请更改所有用户的密码。

8链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏