在 Linux 中安装、配置和保护 FTP 服务器

2023-10-21

FTP或文件传输协议是计算机之间传输文件的常用协议;一个充当客户端,另一个充当服务器。在这篇文章中,我们将讨论 Linux 系统中的 FTP 服务器,特别是 Very Secure FTP Daemon (vsftpd)。

vsftpd 程序是当今许多服务器使用的非常流行的 FTP 服务器。

 

 

FTP 服务器如何工作?

FTP服务器采用客户端-服务器架构来通信和传输文件。

FTP 是一种有状态协议,这意味着客户端和服务器之间的连接在 FTP 会话期间保持打开状态。

要从 FTP 服务器发送或接收文件,可以使用 FTP 命令;这些命令是连续执行的。就像一个队列,一个接一个。

您可以启动两种类型的 FTP 连接:

  • 控制连接也称为命令连接。
  • 数据连接。

当您建立 FTP 连接时,TCP 端口 21 将打开以发送您的登录凭据;这个连接称为控制连接.

当您传输文件时,数据连接 starts.

数据连接有两种类型:

  • 被动模式。
  • 主动模式。

活动连接由远程服务器发起,客户端等待服务器请求。

客户端向远程服务器发起被动连接,服务器等待请求。

当 FTP 客户端开始传输时,FTP 客户端上有一个选项可以控制您要使用主动还是被动 FTP 连接。

主动模式

客户端从随机临时源端口连接到FTP控制端口21.

您可以使用以下命令检查临时端口范围:


$ cat /proc/sys/net/ipv4/ip_local_port_range  

当需要传输文件时,远程FTP服务器会打开20端口来连接FTP客户端。

主动模式连接通常会出现防火墙、TCP 问题端口 20 和 21应该在你的防火墙上打开。

由于主动模式防火墙存在这些问题,我们可以使用被动模式。

如果您使用 iptables 防火墙,我建议您查看Linux iptables 防火墙了解如何允许特定端口。

被动模式

被动模式下,客户端从随机端口发起到目的端口的控制连接 21在远程服务器上。

如果FTP客户端请求文件,它将发出PASV FTP命令。服务器将打开一个随机端口并将该端口号提供给客户端。

这就是为什么 FTP 是一个需要大量连接的协议,因为每次建立数据连接(例如传输文件)时,服务器都会执行上述过程,并且这是由连接到服务器的所有客户端完成的。

在被动模式下,控制和数据连接由FTP客户端启动。

 

vsftpd FTP服务器功能

有多种 FTP 服务器可供您使用,包括商业的和开源的。

Vsftpd 具有一些安全功能,使其位居榜首,例如:

  • 可以以普通用户身份运行,并进行权限分离。
  • 支持 SSL/TLS FTP 连接。
  • 可以将用户囚禁到他们的主目录中。

 

FTP 服务器设置

一些 Linux 发行版附带了 vsftpd,无论如何,如果你想在基于 Red Hat 的系统上安装它,你可以使用以下命令:


$ sudo dnf -y vsftpd  

在基于 Debian 的发行版(例如 Ubuntu)上,您可以像这样安装它:


$ sudo apt-get install vsftpd  

安装该软件包后,您可以运行该服务并使其在启动时运行。


$ systemctl start vsftpd
$ systemctl enable vsftpd  

vsftpd FTP服务器的配置文件是


/etc/vsftpd.conf  

.

实际上,Linux 中的 FTP 服务器是您可以使用的最简单的服务器之一。

访问FTP服务器有两种方式:

  • 匿名 FTP 访问:任何人都可以使用匿名用户名登录,无需密码。
  • 本地用户登录:允许 /etc/passwd 上的所有有效用户访问 FTP 服务器。

您可以通过配置允许匿名访问 FTP 服务器,在/etc/vsftpd/vsftpd.conf通过启用匿名_启用=是如果未启用并重新加载您的服务。

现在您可以尝试使用任何 FTP 客户端连接到 FTP 服务器。我将使用简单的 FTP 命令。

如果您的系统上没有它,您可以安装它:


$ dnf -y install ftp  

现在您可以像这样访问您的 FTP 服务器:


$ ftp localhost  

然后输入匿名用户名,无需密码,只需按 Enter 键即可。

您将看到 FTP 提示。


ftp>  

现在,您可以键入任何 FTP 命令来与 FTP 服务器交互。

以本地用户身份连接

由于设置中有一个允许本地用户访问FTP服务器的选项,本地启用=是,现在我们尝试使用本地用户访问FTP服务器:


$ ftp localhost  

然后输入您的本地用户名和该用户的密码,您将看到登录成功消息。

 

将 FTP 服务器设置为仅匿名

如果您的文件无需任何密码或登录即可供用户使用,则这种 FTP 服务器非常有用。

您需要将 vsftpd 配置为仅允许匿名用户。

Open /etc/vsftpd/vsftpd.conf文件,并将以下选项更改为相应的值。


listen=NO
listen_ipv6=NO
anonymous_enable=YES
local_enable=NO
write_enable=NO  

然后我们需要创建一个非特权系统帐户以使用它进行匿名 FTP 类型的访问。


$ useradd -c " FTP User" -d /var/ftp -r -s /sbin/nologin ftp  

该用户在系统上没有任何权限,因此在访问 FTP 服务器时使用它会更安全。

修改配置文件后不要忘记重新启动 FTP 服务器。

您可以从浏览器访问 FTP 服务器,只需输入 ftp://youdomain/。

 

FTP服务器安全

我们可以将 vsftpd 配置为使用 TLS,这样通过网络传输的文件会更安全一些。

首先,我们使用 openssl 命令生成证书请求:


$ openssl genrsa -des3 -out FTP.key  

然后我们生成一个证书请求:


$ openssl req -new -key FTP.key -out certificate.csr  

现在我们从密钥文件中删除密码:


$ cp FTP.key FTP.key.orig

$ openssl rsa -in FTP.key.orig -out ftp.key  

最后,我们生成我们的证书:


$ openssl x509 -req -days 365 -in certificate.csr -signkey ftp.key -out mycertificate.crt  

现在我们将证书文件和密钥复制到 /etc/pki/tls/certs:


$ cp ftp.key /etc/pki/tls/certs/

$ cp mycertificate.crt /etc/pki/tls/certs  

现在,我们需要做的就是配置 vsftpd 以支持安全连接。

Open / 等/vsftpd/vsftpd.conf文件并添加以下行:


ssl_enable=YES
allow_anon_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/pki/tls/certs/mycertificate.crt
rsa_private_key_file=/etc/pki/tls/certs/ftp.key
ssl_ciphers=HIGH
require_ssl_reuse=NO
  

重新启动您的服务以反映这些更改。就是这样。

尝试从任何系统(如 Windows)上的任何客户端连接到 FTP 服务器,并选择安全连接或 FTPS,您将成功看到您的文件夹。

 

SFTP 与 FTPS

在上一个示例中,我们看到了 SSL 层上的 FTP (FTPS),并且我们已成功连接到 FTP 服务器。然而,由于 FTPS 使用多个端口号,因此在严格安全的防火墙下,很难管理这种连接。

在这种情况下,最好的解决方案是使用 SFTP(基于 SSH 的 FTP)。SFTP仅使用端口 22。

FTP 服务器将使用此端口进行 FTP 会话期间的所有连接。

如果您使用防火墙,则应选择 SFTP,因为它只需要一个端口。

 

监禁 FTP 用户

您可以通过将 FTP 用户监禁在其主目录中并仅允许特定用户访问该服务来保护 FTP 服务器的安全。

打开 /etc/vsftpd/vsftpd.conf 并取消注释以下选项:


chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list  

文件/etc/vsftpd.chroot_list包含每行一个被监禁用户的列表。

保存文件并重新启动您的服务。


$ systemctl restart vsftpd  

 

Linux FTP 服务器命令

您可以使用任何 GUI 客户端上传和下载文件,但您还需要了解一些 FTP 服务器命令。

第一个命令是 pwd 命令,您可以使用它来打印当前工作目录:


ftp> pwd  

您可以使用 ls 命令列出文件:


ftp> ls  

此外,您还可以使用 cd 命令更改工作目录:


ftp> cd /  

如果您想退出 FTP 会话,请使用 bye 命令:


ftp> bye  

我们使用 lcd 命令显示本地文件夹,而不是 FTP 文件夹:


ftp> lcd  

您可以使用 lcd 命令更改本地目录:


ftp> lcd /home  

您可以使用 get 命令下载文件:


ftp> get myfile  

此外,您还可以使用 mget 命令下载多个文件:


ftp> mget file1 file2  

使用delete命令从服务器删除文件:


ftp> delete filename  

使用 put 命令将文件上传到服务器:


ftp> put filename  

要上传多个文件,请使用 mput 命令:


ftp> mput file1 file2  

您可以使用 mkdir 命令创建目录:


ftp> mkdir dirName  

或者您可以使用 rmdir 命令从服务器删除目录。


ftp> rmdir dirName  

使用FTP服务器进行文件传输有两种模式:ASCII 模式, and 二进制模式,您可以像这样更改模式:


ftp> binary

ftp> ascii  

FTP 服务器是 Linux 中最容易配置和使用的服务器之一。

我希望您觉得这篇文章有用且有趣。继续回来。

谢谢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Linux 中安装、配置和保护 FTP 服务器 的相关文章

  • 如何在 Debian 10 上安装 PHP 8

    PHP 是一种脚本语言 是开发动态和交互式网页的强大工具 它最初由丹麦裔加拿大程序员 Rasmus Lerdorf 于 1994 年创建 根据 W3Techs 的数据 公共网络上运行的网站有 78 9 使用 PHP 因此 互联网上几乎每 1
  • 如何使用 RVM 在 Debian 上安装 Ruby

    Ruby 是一种深受众多开发人员欢迎的编程语言 Rails是运行Ruby语言的框架 Ruby 语言由 Yukihiro Matz Matsumoto 创建 并于 1995 年首次发布 本文将帮助您使用 RVM 在 Debian Linux

随机推荐

  • 如何在 Debian 10 上安装 Dovecot (POP/IMAP)

    Dovecot 是类 Unix 操作系统上 IMAP 和 POP3 的开源服务 它专注于可用于大多数 Linux 操作系统的轻量级且安全的邮件服务器 POP3 邮局协议 3 和 IMAP 互联网消息访问协议 都是用作消息访问代理的协议 这些
  • 如何在 WordPress 中禁用附件评论

    许多垃圾邮件发送者会针对您的 WordPress 网站上的媒体附件进行评论 您可以通过使用 WordPress 插件或在主题文件中添加自定义 PHP 代码来禁用媒体附件上的评论 下面介绍了两种禁用媒体附件评论的方法 Read 如何在 Wor
  • 如何在 CentOS 8 上安装 Laravel 9

    Laravel 是一个功能强大的开源 PHP Web 框架 专为更快地开发 Web 应用程序而设计 它基于Symfony框架 遵循MVC架构模式 在本教程的最近更新期间 Laravel 9 是可用的最新版本 Laravel 框架还提供了一个
  • 如何在 Ubuntu 18.04 和 16.04 上安装 Nginx

    Nginx 是 Apache HTTP Server 之外的另一个最受欢迎的 Web 服务器 它被全球大量流行网站使用 该网络服务器对于大流量网站非常有用 本教程将帮助您使用 apt get 在 Ubuntu 18 04 和 16 04 上
  • 使用 PHPMailer 发送电子邮件

    电子邮件发送功能是许多 Web 应用程序的重要组成部分 从帐户验证电子邮件到忘记密码提醒 电子邮件有助于在您的应用程序与其用户之间建立沟通桥梁 PHPMailer 是从 PHP 应用程序发送电子邮件的最流行的库之一 它具有许多功能 使其成为
  • 如何在 Ubuntu 18.04 LTS 上安装 Swift

    Swift 是一种安全 快速 富有表现力的通用编程语言 专为软件设计模式而构建 它最适合系统编程 移动和桌面应用程序 Swift 提供了大量功能 使编程变得更加容易 同时为开发人员提供了真正的系统编程语言所需的控制能力 本教程将帮助您在 U
  • 解决 MySQL 错误 1041 (HY000):内存不足

    在使用 MySQL 时 您可能偶尔会遇到以下情况 错误 1041 HY000 内存不足错误 此错误表明 MySQL 服务器 mysqld 在尝试执行操作时内存不足 此类问题可能有点令人困惑 特别是如果您的服务器似乎有足够的可用内存 让我们深
  • 什么是 500 内部服务器错误

    浏览网页时最常见的错误之一是 500 内部服务器错误 此消息表明网络服务器遇到技术问题 本文解释了 500 错误的含义 为什么会收到 HTTP 500 代码以及如何解决这些错误 什么是 HTTP 500 错误 每次打开网页时 浏览器都会向托
  • Linux 中的 Basename 命令

    basename是一个命令行实用程序 可以从给定的文件名中删除目录和尾随后缀 使用basename命令 The basename命令支持两种语法格式 basename NAME SUFFIX basename OPTION NAME bas
  • 如何在 Linux 上创建可启动的 Ubuntu U 盘

    在本教程中 我们将向您展示如何从 Linux 终端创建可启动的 Ubuntu U 盘 您可以使用此 U 盘来启动并测试或在任何支持从 USB 启动的计算机上安装 Ubuntu 先决条件 4GB 或更大的 USB 记忆棒驱动器 运行任何 Li
  • 如何在 Ubuntu 20.04 上安装 Odoo 14

    Odoo 是一款流行的开源商业应用程序套件 可帮助公司管理和运营其业务 它包括广泛的应用程序 例如 CRM 电子商务 网站构建器 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo根据使用案例和可用技术 可以以不同的方
  • Linux 中的 Ping 命令

    The ping命令是最常用的用于故障排除 测试和诊断网络连接问题的工具之一 Ping 的工作原理是向网络上指定的目标 IP 发送一个或多个 ICMP 互联网控制消息协议 回显请求包 并等待回复 当目的地收到数据包时 它会使用 ICMP 回
  • Linux 中的 Gzip 命令

    Gzip 是最流行的压缩算法之一 它允许您减小文件的大小并保留原始文件模式 所有权和时间戳 Gzip 还指 gz文件格式和gzip用于压缩和解压缩文件的实用程序 在本教程中 我们将向您展示如何使用gzip命令 gzip命令语法 的一般语法为
  • 如何在 Debian 10 上安装 Skype

    Skype是世界上最流行的通信应用程序之一 它允许您免费拨打在线音频和视频电话 并以经济实惠的价格拨打全球手机和固定电话 本文介绍如何在 Debian 10 Linux 上安装最新版本的 Skype 在 Debian 上安装 Skype S
  • 如何在 Ubuntu 20.04 上安装 PHP

    PHP 是最常用的服务器端编程语言之一 许多流行的 CMS 和框架 例如 WordPress Magento 和 Laravel 都是用 PHP 编写的 本指南介绍了在 Ubuntu 20 04 上安装 PHP 并将其与 Nginx 和 A
  • 如何在 Ubuntu 中更改用户密码

    定期更新密码并为每个帐户使用唯一的密码始终是个好主意 作为 Ubuntu 中的普通用户 您只能更改自己的密码 root 用户和具有 sudo 权限的用户可以更改其他用户的密码并定义如何使用或更改密码 本教程介绍如何从命令行或通过 Ubunt
  • 如何在 Ubuntu 20.04 上安装 Nginx

    Nginx 发音为 engine x 是一个开源 高性能的 HTTP 和反向代理服务器 负责处理互联网上一些最大站点的负载 它可以用作独立的 Web 服务器 负载均衡器 内容缓存和反向代理适用于 HTTP 和非 HTTP 服务器 与 Apa
  • 如何在 CentOS 7 上安装 Tomcat 9

    Tomcat 是 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术的开源实现 本教程介绍了在 CentOS 7 上安装 Tomcat 9 0 所需的步骤 先决条件 您登录
  • 如何使用 nmap 命令

    Nmap 是一款功能强大的网络扫描工具 用于安全审计和渗透测试 它是网络管理员用来解决网络连接问题和解决问题的基本工具之一端口扫描 Nmap还可以检测Mac地址 OS type 服务版本等等 本文介绍了如何使用的基础知识nmap命令来执行各
  • 在 Linux 中安装、配置和保护 FTP 服务器

    FTP或文件传输协议是计算机之间传输文件的常用协议 一个充当客户端 另一个充当服务器 在这篇文章中 我们将讨论 Linux 系统中的 FTP 服务器 特别是 Very Secure FTP Daemon vsftpd vsftpd 程序是当