原文链接:【安装教程】统信UOS1070上使用vsftpd服务上传下载文件
Hello,大家好啊!今天带来一篇关于在统信UOS 1070上使用vsftpd服务实现加密文件上传和下载的文章。默认的FTP传输是不加密的,但在数据传输时,安全性尤为重要。使用vsftpd服务,我们可以通过启用SSL/TLS加密,实现安全的文件传输,保护数据的隐私性和完整性。
本文将详细介绍在统信UOS上配置vsftpd以实现加密文件传输的方法,帮助大家更安全地管理文件。欢迎大家分享转发,点个关注和在看吧!
什么是vsftpd?
vsftpd (Very Secure FTP Daemon)是一款专为Linux系统设计的FTP服务器软件,具有良好的安全性、速度和稳定性。启用SSL/TLS加密后,vsftpd可以实现加密文件传输,确保数据安全。它在众多Linux发行版上都有广泛的应用。
1.查看系统信息
pdsyw@pdsyw-PC:~/Desktop$ cat /etc/os-version
pdsyw@pdsyw-PC:~/Desktop$ uname -a
此命令显示系统的内核版本、主机名和硬件信息,有助于确认当前系统的环境。
2.更新系统源
pdsyw@pdsyw-PC:~/Desktop$ sudo apt update
此命令更新系统的包列表,确保我们下载的程序是最新版本。
3.安装vsftpd
pdsyw@pdsyw-PC:~/Desktop$ sudo apt install vsftpd -y
安装 FTP 服务器 vsftpd,以便允许文件上传和下载。
4.编辑vsftpd配置文件
pdsyw@pdsyw-PC:~/Desktop$ sudo vim /etc/vsftpd.conf
pdsyw@pdsyw-PC:~/Desktop$ grep -v "^#" /etc/vsftpd.conf
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NOutf8_filesystem=YES
allow_writeable_chroot=YES
pdsyw@pdsyw-PC:~/Desktop$
修改 vsftpd 的配置文件,调整一些参数来配置 FTP 服务器的行为。
参数的解释:
**listen=YES**
让 vsftpd 使用 IPv4 监听,启用后,服务器将在 IPv4 地址上侦听 FTP 请求。**listen_ipv6=NO**
禁用 IPv6 监听。设为NO
表示不使用 IPv6 地址监听 FTP 请求。**anonymous_enable=NO**
禁用匿名登录。设为NO
表示不允许未授权的匿名用户访问 FTP 服务器,增强了安全性。**local_enable=YES**
启用本地用户登录。允许服务器上已有系统用户使用自己的账户登录 FTP 服务器。**write_enable=YES**
允许写操作。设为YES
后,登录用户可以在 FTP 服务器上执行写操作(例如,上传文件、删除文件等)。**local_umask=022**
设置本地用户创建文件和目录时的权限掩码。022
表示新创建的文件权限为755
(目录)或644
(文件),即拥有者有读写权限,其他用户只有读权限。**dirmessage_enable=YES**
启用目录消息功能。当用户切换到某个目录时,显示该目录的消息文件内容。**use_localtime=YES**
使用本地时间。启用后,服务器日志和文件时间戳会使用本地时区的时间。**xferlog_enable=YES**
启用文件传输日志记录。所有传输操作(上传、下载)都会记录在日志文件中。**connect_from_port_20=YES**
启用主动模式下的端口 20 传输。使用 FTP 协议中的端口 20 进行数据传输。**chroot_local_user=YES**
限制本地用户的文件访问权限至其家目录,防止用户访问其他系统文件,增强了安全性。**secure_chroot_dir=/var/run/vsftpd/empty**
指定一个用于隔离的空目录,vsftpd 以此目录为 chroot 环境,以进一步提高安全性。**pam_service_name=vsftpd**
指定使用的 PAM(可插入身份验证模块)服务名称。这里指定为vsftpd
,以便系统用 PAM 验证 FTP 用户。**rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem**
指定 RSA 证书文件路径,用于 SSL/TLS 加密通信。这是系统自动生成的“snakeoil”自签名证书文件。**rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key**
指定 RSA 私钥文件路径,用于 SSL/TLS 加密通信。**ssl_enable=NO**
禁用 SSL 加密。设为NO
表示当前不使用 SSL 加密。设置为YES
时可启用加密传输。**utf8_filesystem=YES**
启用 UTF-8 文件系统编码,确保支持多语言字符,避免文件名乱码。**allow_writeable_chroot=YES**
允许具有写权限的用户在 chroot 环境下工作。
5.重启vsftpd服务
pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl restart vsftpd.service --now
pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl status vsftpd.service
重新启动 vsftpd 以使配置生效。可以使用 status
检查服务是否正常运行。
6.查看IP
pdsyw@pdsyw-PC:~/Desktop$ ip a
显示系统的 IP 地址,便于在 FTP 客户端中进行连接配置。
7.安装FTP客户端
8.打开FTP客户端
9.连接
10.设置是否记住密码
11.提示不安全的FTP连接
12.连接成功
13.上传文件测试
14.上传成功
15.查看上传的文件
16.下载文件测试
17.下载成功
18.生成自签名证书
pdsyw@pdsyw-PC:~/Desktop$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
**sudo**
:以超级用户身份执行命令,因为生成的证书和密钥文件将保存到系统受限的目录/etc/ssl/private/
。**openssl**
:调用 OpenSSL 工具,用于生成密钥和证书。**req**
:表示生成证书请求,包含证书签名和用户信息。**-x509**
:生成自签名证书而不是仅生成证书请求。自签名证书即由自己签发,无需外部的证书颁发机构 (CA)。**-nodes**
:生成的密钥不进行加密(即不使用密码保护),这样 vsftpd 在启动时无需手动输入密码。**-days 365**
:设置证书的有效期为 365 天。**-newkey rsa:2048**
:创建一个新的 RSA 密钥,密钥长度为 2048 位,以保证加密强度。**-keyout /etc/ssl/private/vsftpd.pem**
:指定生成的私钥文件的保存路径和文件名,这里是/etc/ssl/private/vsftpd.pem
。**-out /etc/ssl/private/vsftpd.pem**
:指定生成的自签名证书文件的保存路径和文件名,这里与私钥文件相同。
19.编辑vsftpd配置文件
pdsyw@pdsyw-PC:~/Desktop$ sudo vim /etc/vsftpd.conf
pdsyw@pdsyw-PC:~/Desktop$
pdsyw@pdsyw-PC:~/Desktop$ grep -v "^#" /etc/vsftpd.conf
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NOutf8_filesystem=YES
allow_writeable_chroot=YESssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
**ssl_enable=YES**
启用 SSL/TLS 加密,确保数据传输安全。**allow_anon_ssl=NO**
禁止匿名用户使用 SSL 加密,仅允许已授权用户加密连接。**force_local_data_ssl=YES**
强制本地用户使用 SSL 加密传输数据,防止明文数据泄露。**force_local_logins_ssl=YES**
强制本地用户登录时使用 SSL 加密,保护登录凭据。**ssl_tlsv1=YES**
启用 TLSv1 协议用于加密连接。**ssl_sslv2=NO**
** 和 ****ssl_sslv3=NO**
禁用 SSLv2 和 SSLv3 协议,这些协议被认为不安全。**rsa_cert_file=/etc/ssl/private/vsftpd.pem**
指定新生成的自签名证书文件路径。**rsa_private_key_file=/etc/ssl/private/vsftpd.pem**
指定与证书匹配的私钥文件路径,确保安全连接。
20.重启vsftpd服务
pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl restart vsftpd.service
pdsyw@pdsyw-PC:~/Desktop$ sudo systemctl status vsftpd.service
21.连接FTP
22.信任证书
23.TLS连接已建立
24.上传文件测试
25.上传成功
26.下载文件测试
27.下载成功
常见问题及解决方法
- 连接失败,提示“证书错误”?
这是因为使用的是自签名证书。您可以在FTP客户端中选择信任该证书,或者使用由受信任机构签发的证书替换自签名证书。
- 传输过程中断或失败?
检查是否正确设置了强制加密(force_local_data_ssl=YES和force_local_logins_ssl=YES),并确保使用了支持FTPS的客户端。
- 无法上传文件,提示“无权限”?
确保FTP用户具有上传文件的权限。可以通过以下命令检查并修改权限:
sudo chmod -R 755 /指定目录
通过本文的介绍,大家应该已经掌握了如何在统信UOS 1070系统上配置vsftpd并启用SSL/TLS加密,以实现安全的文件上传和下载。这种加密方式能够有效保护数据在传输过程中的安全性,特别适合需要高安全性的应用场景。如果您觉得这篇文章对您有帮助,别忘了分享、转发,并记得点个关注和在看!感谢大家的阅读,期待您的反馈和交流!