为vsftpd加上ssl支持
对于一些重要的/机密的文件的传输,采用普通的ftp明文传输,有可能造成信息泄漏,所以采用ssl加密传输不失是一种较好的
解决方案.
案例:freebsd+vsftpd 2.03+ssl
先前已经安装了vsftpd2.03,现在要加入ssl支持。切换到root权限下:
1 安装openssl,
root#cd /usr/ports/security/openssl
root#make install clean
2 重新安装vsftpd2.03,加入ssl支持。
root#/cd /usr/ports/ftp/vsftpd/
root#make deinstall
不知道 ssl的编译参数是多少?查看Makefile文件。
root#more Makefile
看到有一行
.if !defined(WITHOUT_SSL) && defined(WITH_VSFTPD_SSL)
现在知道了
root#make WITH_VSFTPD_SSL=yes install clean
3 完成之后,创建证书:
openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem
填写相关内容后,生成vsftpd.pem证书。将次证书放在。/usr/share/ssl/目录下
4 修改vsftpd.conf文件
root#ee /usr/local/etc/vsftpd.conf
加入一些内容:
ssl_enable=YES
ssl_sslv2=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/usr/share/ssl/vsftpd.pem
ssl_enable=YES 支持加密协议。
ssl_sslv2=YES 支持安全套接字层 v2
force_local_data_ssl=YES
force_local_logins_ssl=YES
这两行强制非匿名用户使用加密登陆和数据传输,如果设定为NO,则用户可以选择加密,也可以不加密。
rsa_cert_file=/usr/share/ssl/vsftpd.pem
指明证书的路径
默认为:=/usr/share/ssl/certs/vsftpd.pem
5 重起vsftpd,使用客户端测试。
以FileZilla为例 Servertype 由ftp修改为FTP over SSL(explicit encryption),同时修改传输模式 Edit->Settings->Firewall settings,选中Passive Mode(如果ftp在防火墙内部)FileZilla是一个开源的ftp client,很好用的。哈哈。