FTP是文件传输协议的缩写,是一种提供对驻留在服务器上的文件的访问的协议。它是使用户能够通过 Internet 下载文件的最早协议之一。通过 FTP 协议,用户可以轻松地在服务器上下载和上传文件。
Vsftpd是Very Secure FTP daemon 的缩写,是一个安全的 FTP 守护进程,是 FTP 协议的升级版。它通过加密发送到服务器和从服务器发送的流量来强制安全连接到 FTP 服务器,并且通过这样做,文件传输是安全的,不会受到黑客的攻击。
在本主题中,我们将重点介绍在 CentOS 8 / RHEL 8 上安装 vsftpd。
步骤 1) 使用 dnf 命令安装 vsftpd
马上,我们将安装 vsftpd。为此,我们将运行以下命令:
sudo dnf install vsftpd
按“ y ”并按 ENTER 开始安装。安装需要几秒钟,很快就会完成。下面的输出确认 vsftpd 已成功安装。
输出表明我们已经安装了vsftpd版本3.0.3-31.el8.x86_64。要确认这一点,请执行以下命令
[ linuxtechi@centos8-vsftpd ~]$ rpm -q vsftpd vsftpd-3.0.3-31.el8.x86_64 [ linuxtechi@centos8-vsftpd ~]$
成功安装后,输出应与终端上打印的版本相符。要检索有关 Vsftpd 的更多详细信息,请在末尾附加 -i 标志,如下所示:
rpm -qi vsftpd
这将在屏幕上打印附加信息,例如架构、安装日期、许可证和签名等。
安装 vsftpd 后,我们需要运行它以方便访问文件共享。
要启动 vsftpd 服务,请运行以下命令:
sudo systemctl start vsftpd
您可能还希望使其在重新启动时自动启动。为此,请运行命令
sudo systemctl start vsftpd
要验证系统上 vsftpd 的状态,请运行:
sudo systemctl status vsftpd
如果您在终端上看到绿色的“ active: (running) ”指令,则 vsftpd 服务已启动并正在运行。
步骤 2) 创建 ftp 用户及其目录
接下来,我们将创建一个用于访问 FTP 服务器的用户。在这种情况下,用户将是 ftpuser 但您可以随意为您的用户指定一个您选择的名称。
$ 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 已启动并正在运行。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 ip
指定 ftp 用户的用户名,然后提供密码。您应该得到如图所示的输出。
如果连接时报错,有可能是阿里云的21端口没打开
虽然我们已经建立了到 vsftpd 服务器的连接。连接不安全,发送的信息是纯文本的,没有加密。因此,我们需要采取额外的步骤来加密发送到服务器的通信。
步骤 4)为 vsftpd 配置 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 服务器 (vsftpd) 端口
如果您正在运行防火墙,则需要允许这些显着端口”
- 20 – 允许 FTP 流量
- 21 – FTP 数据端口
- 30000-31000 – 允许与 FTP 服务器进行被动通信。
因此,运行以下命令:
$ sudo firewall-cmd --permanent --add-port=20-21/tcp $ sudo firewall-cmd --permanent --add-port=30000-31000/tcp
然后重新加载防火墙以使更改生效。
$ sudo firewall-cmd --reload
步骤 6) 测试您的 vsftpd 或 FTP 服务器
完成所有设置后,是时候测试我们的连接性了。在这个例子中,我们使用了一个名为FileZilla的 FTP 客户端,它是一个免费的 FTP 客户端,用于客户端和服务器系统。它支持普通 FTP 和 FTP over TLS,这是我们将要测试的。
启动后,界面如图所示。提供主机的 IP 地址 (vsftpd)、ftp 用户的用户名和密码,然后单击“快速连接”按钮。
不久之后,将出现一个弹出窗口,显示 FTP 服务器的证书和会话详细信息。要继续连接,请单击“在以后的会话中始终信任此证书”,然后按 Enter。
如果您的所有配置都正确,您应该可以正常进入,如图所示。在右下窗格中,远程服务器的主目录如图所示。您现在可以上传、下载和编辑您认为合适的文件。
我们关于在 CentOS 8 上安装 vsftpd 的主题到此结束。我们希望您现在可以轻松地设置您自己的 vsftpd(安全 ftp)服务器。请务必在您的技术朋友之间分享,并分享您宝贵的反馈和意见。
参考:https://www.linuxtechi.com/install-vsftpd-server-centos-8-rhel-8/