用Ftp进行文件上传下载的时候,由于密码和内容都是明文传输,对于安全性要求较高的站点来说,是非常危险的。用SSL配合Vsftpd就能构建一台安全的FTP服务器。

      1.安装和升级Openssl

      使用最新的Openssl库是必须的,可以在官方下载最新的源码包。http://www.openssl.org/  安装和升级方法参考这里:升级openssl

      2.下载安装vsftpd

      到官方下载最新版本的vsftpd源码包 http://vsftpd.beasts.org/

# tar zxvf vsftpd-2.0.5.tar.gz
# cd vsftpd-2.0.5
# vi  builddefs.h

修改builddefs.h文件,使VSFTPD支持SSL:

#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL

修改为:

#define VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#define VSF_BUILD_SSL

开始编译安装:
# make
# make install
# cp vsftpd.conf /etc/
# cp RedHat/vsftpd.pam /etc/pam.d/ftp   //使本地用户可以登录vsftpd

make的时候错误提示 /usr/include/openssl/kssl.h:72:18: krb5.h: 没有那个文件或目录解决方法:在编译安装之前需要做几个软链接,主要是由于Redhat默认安装下,kerberos开发工具的库文件装在/usr/kerberos/include/,而不是/usr/include/ 

ln -s /usr/kerberos/include/com_err.h /usr/include/
ln -s /usr/kerberos/include/profile.h /usr/include/
ln -s /usr/kerberos/include/krb5.h /usr/include/

创建SSL证书:

# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem
# cp vsftpd.pem /usr/share/ssl/certs/vsftpd.pem          //默认vsftpd的配置文件中的证书路径# vi  /etc/vsftpd.user_list     //加入允许本地登录的用户名
# vi  /etc/vsftpd.conf
 

以下是配置文件中的几个关键参数

listen=YES
listen_port=21
# 禁止anonymous登录
anonymous_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
# 仅有vsftpd.user_list中制定的用户可登录vsftpd
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list
local_enable=YES
write_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ls_recurse_enable=NO

ssl_enable=YES              //SSL开关,开启ssl_enable,否则以下选项均无效
ssl_tlsv1=YES                //另外几个选择 ssl_sslv2 ssl_sslv3
allow_anon_ssl=NO      //是否让匿名用户使用ssl
force_local_data_ssl=YES     //强制使用openssl加密数据
force_local_logins_ssl=YES   //强制使用ssl登录
rsa_cert_file=/usr/share/ssl/certs/vsftpd.pem  //指定证书文件的路径

具体配置参数可以参考:http://vsftpd.beasts.org/vsftpd_conf.html 

# /usr/local/sbin/vsftpd /etc/vsftpd.conf &     //启动vsftpd服务,可将命令加入/etc/rc.local

最后在flashfxp等ftp客户端设置ssl选项,如下图:

vsftpd+ssl

Tags: , ,
Posted in Linux |

Leave a Reply