FTP或文件传输协议是一种非常古老的众所周知的协议,用于在客户端和服务器之间传输文件。仅在不使用TLS的情况下,它也是不安全的协议。在本教程中,我们将为TLS配置vsftpd,这使我们能够安全地使用FTP。目前,FTP通常已被更安全的协议(例如SFTP或SCP)取代。
但是,如果您需要在服务器上使用FTP,则vsftpd(非常安全的FTP守护程序)是一个理想的选择。
在本教程中,我们将学习如何在基于Ubuntu 20.04的服务器上使用vsftpd安装和配置FTP服务器。我们还将学习如何使用SSL / TLS协议保护连接的安全。
步骤1-安装vsftpd
第一步是安装vsftpd。
$ sudo apt update
$ sudo apt install vsftpd
接下来,我们需要备份原始配置文件,以便我们可以从全新的配置开始。
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
第2步-配置防火墙
在此步骤中,我们将配置UFW防火墙以允许访问FTP端口。
首先,让我们检查防火墙的状态。
$ sudo ufw status
Status: active
To Action From
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
尽我们所能,到目前为止,仅允许使用SSH端口。让我们在使用TLS时打开端口20(FTP命令端口),21(FTP数据端口),990,并在将来可能需要的被动端口范围内打开端口35000-40000。
$ sudo ufw allow 20:21/tcp
$ sudo ufw allow 990/tcp
$ sudo ufw allow 35000:40000/tcp
$ sudo ufw status
Status: active
To Action From
OpenSSH ALLOW Anywhere
990/tcp ALLOW Anywhere
20:21/tcp ALLOW Anywhere
35000:40000/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
20:21/tcp (v6) ALLOW Anywhere (v6)
990/tcp (v6) ALLOW Anywhere (v6)
35000:40000/tcp (v6) ALLOW Anywhere (v6)
第3步-配置vsftpd
现在,我们将讨论一些重要设置,以使vsftpd正常工作。
首先打开配置文件
$ sudo nano /etc/vsftpd.conf
-
FTP访问
在本教程中,我们将仅允许本地用户进行FTP访问,并禁用任何匿名访问。为此,请确保存在以下几行,如下所示。
anonymous_enable=NO
local_enable=YES
2.启用文件上传
FTP在这里最重要的目的是能够写入服务器。取消注释以下行以通过删除文件前面的#来启用文件上传
write_enable=YES
3.Chroot监狱
当用户限制在某个目录中时,FTP效果最好。 vsftpd通过使用chroot jail来实现。为本地用户启用chroot时,默认情况下将它们限制在其主目录中。为此,请取消注释以下行。
chroot_local_user=YES
为了防止出现任何安全漏洞,只要将目录用户限制为可写的,则chroot启用时将不起作用。
为了解决这个限制,启用chroot时,我们有两种方法允许文件上传。
方法1-此方法通过使用其他目录进行FTP上传来起作用。在本教程中,我们将在用户家中创建一个ftp目录以用作chroot,并在其上创建第二个可写目录以上传文件。为此,请在文件底部添加以下几行。
user_sub_token=