如何在 CentOS 8 上使用 VSFTPD 设置 FTP 服务器

TP(文件传输协议)是一种客户端-服务器网络协议,允许用户在远程计算机上传输文件。

有许多开源的FTP服务器可用于Linux。最流行的和常用的服务器是PureFTPD ,ProFTPD和vsftpd 。

在本教程中,我们将在 CentOS 8 上安装 vsftpd(非常安全的 Ftp 守护程序)。它是一个稳定、安全和快速的 FTP 服务器。我们还将向您展示如何配置 vsftpd 已将用户限制为其主目录,并使用 SSL/TLS 加密数据传输。

在 Centos 8 上安装 vsftpd

vsftpd 包在默认 CentOS 存储库中可用。若要安装它,请以 root 或用户为sudo 权限运行以下命令:

sudo dnf install vsftpd

安装包后,启动 vsftpd 守护程序,并使其在启动时自动启动:

sudo systemctl enable vsftpd --now

验证服务状态:

sudo systemctl status vsftpd

输出将类似,显示 vsftpd 服务处于活动状态并运行:

● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-03-30 15:16:51 EDT; 10s ago
  Process: 2880 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
  ...

配置 vsftpd

vsftpd 服务器设置存储在配置文件中。大多数设置在文件中都记录得很好。有关所有可用选项,请访问官方 vsftpd页面。/etc/vsftpd/vsftpd.conf

在以下部分中,我们将介绍配置安全 vsftpd 安装所需的一些重要设置。

首先打开 vsftpd 配置文件:

sudo nano /etc/vsftpd/vsftpd.conf

1. FTP 访问

我们将仅允许访问 FTP 服务器本地用户,查找 和 指令,并确保您的配置与以下行匹配:anonymous_enablelocal_enable

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES

2. 启用上传

取消注释以允许更改文件系统,如上载和删除文件。write_enable

/etc/vsftpd/vsftpd.conf

write_enable=YES

3. 奇鲁特监狱

通过取消注释,防止 FTP 用户访问其主目录以外的任何文件。chroot

/etc/vsftpd/vsftpd.conf

chroot_local_user=YES

 

默认情况下,启用 chroot 时,如果用户锁定的目录可写入,则 vsftpd 将拒绝上载文件。这是为了防止安全漏洞。

在启用 chroot 时,请使用以下方法之一允许上载。

  • 方法 1.– 建议允许上传的方法是保持 chroot 启用并配置 FTP 目录。在本教程中,我们将在用户主页内创建一个目录,该目录将作为 chroot 和用于上载文件的可写目录。ftpuploads/etc/vsftpd/vsftpd.confuser_sub_token=$USER local_root=/home/$USER/ftp
  • 方法 2.– 另一个选项是在 vsftpd 配置文件中添加以下指令。如果必须向用户授予可写访问其主目录的访问权限,请使用此选项。/etc/vsftpd/vsftpd.confallow_writeable_chroot=YES

4. 婺源 FTP 连接

vsftpd 可以使用任何端口进行无源 FTP 连接。我们将指定端口的最小和最大范围,并在防火墙中打开范围。

 

将以下行添加到配置文件中:

/etc/vsftpd/vsftpd.conf

pasv_min_port=30000
pasv_max_port=31000

5. 限制用户登录

若要仅允许某些用户登录到 FTP 服务器,请添加行后以下行:userlist_enable=YES

/etc/vsftpd/vsftpd.conf

userlist_file=/etc/vsftpd/user_list
userlist_deny=NO

启用此选项后,您需要通过将用户名添加到文件中(每行一个用户)来显式指定哪些用户能够登录。/etc/vsftpd/user_list

6. 使用 SSL/TLS 固定变速箱

为了使用 SSL/TLS 加密 FTP 传输,您需要拥有 SSL 证书并配置 FTP 服务器以使用它。

您可以使用由受信任的证书颁发机构签名的现有 SSL 证书,或创建自签名证书。

如果您有指向 FTP 服务器 IP 地址地域或子域,可以轻松地生成免费的”让我们加密 SSL 证书”。

在本教程中,我们将使用该工具生成自签名的 SSL证书。openssl

以下命令将创建 2048 位私钥和自签名证书,有效期为 10 年。私钥和证书都将保存在同一个文件中:

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

创建 SSL 证书后,打开 vsftpd 配置文件:

sudo nano /etc/vsftpd/vsftpd.conf

查找 和 指令,将它们的值更改为文件路径,然后将指令设置为 :rsa_cert_filersa_private_key_filepamssl_enableYES

/etc/vsftpd/vsftpd.conf

rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

如果未指定,FTP 服务器将仅使用 TLS 进行安全连接。

重新启动 vsftpd 服务

完成编辑后,vsftpd 配置文件(不包括注释)应类似:

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

保存文件并重新启动 vsftpd 服务以使更改生效:

sudo systemctl restart vsftpd

打开防火墙

如何配置和管理防火墙在 centos-8 如果您正在运行 一个,您需要允许 FTP 流量。

要打开端口(FTP 命令端口)、端口(FTP 数据端口)和(被动端口范围),请输入以下命令:212030000-31000

sudo firewall-cmd --permanent --add-port=20-21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp

通过键入: 重新加载防火墙规则:

firewall-cmd --reload

创建 FTP 用户

为了测试 FTP 服务器,我们将创建一个新用户。

  • 如果您已经有一个要授予 FTP 访问权限的用户,请跳过第一步。
  • 如果在配置文件中设置,请跳过第三步。allow_writeable_chroot=YES
  1. 创建名为 的新用户:newftpusersudo adduser newftpuser接下来,您需要设置用户密码:sudo passwd newftpuser
  2. 将用户添加到允许的 FTP 用户列表:echo “newftpuser” | sudo tee -a /etc/vsftpd/user_list
  3. 创建 FTP 目录树并设置正确的权限:sudo mkdir -p /home/newftpuser/ftp/upload
    sudo chmod 550 /home/newftpuser/ftp
    sudo chmod 750 /home/newftpuser/ftp/upload
    sudo chown -R newftpuser: /home/newftpuser/ftp如上一节所述,用户将能够将其文件上载到目录。ftp/upload

此时,您的 FTP 服务器已完全正常运行,您应该能够使用任何可配置为使用 TLS 加密(如FileZilla)的 FTP 客户端连接到服务器。

禁用外壳访问

默认情况下,在创建用户时(如果未显式指定)用户将具有对服务器的 SSH 访问权限。

要禁用 shell 访问,我们将创建一个新 shell,该 shell 将仅打印一条消息,告诉用户其账户仅限于 FTP 访问。

运行以下命令以创建 shell 并使其可执行:/bin/ftponly

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a  /bin/ftponly
sudo chmod a+x /bin/ftponly

将新 shell 追加到文件中的有效 shell 列表中:/etc/shells

echo "/bin/ftponly" | sudo tee -a /etc/shells

将用户外壳更改为 :/bin/ftponly

sudo usermod newftpuser -s /bin/ftponly

使用相同的命令更改要仅向 FTP 访问了其他用户的 shell。

原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun35788.html

(0)
打赏 微信扫一扫不于多少! 微信扫一扫不于多少! 支付宝扫一扫礼轻情意重 支付宝扫一扫礼轻情意重
上一篇 2021年2月4日
下一篇 2021年2月4日

相关推荐