本教程介绍了如何安装和安全使用的ProFTPd。FTP 没有 TLS 是不安全的,因为所有的密码和所有数据以明文传输。通过使用TLS,整个通信可以被加密,因此FTP使得安全得多。本文介绍如何设置使用的ProFTPd TLS搭建Ubuntu 16.04的ftp服务器,如何添加一个FTP用户,并使用FileZilla中与TLS安全连接上。
1初步说明
在本教程中,我将使用的IP地址为192.168.1.100的主机名server1.example.com。这些设置可能与你的不同,所以你不得不在适当情况下更换他们。
因为我们必须从本教程以root权限运行的所有步骤,建议切换到Root账户:
sudo -s
我将使用nano编辑在本教程中编辑配置文件。如果你喜欢使用nano也并没有安装它,然后运行这个命令来安装nano。
apt-get -y install nano
2 安装 ProFTPd 和 OpenSSL
OpenSSL是TLS的前提;安装ProFTPd的和OpenSSL,我们只需运行:
apt-get -y install proftpd openssl
系统将询问:
Run proftpd:
出于安全原因,你应该添加以下行到文件/etc/proftpd/proftpd.conf中:
nano /etc/proftpd/proftpd.conf
配置内容:
[...] DefaultRoot ~ ServerIdent on "FTP Server ready." [...]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
系统将会询问:
Country Name (2 letter code) [AU]: <– Enter your Country Name (e.g., “DE”).
State or Province Name (full name) [Some-State]:<– Enter your State or Province Name.
Locality Name (eg, city) []:<– Enter your City.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<– Enter your Organization Name (e.g., the name of your company).
Organizational Unit Name (eg, section) []:<– Enter your Organizational Unit Name (e.g. “IT Department”).
Common Name (eg, YOUR name) []:<– Enter the Fully Qualified Domain Name of the system (e.g. “server1.example.com”).
Email Address []:<– Enter your Email Address.
确保生成的证书文件。
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连接被允许(这将锁定老FTP客户端不具有TLS支持任何用户);注释掉该行或使用TLSRequired同时关闭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文件)。在这一步,我将增加仅用于FTP登录用户“tom”。
useradd --shell /bin/false tom
然后,我们要创造我们的用户“tom”的主目录,并修改该目录的所有权给用户和组“tom”。
mkdir /home/tom
chown tom:tom /home/tom/
如果你喜欢设置不同的主目录,使用下面的命令:
useradd --home /srv/tomftp --create-home --shell /bin/false tom
该命令设置一个不同的主目录,在该示例的情况下为用户的目录/ SRV/ TFTP。
下一步骤是为用户,执行passwd命令设置口令:
passwd tom
6 为FileZilla配置TLS
为了使用FTP使用TLS,您需要支持TLS,如FileZilla的FTP客户端。
在FileZilla中,打开站点管理器:
选择使用ProFTPd的使用TLS的服务器;选择FTP作为协议和FTP上需要明确TLS。