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
- 创建名为 的新用户:newftpusersudo adduser newftpuser接下来,您需要设置用户密码:sudo passwd newftpuser
- 将用户添加到允许的 FTP 用户列表:echo “newftpuser” | sudo tee -a /etc/vsftpd/user_list
- 创建 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