如何在Ubuntu 15.04上安装具有TLS支持的ProFTPd
FTP是非常不安全的协议,因为所有密码和所有数据都以明文形式传输。 通过使用TLS,可以对整个通信进行加密,从而使FTP更加安全。 本文介绍如何在Ubuntu 15.04服务器上使用TLS设置ProFTPd,如何添加FTP用户并使用FileZilla安全地连接到TLS。
1初步说明
在本教程中,我将使用IP地址为192.168.1.100
的hostname server1.example.com
。 这些设置可能会有所不同,因此您必须在适当的情况下更换它们。
因为我们必须使用root权限运行本教程的所有步骤,所以我们可以使用字符串sudo
在本教程中添加所有命令,也可以通过键入来成为root
sudo su
2安装ProFTPd和OpenSSL
TLS需要OpenSSL; 安装ProFTPd和OpenSSL,我们只需运行:
apt-get 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”与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的服务器; 在“ 服务器类型”
下拉菜单中,选择FTPES
而不是普通FTP
:
现在可以连接到服务器。 如果您是第一次这样做,则必须接受服务器的新SSL证书:
如果一切顺利,您现在应该在服务器上登录:
7链接
- ProFTPd: http : //www.proftpd.org/
- FileZilla: http : //filezilla-project.org/
- Ubuntu: http : //www.ubuntu.com/