架设支持SSL的Vsftpd安全服务器 十二月 31st, 2006
用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选项,如下图:

