linux

vsftp与SSL/TLS加密传输

小樊
49
2025-11-06 09:40:17
栏目: 云计算

VSFTP与SSL/TLS加密传输配置指南

一、SSL/TLS加密传输概述

SSL/TLS(Secure Sockets Layer/Transport Layer Security)是用于加密网络通信的协议,可防止FTP传输中的数据(如用户名、密码、文件内容)被窃取或篡改。VSFTPD(Very Secure FTP Daemon)作为Linux下常用的FTP服务器,支持通过SSL/TLS实现安全传输,常见模式包括FTPS(FTP over SSL/TLS,隐式加密,端口990)显式FTP over TLS(端口21,通过STARTTLS升级加密)

二、配置前的准备工作

1. 安装VSFTPD与OpenSSL

在大多数Linux发行版中,需先安装VSFTPD和OpenSSL工具包:

2. 生成SSL证书与私钥

使用OpenSSL生成自签名证书(生产环境建议使用CA签发的证书):

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem

执行后会提示输入国家、组织名称等信息,生成的证书(.crt)和私钥(.key)默认有效期为365天。

三、VSFTPD配置SSL/TLS加密

编辑VSFTPD主配置文件(路径因发行版而异,常见为/etc/vsftpd.conf/etc/vsftpd/vsftpd.conf),添加或修改以下关键配置:

1. 启用SSL/TLS核心功能

ssl_enable=YES                # 启用SSL/TLS加密
allow_anon_ssl=NO             # 禁止匿名用户使用SSL
force_local_data_ssl=YES      # 强制本地用户数据连接(如文件上传/下载)使用SSL
force_local_logins_ssl=YES    # 强制本地用户登录过程使用SSL

2. 配置协议与证书路径

ssl_tlsv1=YES                 # 允许TLSv1协议(推荐)
ssl_sslv2=NO                  # 禁用不安全的SSLv2协议
ssl_sslv3=NO                  # 禁用不安全的SSLv3协议
rsa_cert_file=/etc/ssl/certs/vsftpd.pem  # 证书文件路径
rsa_private_key_file=/etc/ssl/private/vsftpd.pem  # 私钥文件路径

3. 可选:优化加密强度

ssl_ciphers=HIGH              # 使用高强度加密算法(如AES)
require_ssl_reuse=NO          # 允许客户端重用SSL会话(提升性能)

4. 重启VSFTPD服务

保存配置文件后,重启服务使更改生效:

# Ubuntu/Debian
sudo systemctl restart vsftpd

# CentOS
sudo systemctl restart vsftpd

四、防火墙配置

需允许FTP及SSL相关端口通过防火墙:

以Ubuntu的ufw为例:

sudo ufw allow 21/tcp
sudo ufw allow 990/tcp       # 若使用FTPS隐式模式
sudo ufw allow 40000:50000/tcp  # 被动模式端口范围
sudo ufw reload

CentOS使用firewalld

sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=990/tcp
sudo firewall-cmd --permanent --add-port=40000-50000/tcp
sudo firewall-cmd --reload

五、客户端连接测试

1. 命令行工具(如lftp

lftp -e 'open ftps://your_server_ip; user your_username your_password; ls; quit'

若连接成功,会显示服务器目录列表。

2. 图形化客户端(如FileZilla)

六、注意事项

0
看了该问题的人还看了