如何在 Ubuntu 18.04 上使用 VSFTPD 设置 FTP 服务器

FTP(文件传输协议)是一种标准 络协议,用于在远程 络之间传输文件。

有许多可用于 Linux 的开源 FTP 服务器。最流行和使用最广泛的是PureFTPd 、ProFTPD 和vsftpd 。在本教程中,我们将安装 vsftpd(非常安全的 Ftp 守护程序)。它是一个稳定、安全、快速的 FTP 服务器。我们还将向您展示如何配置 vsftpd 以将用户限制在他们的主目录中并使用 SSL/TLS 加密整个传输。

尽管本教程是为 Ubuntu 18.04 编写的,但相同的说明适用于 Ubuntu 16.04 和任何基于 Debian 的发行版,包括 Debian、Linux Mint 和 Elementary OS。

要获得更安全和更快的数据传输,请使用SCP 或SFTP 。

1、先决条件

在继续本教程之前,请确保您以具有 sudo 权限的用户身份登录 。

2、在 Ubuntu 18.04 上安装 vsftpd

vsftpd 软件包在 Ubuntu 存储库中可用。要安装它,只需运行以下命令:

sudo apt update

sudo apt install vsftpd

vsftpd 服务将在安装过程完成后自动启动。通过打印服务状态来验证它:

执行命令:sudo systemctl status vsftpd

输出将如下所示,表明 vsftpd 服务处于活动状态并正在运行:

3、配置 vsftpd

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

首先打开 vsftpd 配置文件:

3.1 FTP访问

我们将只允许本地用户访问 FTP 服务器,找到anonymous_enable和local_enable指令并验证您的配置是否与以下行匹配:

anonymous_enable=NO

local_enable=YES

3.2 启用上传

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

write_enable=YES

3.3 Chroot监狱

要防止 FTP 用户访问其主目录之外的任何文件,请取消注释该chroot设置。

chroot_local_user=YES

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

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

方法 1. – 允许上传的推荐方法是保持 chroot 启用,并配置 FTP 目录。在本教程中,我们将在用户主目录中创建一个ftp目录,该目录将用作 chroot 和一个uploads用于上传文件的可写目录。

user_sub_token=$USER

local_root=/home/$USER/ftp

方法 2. – 另一种选择是在 vsftpd 配置文件中添加以下指令。如果您必须授予用户对其主目录的可写访问权限,请使用此选项。

allow_writeable_chroot=YES

3.4 被动 FTP 连接

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

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

pasv_min_port=30000

pasv_max_port=31000

3.5.限制用户登录

要仅允许某些用户登录 FTP 服务器,请在文件末尾添加以下行:

userlist_enable=YES

userlist_file=/etc/vsftpd.user_list

userlist_deny=NO

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

3.6 使用 SSL/TLS 保护传输

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

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

如果您有一个指向 FTP 服务器 IP 地址的域或子域,您可以轻松生成免费的 Let’s Encrypt SSL 证书。

我们将使用该命令生成自签名 SSL 证书。openssl

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

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

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

sudo nano /etc/vsftpd.conf

找到
rsa_cert_fileandrsa_private_key_file指令,将它们的值更改为pam文件路径并将ssl_enable指令设置为YES:

rsa_cert_file=/etc/ssl/private/vsftpd.pem

rsa_private_key_file=/etc/ssl/private/vsftpd.pem

ssl_enable=YES

如果没有另外指定,FTP 服务器将只使用 TLS 来建立安全连接。

4、重启 vsftpd 服务

listen=NO

listen_ipv6=YES

anonymous_enable=NO

local_enable=YES

write_enable=YES

dirmessage_enable=YES

use_localtime=YES

xferlog_enable=YES

connect_from_port_20=YES

chroot_local_user=YES

secure_chroot_dir=/var/run/vsftpd/empty

pam_service_name=vsftpd

rsa_cert_file=/etc/ssl/private/vsftpd.pem

rsa_private_key_file=/etc/ssl/private/vsftpd.pem

ssl_enable=YES

user_sub_token=$USER

local_root=/home/$USER/ftp

pasv_min_port=30000

pasv_max_port=31000

userlist_enable=YES

userlist_file=/etc/vsftpd.user_list

userlist_deny=NO

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

执行命令:sudo systemctl restart vsftpd

5、打开防火墙

如果您正在运行UFW 防火墙,则 需要允许 FTP 流量。

要打开端口21(FTP 命令端口)、端口20(FTP 数据端口)和30000-31000(被动端口范围),请运行以下命令:

sudo ufw allow 20:21/tcp

sudo ufw allow 30000:31000/tcp

为避免被锁定,请打开端口22:

通过禁用和重新启用 UFW 重新加载 UFW 规则:

sudo ufw disable

sudo ufw enable

要验证更改运行:

sudo ufw status

6、创建 FTP 用户

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

如果您已经有一个要授予 FTP 访问权限的用户,请跳过第一步。

如果您allow_writeable_chroot=YES在配置文件中设置,请跳过第 3 步。

6.1 创建一个名为的新用户newftpuser:

执行命令:sudo adduser newftpuser

6.2 将用户添加到允许的 FTP 用户列表:

执行命令:echo “newftpuser” | sudo tee -a /etc/vsftpd.user_list

6.3创建 FTP 目录树并设置正确的权限 :

执行命令1:sudo mkdir -p
/home/newftpuser/ftp/upload

执行命令2:sudo chmod 550 /home/newftpuser/ftp

执行命令3:sudo chmod 750
/home/newftpuser/ftp/upload

执行命令4:sudo chown -R newftpuser: /home/newftpuser/ftp

如上一节所述,用户将能够将其文件上传到ftp/upload目录。

此时,您的 FTP 服务器功能齐全,您应该能够使用任何可以配置为使用 TLS 加密的 FTP 客户端(例如FileZilla )连接到您的服务器 。

7、禁用外壳访问

默认情况下,创建用户时,如果未明确指定,用户将拥有对服务器的 SSH 访问权限。

要禁用 shell 访问,我们将创建一个新的 shell,它会简单地打印一条消息,告诉用户他们的帐户仅限于 FTP 访问。

创建/bin/ftponly外壳并使其可执行:

执行命令1:echo -e ‘#!/bin/shnecho “This account is limited to FTP access only.”‘ | sudo tee -a /bin/ftponly

执行命令2:sudo chmod a+x /bin/ftponly

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

执行命令:echo “/bin/ftponly” | sudo tee -a /etc/shells

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

执行命令:sudo usermod newftpuser -s /bin/ftponly

使用相同的命令更改您只想授予 FTP 访问权限的所有用户的 shell。

8、结论

在本教程中,您学习了如何在 Ubuntu 18.04 系统上安装和配置安全快速的 FTP 服务器。

如果您有任何问题或反馈,请随时发表评论。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月26日
下一篇 2022年4月26日

相关推荐