install-vsftp-on-centos-rhel

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

dnf-install-vsftpd-centos8

y 并按 ENTER 开始安装,下面的输出确认 vsftpd 已经成功安装。

Successfully-installed-vsftpd-centos8

查看 vsftpd 版本

[linuxtechi@centos8-vsftpd ~]$ rpm -q vsftpd
vsftpd-3.0.3-31.el8.x86_64
[linuxtechi@centos8-vsftpd ~]$

输出结果应与终端上打印的版本一致。要获取 vsftpd 的更详细信息,可以在末尾添加 -i 标志,如下所示

$ rpm -qi vsftpd

rpm-qi-vsftpd-centos8

启动 vsftpd 服务

$ sudo systemctl start vsftpd

设置开机自启动 vsftpd 服务

$ sudo systemctl enable vsftpd --now

查看 vsftpd 服务状态

$ sudo systemctl status vsftpd

vsftpd-service-status-centos8

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 用户名,然后提供密码,您应该得到如下所示的输出。

ftp-command-linux

4) 配置 SSL / TLS 证书

为了加密服务器和客户端系统之间的通信,我们需要生成一个 TLS 证书,然后配置服务器使用它。

运行下面的命令,生成证书

$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

随后会出现一系列提示,要求您提供一些详细信息,例如国家名称、州或省以及组织名称。

SSL-Certs-vsftpd-CentOS8

返回到配置文件 /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 --relo­ad

6) 测试 FTP

所有设置完成后,是时候测试我们的连接了。在本例中,我们使用一个名为 FileZilla 的 FTP 客户端,它是客户端和服务器系统的免费 FTP 客户端,它支持普通 FTP 和 TLS 之上的 FTP。

启动后,界面如下所示。提供主机的 IP 地址,FTP 用户名和密码,然后点击 Quickconnect 按钮。

Connect-ftpserver-filezilla

不久之后,弹出窗口将显示 FTP 服务器的证书和会话详细信息。要继续连接,请单击“Always trust this certificate in future session”,然后按 enter 键。

SSL-Certs-vsftpd-filezilla

在右下窗格中,远程服务器的主目录如所示。现在你可以上传、下载和编辑文件了。

Access-ftp-server-filezilla

我的开源项目

酷瓜云课堂-开源知识付费解决方案


鸠摩智首席音效师
472 声望9 粉丝

身强体健,龙精虎猛的活着。


引用和评论

0 条评论