版本 1.0
源地址:http://www.howtoforge.com/proftpd-tls-debian-etch
原作者: Falko Timme <ft [at] falkotimme [dot] com>
翻译者:Topkey <tinybiz[at]163.com>
最后一次编辑时间 12/03/2007
使用说明:蓝色字体为链接、红色字体为shell中的命令、棕色字体为文件中的内容、黑色字体为正文
FTP是一个非常不安全的协议因为所有的密码和数据都是以明文的形式传输的。通过使用TLS,整个的传输过程都会被加密,因此可以是FTP变得更加的安全。这篇文章将会说明如何在你的Debian Etch系统中设置支持TLS的ProFTPd服务器。
我做这篇教程不能保证完全适合你!
1.前言
在这篇教程中我使用的主机名是server1.example.com,IP地址是192.168.0.100.这些设置可能与你的系统有所不同,所以你可以做适当的修改。
2.安装ProFTPd和OpenSSL
TLS需要使用OpenSSL,要安装ProFTPd和OpenSSL,我们运行下列命令:
apt-get install proftpd openssl
你将会回答下列的提问。
Run proftpd from inetd or standalone? <– standalone
接下来打开/etc/proftpd/proftpd.conf文件并且修改UseIPv6从on状态到off状态;否则你将会在启动ProFTPd时出现下列警告:
Starting ftp server: proftpd – IPv6 getaddrinfo ‘server1.example.com’ error: Name or service not known
vi /etc/proftpd/proftpd.conf
[...]
DefaultRoot ~
IdentLookups off
ServerIdent on “FTP Server ready.”
[...]
由于安全的原因,你也可以在你的/etc/proftpd/proftpd.conf文件中添加以下几行(感谢Reinaldo Carvalho的文章;我在这里找到了更多的安全设置说明http://proftpd.org/localsite/Userguide/linked/userguide.html)
vi /etc/proftpd/proftpd.conf
[...]
DefaultRoot ~
IdentLookups off
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]: <– 输入你的国家的名字 (例如, “DE”).
State or Province Name (full name) [Some-State]: <– 输入你的省或者县市的名字.
Locality Name (eg, city) []: <– 输入你的城市名.
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <– 输入你的组织名(例如., 你公司的名字).
Organizational Unit Name (eg, section) []: <–输入你组织的部门名(例如”IT 部门”).
Common Name (eg, YOUR name) []: <– 输入你的服务器的域名(例如 “server1.example.com”).
Email Address []: <– 输入你的EMAIL地址.
4 使ProFTPd支持TLS
要使ProFTPd支持TLS,打开/etc/proftpd/proftpd.conf文件并且找到这以<IfModule mod_tls.c>开头的部分
vi /etc/proftpd/proftpd.conf
在类似这里的地方
[...]
<IfModule mod_tls.c>
TLSEngine off
</IfModule>
[...]
修改上面的参数为
[...]
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSOptions NoCertRequest
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient off
TLSRequired on
</IfModule>
[...]
如果你的配置中TLSRequired 是on的,你的FTP服务器只支持TLS的链接(这样的话将会阻止任何所有的老的不支持TLS的FTP客户端);注销掉这一行或者把TLSRequired设置为off的话,TLS和不支持TLS的链接都将会被允许,依赖你的FTP客户端的支持。
然后重启ProFTPd
/etc/init.d/proftpd restart
做到这一步,你就可以用FTP客户端试着连接服务器,你应该配置你的FTP客户端使用TLS模式(如果你设置TLSRequired on的话这一步是必不可少的)看下一章节我们如何用FileZilla来做到这一点的。
如果你在使用TLS的过程中遇到问题,你可以查看TLS的日志文件/var/log/proftpd/tls.log.
5 配置FileZilla支持TLS
要使用FTP的TLS功能,你需要你的客户端支持TLS,例如FileZilla.
在FileZilla中,打开服务器管理器:

filezilla
选择服务器使用ProFTPd支持TLS;在服务器类型的下拉菜单中,选择文件而非默认的FTP:

现在你可以连接你的服务器.如果你第一次这样做,你必须接受服务器的新的SSL证书。

如果一切正常的话,你将会登录到服务器

6 链接