vsftpd+ssl/tls实现安全通信功能
在之前的文章中说过ftp是以明文方式来进行传输的,因此很容易被人获取到账号和密码。为了实现ftp安全的传输功能,我们需要借助ssl/tls来实现安全通信功能。当然实现ftp的安全通信方式有2种:
一种是借助ssl/tls来实现的
另一种是是通过ssh+ftp的方式来实现的
在这里我们只介绍如何通过ssl/tls来实现ftp的安全通信功能
实现步骤如下:
要使用ssl/tls功能,必须要先安装mod_ssl这个模块
使用yum -y install mod_ssl即可
一、创建自签CA证书
1、创建私钥
(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
2、生成自签证书
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
3、创建相关目录和文件
#cd /etc/pki/CA
#mkdir cert crl newcerts
#touch index.txt serial
#echo ‘01‘ > serial
修改ssl的配置文件
#vim /etc/pki/tls/openssl.cnf
将其中的CA目录修改为如下
dir = /etc/pki/CA
二、为客户端颁发证书
1、客户端创建私钥
openssl genrsa -out /etc/pki/CA/private/vsftpd.key 2048
2、生成颁发请求
openssl req -new -key /etc/pki/CA/private/vsftpd.key -out /etc/pki/CA/vsftpd.csr
3、为客户端签署请求文件
openssl ca -in /etc/pki/CA/vsftpd.csr -out /etc/vsftpd/ssl/vsftpd.crt -days 3650
经过上述步骤,一个CA证书就创建好了
接下来只需要修改vsftpd的配置文件即可
三、修改/etc/vsftpd/vsftpd.conf,添加如下几行信息:
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv3=YES
allow_anon_ssl=NO
#虚拟用户不使用ssl功能
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/pki/CA/cacert.pem
rsa_key_file=/etc/pki/CA/private/cakey.pem
四、测试本地用户和虚拟用户是否登录时使用加密方式来登入的。(虚拟用户不使用加密方式登录)
测试时,请确保SElinux不是处于Enforcing,否则测试将会不成功。
当然使用ftp客户端软件测试也行,这里作者使用的flashFXP软件来测试的,测试过程不再给出。