如何在 Ubuntu 中使用 TLS 配置 FTP如何在 Ubuntu 中使用 TLS 配置 FTP如何在 Ubuntu 中使用 TLS 配置 FTP如何在 Ubuntu 中使用 TLS 配置 FTP
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 Ubuntu 中使用 TLS 配置 FTP

发表 admin at 2025年2月28日
类别
  • 未分类
标签

FTP(文件传输协议)主要用于在计算机之间传输文件。 FTP 采用客户端-服务器架构,客户端向服务器请求文件,服务器将所需文件返回给客户端。在客户端计算机上,FTP 客户端应用程序用于与服务器进行通信。也可以通过浏览器访问FTP服务器。默认情况下,FTP 通过不安全通道进行通信,但可以将 FTP 配置为通过安全通道传输数据。在本教程中,您将学习如何使用 TLS 配置 FTP 服务器,然后使用 FileZilla 作为客户端应用程序来连接 FTP 服务器。

安装 VSFTPD

VSFTPD(Very Secure FTP Daemon)是一个用于在服务器上配置 FTP 的软件程序。在本教程中,VSFTPD 将用于在计算机上配置 FTP 服务器。在安装 VSFTPD 之前,请通过发出以下命令更新服务器中的存储库。

ubuntu@ubuntu:~$ sudo apt-get update -y

接下来,使用以下命令安装 VSFTPD。

ubuntu@ubuntu:~$ sudo apt-get install vsftpd -y

最后,使用以下命令检查 vsftpd 的版本来验证安装。

ubuntu@ubuntu:~$ vsftpd -v

如果安装成功,上述命令将输出vsftpd的版本。

主动模式下的 FTP

在主动模式下,FTP 客户端通过建立从客户端计算机上的任意随机端口到服务器端口 21 的 TCP 控制连接来启动会话。然后,客户端开始在随机端口 X 上侦听数据连接,并通过 TCP 控制连接通知服务器客户端正在等待端口 X 上的数据连接。此后,服务器从其端口 20 建立数据连接到客户端计算机上的端口 X。

当客户端位于防火墙后面并且端口 X 被阻止时,可能会出现问题。在这种情况下,服务器无法与客户端建立数据连接。为了避免这个问题,FTP服务器大多采用被动模式,我们将在本文后面讨论。默认情况下,VSFTPD 使用被动模式,因此我们必须将其更改为主动模式。

首先,打开VSFTPD配置文件。

ubuntu@ubuntu:~$ sudo nano /etc/vsftpd.conf

将以下行添加到文件末尾。

pasv_enable=NO

另外,请确保“connect_from_port_20”选项设置为“YES”。此选项可确保在服务器的端口 20 上建立数据连接。

接下来,创建 FTP 服务器用于存储文件的目录。在本教程中,我们将配置“/home/ubuntu/ftp/”作为 FTP 服务器的根路径。

ubuntu@ubuntu:~$ sudo mkdir /home/ubuntu/ftp

现在,通过更改“local_root”选项在配置文件中指定此目录。以下参数将配置服务器的根路径。

local_root=/home/ubuntu/ftp

必须启用“write_enable”选项才能允许用户写入 FTP 服务器。

每次更改配置文件后,请务必重新启动服务器。

ubuntu@ubuntu:~$ sudo systemctl restart vsftpd

为用户设置密码

FTP 客户端使用用户名和密码与服务器连接。使用以下命令在计算机上设置用户的密码。

ubuntu@ubuntu:~$ sudo passwd ubuntu

上述命令将询问“ubuntu”用户的密码。

配置主动模式的防火墙

如果FTP使用在主动模式下,FTP服务器将使用两个端口与客户端通信,端口21和22。端口21用于向客户端传递命令,端口20用于向客户端的任意端口传输数据。客户端。我们将使用 ufw 在服务器上配置防火墙。使用以下命令安装 ufw。

ubuntu@ubuntu:~$ sudo apt-get install ufw

现在,在服务器端,我们将打开端口 20、21 和 22(用于 SSH 连接)。

ubuntu@ubuntu:~$ sudo ufw allow from any to any port  proto tcp

使用以下命令启用并检查 ufw 的状态。

ubuntu@ubuntu:~$ sudo ufw enable

ubuntu@ubuntu:~$ sudo ufw status

注意:如果您在云端配置 FTP 服务器,则还需要在安全组中允许端口 20、21 和 22。

警告:在远程系统上启用 ufw 之前,始终启用端口 22 以及所需的端口。默认情况下,UFW 会阻止来自端口 22 的流量,因此,如果您启用 ufw 而不允许来自端口 22 的流量,您将无法使用 SSH 访问远程服务器。

安装FTP客户端

现在,我们的服务器已配置为主动模式,我们可以从客户端访问它。对于客户端应用程序,我们将使用 FileZilla,一个 ftp 客户端应用程序。使用以下命令安装 FileZilla。

ubuntu@ubuntu:~$ sudo apt-get install filezilla -y

打开 FTP 客户端应用程序并输入 FTP 服务器的公共 IP 地址和其他凭据。

当您单击“Quickconnect”时,您将连接到 FTP 服务器并自动转到“/home/ubuntu/ftp”配置文件中“local_root”选项指定的目录。

主动模式下的问题

当客户端位于防火墙后面时,在主动模式下使用 FTP 会引发问题。输入初始控制命令后,当服务器在随机端口上与客户端建立数据连接时,该端口可能会被客户端上的防火墙阻止,导致数据传输失败。 FTP 可以在被动模式下使用来解决这些防火墙问题。

被动模式下的 FTP

在被动模式下,客户端在服务器的21端口上与服务器建立控制连接。然后,客户端发送特殊的“PASV”命令,通知服务器数据连接将由客户端而不是服务器建立。作为响应,客户端收到服务器 IP 和随机端口号(该端口号将在服务器上配置)。客户端使用此 IP 和端口号与服务器创建数据连接。在被动模式下,数据连接和控制连接均由客户端建立,因此防火墙不会干扰客户端与服务器之间的通信。

在您喜欢的编辑器中打开 FTP 配置文件。

ubuntu@ubuntu:~$ sudo nano /etc/vsftpd.conf

将文件中的“pasv_enable”选项设置为“YES”,以便服务器可以以被动模式与客户端通信。另外,设置“local_root”选项以指定服务器的根目录,并将“write_enable”选项设置为“YES”以允许用户将文件上传到服务器。

如前所述,数据连接由客户端建立,服务器将其公共IP和随机端口发送给客户端以创建数据连接。服务器上的这个随机端口可以从配置文件中的一系列端口中指定。

服务器和客户端之间的数据连接将在1024和1048之间的端口上建立。更改配置文件后重新启动FTP服务器。

ubuntu@ubuntu:~$ sudo systemctl restart vsftpd

配置被动模式防火墙

如果我们在被动模式下使用FTP,数据连接将通过1024到1048之间的任何端口建立,因此有必要在FTP服务器上允许所有这些端口。

ubuntu@ubuntu:~$ sudo ufw allow from any to any port  proto tcp

允许防火墙上的所有端口后,通过运行以下命令激活 ufw。

ubuntu@ubuntu:~$ sudo ufw enable

在启用防火墙之前始终允许服务器上的端口;否则,您将无法通过 SSH 作为 ufw 访问您的服务器,默认情况下,它会阻止端口 22。

测试连接

现在,我们已经将 FTP 服务器设置为被动模式,并且可以检查与客户端应用程序的 ftp 连接。为此,请在系统中打开 FileZilla。

输入主机、用户名、密码和端口后,现在您可以连接您的服务器。现在您已连接到以被动模式运行的 FTP 服务器,您可以将文件上传到服务器。

使用 FTP 服务器配置 SSL 证书

默认情况下,FTP 服务器通过不安全的通道在客户端和服务器之间建立连接。如果您希望在客户端和服务器之间共享敏感数据,则不应使用这种类型的通信。要通过安全通道进行通信,必须使用 SSL 证书。

生成 SSL 证书

我们将使用 SSL 证书在客户端和服务器之间建立安全通信。我们将使用 openssl 生成这些证书。以下命令将为您的服务器生成 SSL 证书。

ubuntu@ubuntu:~$ sudo openssl req -x509 -nodes -day 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

当您运行上述命令时,系统会询问您一些问题。回答这些问题后,将生成证书。您可以在终端中检查证书。

ubuntu@ubuntu:~$ sudo ls /etc/ssl/private/

在配置文件中使用证书

现在,我们的证书就可以使用了。我们将配置“vsftpd.conf”文件以使用 SSL 证书进行通信。使用以下命令打开配置文件。

ubuntu@ubuntu:~$ sudo nano /etc/vsftpd.conf

将以下行添加到文件末尾。这些更改将确保 FTP 服务器使用新生成的 SSL 证书与客户端安全通信。

ssl_enable=YES
force_local_data_ssl=NO
force_local_logins_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

重新启动 FTP 服务器以应用这些更改。

ubuntu@ubuntu:~$ sudo systemctl restart vsftpd

重新启动服务器后,尝试使用 FileZilla 客户端应用程序连接服务器。这次,客户端应用程序将询问您是否信任这些证书。

如果您拥有来自受信任证书颁发机构的证书,则不应出现此警告。我们使用 openssl 生成证书,它不是受信任的证书颁发机构,这就是它在我们的案例中要求证书身份验证的原因。现在,我们可以通过安全通道在客户端和服务器之间进行通信。

匿名配置

您还可以在 FTP 服务器上启用匿名登录。启用此配置后,任何用户都可以使用任何用户名和密码登录 FTP 服务器。配置文件中的以下参数将使 FTP 服务器可以匿名访问。

上述配置将匿名用户的根路径设置为“/home/ubuntu/ftp/anon”,匿名用户登录时不会提示输入密码。

注意:确保 FTP 服务器上存在“/home/ubuntu/ftp/anon”路径。

现在,重新启动 FTP 服务器。

ubuntu@ubuntu:~$ sudo systemctl restart vsftpd

重新启动服务器后,我们将尝试通过 Google Chrome 浏览器连接到服务器。转到以下 URL。

ftp://3.8.12.52

上面的 URL 将带您到配置文件中指定的 FTP 服务器的根目录。禁用匿名登录后,当您尝试使用浏览器连接到 FTP 服务器时,系统将首先要求您进行身份验证,然后您将被带到服务器的根目录。

配置本地访问

我们还可以通过更改配置文件来允许或阻止对 FTP 服务器的本地访问。目前,我们可以在不使用 FTP 客户端应用程序的情况下在本地访问 FTP 服务器,但我们可以阻止此访问。为此,我们必须修改“local_enable”参数。

首先,重新启动 FTP 服务器。

ubuntu@ubuntu:~$ sudo systemctl restart vsftpd

重新启动服务器后,尝试使用命令行界面在本地访问FTP服务器。使用 SSH 登录远程服务器。

ubuntu@ubuntu:~$ ssh ubuntu@3.8.12.52 -i

现在,发出以下命令以使用命令行界面本地登录 FTP 服务器。

ubuntu@ubuntu:~$ ftp localhost

当你运行上面的命令时,它会抛出 500 错误。

结论

文件传输协议多年来一直用于通过 Internet 传输文件和文档。 VSFTPD 是在您的计算机上用作 FTP 服务器的软件包之一。 VSFTPD 包含可用于自定义 FTP 服务器的各种配置。本教程向您展示了如何使用 TLS 配置 FTP 服务器以增强安全性。要了解有关 FTP 配置的更多信息,请访问以下链接。

©2015-2025 Norria support@norria.com