如何在 CentOS 8 上使用 VSFTPD 设置 FTP 服务器
admin
2023-08-03 05:36:40
0

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。

相关内容

热门资讯

Windows 11 和 10... Windows 11/10 文件夹属性中缺少共享选项卡 – 已修复 1.检查共享选项卡是否可用 右键...
Radmin VPN Wind... Radmin VPN 是一款免费且用户友好的软件,旨在牢固地连接计算机以创建一个有凝聚力的虚拟专用网...
如何修复 Steam 内容文件... Steam 内容文件锁定是当您的 Steam 文件无法自行更新时出现的错误。解决此问题的最有效方法之...
在 Windows 11 中打... 什么是链路状态电源管理? 您可以在系统控制面板的电源选项中看到链接状态电源管理。它是 PCI Exp...
iPhone 屏幕上有亮绿色斑... iPhone 是市场上最稳定的智能手机之一,这主要归功于专为它们设计的 iOS 操作系统。然而,他们...
事件 ID 7034:如何通过... 点击进入:ChatGPT工具插件导航大全 服务控制管理器 (SCM) 负责管理系统上运行的服务的活动...
QQ浏览器怎么制作简历 QQ浏览器是腾讯公司开发的一款极速浏览器,支持电脑,安卓,苹果等多种终端;更快的浏览体验,更安全的浏...
Hive OS LOLMine... 目前不清退的交易所推荐: 1、全球第二大交易所OKX欧意 国区邀请链接: https://www.m...
Apple Watch Ult... 所有运行 watchOS 7 或更高版本的 Apple Watch 型号都包含一项名为“优化电池充电...
统信UOS每次开机后不直接进入... 统信UOS每次开机后不直接进入系统而是进入到recovery模式 按方向上键选择UOS 20 SP1...