vsftp增加ssl加密功能及设置隐式加密与显式加密的方法

FTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:
vsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)

显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令(”AUTH SSL” 或者 “AUTH TLS”)显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。

ssl加密的vsftp(vsftp with OpenSSL)

a. ftp默认的传输数据是明文,弄个抓包软件就可以通过数据包来分析到账号和密码,为了搭建一个安全性比较高ftp,可以结合SSL来解决问题
b. 检查vsftp是否支持SSL:从2.0.0版本开始,vsftpd支持命令连接和数据连接的加密传输。vsftpd服务器版本查看:rpm -qa vsftpd 输出:vsftpd-2.2.2-11.el6.i686
c. 检查vsftp是否支持SSL:ldd /usr/sbin/vsftpd | grep libssl,如果输出类似与libssl.so.10 => /usr/lib/libssl.so.10 (0x00dfb000),那么支持。如果不支持,那么重新编译vsftp,然后再重新安装
d. 用openssl生成vsftpd的证书:openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
e. 修改vsftpd.conf,设置强制启用ssl

# ssl设置 
ssl_enable=YES  #是否使用ssl
allow_anon_ssl=NO  #是否允许匿名用户使用ssl
force_local_data_ssl=YES  #强制数据使用ssl传输
force_local_logins_ssl=YES  #强制登陆使用sll
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES  #开启sslv3,上同
rsa_cert_file=/etc/vsftpd/vsftpd.pem #使用/etc/vsftpd/vsftpd.pem认证文件
ssl_ciphers=HIGH  
  
#implicit_ssl=no             # 是否启用隐式ssl功能,不建议开启  
#listen_port=990             # 隐式ftp端口设置,如果不设置,默认还是21,但是  
当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!  
#debug_ssl=YES               # 输出ssl相关的日志信息

f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!

参考资料:
加密ssl vsftp、ftp隐式加密&显式加密:http://desert3.iteye.com/blog/1687355
vsftpd增加ssl加密功能(主要参考vsftpd.conf配置部分):http://coolnull.com/2415.html
vsftp配置大全—超完整版,首发CU之FTP区(主要参考“vsftpd配置参数详细整理”部分):http://bbs.chinaunix.net/thread-561183-1-1.html
openssl指令简介(主要参考文中使用到的相关指令参数):http://www.blogjava.net/ycyk168/archive/2009/11/27/303943.html

发表评论?

0 条评论。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据