共计 2534 个字符,预计需要花费 7 分钟才能阅读完成。
FTP(File Transfer Protocol)是一种提供对服务器上的文件的拜访协定。它是最早容许用户通过互联网下载文件的协定之一。通过 FTP 协定,用户能够轻松地在服务器上下载和上传文件。
Vsftpd(Very Secure FTP daemon)是一种平安的 FTP 守护过程,是 FTP 协定的降级。它通过加密传递数据,保障文件平安传输,不受黑客的攻打。
在本篇文章中,咱们将焦点放在 CentOS 8 / RHEL 8 上的 vsftpd 上。
1) 装置 vsftpd
运行 dnf 命令,装置 vsftpd
$ sudo dnf install vsftpd
按 y 并按 ENTER 开始装置,上面的输入确认 vsftpd 曾经胜利装置。
查看 vsftpd 版本
[linuxtechi@centos8-vsftpd ~]$ rpm -q vsftpd
vsftpd-3.0.3-31.el8.x86_64
[linuxtechi@centos8-vsftpd ~]$
输入后果应与终端上打印的版本统一。要获取 vsftpd 的更详细信息,能够在开端增加 -i 标记,如下所示
$ rpm -qi vsftpd
启动 vsftpd 服务
$ sudo systemctl start vsftpd
设置开机自启动 vsftpd 服务
$ sudo systemctl enable vsftpd --now
查看 vsftpd 服务状态
$ sudo systemctl status vsftpd
2) 创立 FTP 用户及其目录
接下来,咱们将创立一个用于拜访 FTP 服务器的用户,名称能够酌情批改。
$ sudo adduser ftpuser
$ sudo passwd ftpuser
有了 FTP 用户之后,咱们将持续创立 FTP 目录,并调配以下权限和目录所有权。
$ sudo mkdir -p /home/ftpuser/ftp_dir
$ sudo chmod -R 750 /home/ftpuser/ftp_dir
$ sudo chown -R ftpuser: /home/ftpuser/ftp_dir
咱们还须要将 FTP 用户增加到 /etc/vsftpd/user_list 文件中,以容许用户拜访 VSFTP 服务器。
$ sudo bash -c 'echo ftpuser >> /etc/vsftpd/user_list'
3) 配置 vsftpd
vsftpd 的默认配置文件是 /etc/vsftpd/vsftpd.conf,该文件充斥了各种指令,可帮忙增强您的 FTP 服务器的安全性。
容许本地用户近程拜访 FTP 服务器,并阻止匿名用户,请设置如下行
anonymous_enable=NO
local_enable=YES
授予用户运行任何 FTP 命令的权限,并进行上传、下载和删除文件等更改,请设置如下行
write_enable=YES
出于平安思考,您能够抉择限度用户拜访其主目录以外的任何文件和目录,请设置如下行
chroot_local_user=YES
授予用户对其各自主目录的写访问权,请设置如下行
allow_writeable_chroot=YES
接下来,咱们将自定义端口来启用被动 FTP 连贯。在本例中,咱们将指定端口 30000 和 31000。稍后咱们将在防火墙上关上这些。
pasv_min_port=30000
pasv_max_port=31000
接下来,咱们将仅容许在 /etc/vsftpd/user_list 中定义的用户拜访服务器,请设置如下行
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
保留文件并重启 vsftpd 服务
$ sudo systemctl restart vsftpd
通过运行 ftp 命令测试 FTP 连通性
$ ftp ip-address
输出 ftp 用户名,而后提供明码,您应该失去如下所示的输入。
4) 配置 SSL / TLS 证书
为了加密服务器和客户端零碎之间的通信,咱们须要生成一个 TLS 证书,而后配置服务器应用它。
运行上面的命令,生成证书
$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
随后会呈现一系列提醒,要求您提供一些详细信息,例如国家名称、州或省以及组织名称。
返回到配置文件 /etc/vsftpd/vsftpd.conf,指定证书文件的门路。
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd.pem
而后,批示服务器关上 SSL
ssl_enable=YES
保留文件,重启 vsftpd 服务
$ sudo systemctl restart vsftpd
5) 防火墙中放行 FTP 端口
如果您正在运行防火墙,则须要容许以下端口
- 20 – to allow FTP traffic
- 21 – FTP data port
- 30000-31000 – To allow passive communication with the FTP server.
运行如下命令,放行端口
$ sudo firewall-cmd --permanent --add-port=20-21/tcp
$ sudo firewall-cmd --permanent --add-port=30000-31000/tcp
从新加载防火墙
$ sudo firewall-cmd --reload
6) 测试 FTP
所有设置实现后,是时候测试咱们的连贯了。在本例中,咱们应用一个名为 FileZilla 的 FTP 客户端,它是客户端和服务器零碎的收费 FTP 客户端,它反对一般 FTP 和 TLS 之上的 FTP。
启动后,界面如下所示。提供主机的 IP 地址,FTP 用户名和明码,而后点击 Quickconnect 按钮。
不久之后,弹出窗口将显示 FTP 服务器的证书和会话详细信息。要持续连贯,请单击“Always trust this certificate in future session”,而后按 enter 键。
在右下窗格中,近程服务器的主目录如所示。当初你能够上传、下载和编辑文件了。
我的开源我的项目
- course-tencent-cloud(酷瓜云课堂 – gitee 仓库)
- course-tencent-cloud(酷瓜云课堂 – github 仓库)