配置vsftpd使用SSL/TLS

1.建目录存放SSL/TLS用到的key

mkdir /etc/ssl/private

2.生成自签名key和证书

使用命令:openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt

生成自签名key和证书过程中,Common Name填写服务器IP,其它可以忽略。

备注:如已购买SSL,可将购买SSL的key放至/etc/ssl/private/,证书放至/etc/ssl/certs/。

3.配置vsftpd使用SSL/TLS

编辑/etc/vsftpd/vsftpd.conf,在文件末尾增加如下配置项:

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1_1=YES
ssl_tlsv1_2=YES
ssl_tlsv1=NO
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=YES
ssl_ciphers=HIGH
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key

保存文件并重启vsftpd:

systemctl restart vsftpd

备注:SSL配置项说明

//强制用户名/密码和数据进行SSL/TLS加密

force_local_data_ssl=YES
force_local_logins_ssl=YES

//使用TLS 1.1和1.2提供的更强、更好的加密

ssl_tlsv1_1=YES
ssl_tlsv1_2=YES

//TLS 1.0变得不安全了,所以要禁用它。请注意,一些较老的FTP客户端与新的TLS版本不兼容,可能需要将该选项设置为“YES”。

ssl_tlsv1=NO

//额外的保护设置以对抗MITM攻击。这可能与一些较老的FTP客户端不兼容。如果遇到连接丢失,请将此选项设置为“NO”。

require_ssl_reuse=YES

//要求服务器使用更强的密码套件

ssl_ciphers=HIGH

4.客户端测试:

4.1  windows客户端(示例filezilla client)配置:

(1)加密下拉框选择“要求显式的FTP over TLS”

(2)连接后出现证书提示,点击确定:

(3)已连接登录FTP:

4.2 Linux客户端(示例lftp)配置:

(1)首先安装lftp:yum -y install lftp

(2)将服务器端证书vsftpd.crt拷贝到客户端,然后编辑/etc/lftp.conf 配置文件,在文件末尾添加:

set ssl:ca-file “/etc/ssl/certs/vsftpd.crt”

(3)使用如下命令登录(示例中10021为端口号,vusera为用户名):

lftp -p 10021 vusera@192.168.195.177

提示输入密码,输入vusera的密码即可登录。