本教程将介绍如何安全地使用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链接
- ProFTPd: http : //www.proftpd.org/
- FileZilla: http : //filezilla-project.org/
- Ubuntu: http : //www.ubuntu.com/