如何在 CentOS VPS 上配置 vsftpd 使用 SSL/TLS

介绍


FTP(文件传输协议)是一种在本地和远程服务器之间传输文件的方式。尽管非常流行和普遍,但由于其设计中固有的安全性缺失,使用这种文件传输方法已经不再受欢迎。

一个非常有能力的替代方案是SFTP,如上所述。该协议通过SSH实现文件共享。如果你必须使用FTP,你至少应该使用SSL/TLS证书来保护连接。

在本指南中,我们将配置vsftpd在CentOS 6.4 VPS上使用TLS/SSL证书。

安装vsftpd


vsftpd服务器可在CentOS的默认软件库中找到。我们可以通过输入以下命令来安装它:

sudo yum install vsftpd

vsftpd服务器现在已安装在我们的VPS上。我们可以在下一节中配置一些连接选项。

配置vsftpd的基本设置


CentOS上vsftpd的主要配置文件保存在/etc/vsftpd/目录中,名为vsftpd.conf

以root权限在编辑器中打开此文件:

sudo nano /etc/vsftpd/vsftpd.conf

我们需要在此文件中调整一些基本参数,以增加安全性并建立我们的连接选项。

我们首先要做的是禁用匿名用户。虽然这个选项对于一个大型的、面向公众的文件存储(比如公共软件仓库)可能是有意义的,但对于个人FTP服务器来说,这几乎从来都不是一个好主意。

anonymous_enable=NO

由于我们要禁用匿名用户,我们需要提供一种方式让我们的系统对用户进行身份验证。我们将允许本地用户,这意味着vsftpd将使用我们的Linux系统用户和身份验证来确定谁可以登录。

要启用此功能,请确保此选项已设置为:

local_enable=YES

我们还将允许他们具有写访问权限,以便他们可以上传材料和修改内容:

write_enable=YES

我们还希望将我们的用户限制在各自的主目录中。该选项为:

chroot_local_user=YES

这对于基本(非SSL)FTP配置已经足够了。我们将稍后添加SSL功能。

保存并关闭文件。

创建FTP用户


我们选择使用本地用户并将它们限制在其主目录中,创建一个新用户:

sudo adduser ftpuser

通过输入以下命令为新用户分配密码:

sudo passwd ftpuser

CentOS 6.4中的vsftpd版本较旧,因此此部分设置比一些更新版本更容易。

配置vsftpd的SSL


使vsftpd操作与SSL一起的第一步是创建我们的SSL证书。实际上,我们将使用TLS,这是SSL的后继协议,更加安全。

我们将在SSL目录中创建一个子目录来存储我们的文件:

sudo mkdir /etc/ssl/private

要在单个文件中创建证书和密钥,我们可以使用以下命令:

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

填写它询问的问题。最重要的是你的服务器的“通用名称”,它将是你用来连接的IP地址或域名。

将SSL详细信息添加到vsftpd配置文件


现在,我们需要修改我们的配置以指向新的密钥并配置安全连接。

再次以root身份打开vsftpd配置文件:

sudo nano /etc/vsftpd/vsftpd.conf

滚动到文件底部。我们将在这里添加我们的SSL/TLS信息。

我们需要指定我们证书和密钥文件的位置。实际上,我们将两个信息部分合并到一个文件中,因此我们将两个选项指向同一个文件:

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

接下来,我们需要启用这些文件的使用并禁用匿名用户。我们还应该强制使用SSL进行数据传输和登录例程。这将使安全性成为强制性:

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

接下来,我们将限制连接类型为TLS,这比SSL更安全。我们将通过明确允许TLS并拒绝使用SSL来实现这一点:

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

在完成之前,我们将添加一些更多的配置选项:

require_ssl_reuse=NO
ssl_ciphers=HIGH

保存并关闭文件。

我们需要重新启动vsftpd以启用我们的更改:

sudo /etc/init.d/vsftpd restart

我们还将配置它在每次重启时自动启动:

sudo chkconfig vsftpd on

如何使用 FileZilla 连接到 vsftpd 服务器


大多数现代 FTP 客户端都支持 SSL 和 TLS 连接。我们将向您展示如何设置 FileZilla 使用安全连接,因为它具有跨平台兼容性。我们假设您已经根据您的计算机的适当安装程序安装了客户端。

打开 FileZilla 程序。在界面中,您可以点击一个图标打开“站点管理器”。它应该看起来像图片最左边的图标:

!FileZilla 打开站点管理器

在弹出的新界面中,您应该点击左下角的“新站点”按钮。命名服务器连接,以便以后可以轻松识别它

!FileZilla 新站点

在“主机”字段中填入 IP 地址,并从协议下拉菜单中选择“FTP - 文件传输协议”。对于加密下拉菜单,请选择“需要显式 FTP over TLS”。

从登录类型菜单中选择“要求密码”。在“用户”字段中填入我们为 FTP 用户创建的用户名:

!FileZilla 服务器配置

现在,您可以点击面板底部的“连接”。您将被提示输入 FTP 用户的密码:

!FileZilla 用户密码

下一步是我们连接到远程服务器时使用 TLS 的第一个迹象。我们将被要求接受正在使用的证书。

!FileZilla 服务器证书

您应该能够看到您创建证书时填写的信息,以验证您实际上是连接到正确的位置。

接受证书以建立连接。

结论


虽然这种配置是朝着正确方向迈出的一步,但在建立连接之前仍存在安全问题。由于这些问题,大多数向互联网开放的设置都应该避免使用。如果您希望能够使用一些您熟悉的工具,但又能信任其安全性,SFTP 是一个很好的替代方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/829277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

conda修改当前环境中的python版本

1. 首先查看当前的python版本 python -V 2. 进入已经激活的conda环境,搜索库中有无想要的python版本(若有想安装的版本可跳过) conda search --full --name python 3. 安装库中存在且符合要求的python版本即可(以python3.8.1为例) conda install python3.8.1

深度学习的模型转换(.pt转换为.engine)

缘由 最近观察发现,深度学习的例子有很多,但是模型的转换总是有很多问题,没有一个标准的转换方法。有的是直接用YOLO里面自带的export.py进行转换,也有的人利用TensorRT里面的bin文件夹的trtexec.exe转换,结果两种转换之后的格式不一样。所以最近就整理了网上的转换办法,…

springboot WebSocket的用法

Spring Boot中使用Java API创建WebSocket 添加WebSocket的依赖项 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency>创建WebSocket端点 import javax.webs…

sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

Linux线程(pthread)概念以及编程

pthread 线程的意思 1.简的来说&#xff0c;线程的概念就是在一个程序中&#xff0c;同时进行多个函数的运行比如以下代码 2.要引入头文件#include <pthread.h> ; 线程被调函数的定义是空指针类型的如&#xff1a; void *func1() 在main函数中&#xff0c;pthread_cre…

【软件】ERETCAD-Env:在轨空间环境3D动态仿真软件

文章介绍了Extreme-environment Radiation Effect Technology Computer-Aided Design – Environment (ERETCAD-Env)软件&#xff0c;文章的介绍和展示了ERETCAD-Env软件的功能和特点&#xff0c;这是一款用于动态模拟在轨卫星所处空间环境的计算机辅助设计软件。强调了该软件在…

Rust异步并发编程tokio异步运行时讲解和使用,新手必学

Rust 在v1.39版本以后就引入了async关键字&#xff0c;用于支持异步编程。 async fn foo() {}Rust中&#xff0c;async函数或块会被视作一个 Future 对象&#xff0c;async 关键字只是用来定义这个 Future 对象&#xff0c;定义好的这片异步代码并不会自动执行&#xff0c;而是…

c语言指针的应用场景

​ 1.什么是指针&#xff1f; 当我们提起指针的时候&#xff0c;可能第一反应会露出惊喜的表情 &#xff08;但是我们其实没必要那么慌&#xff0c;因为当我们随着我们学习的越来越深入就会发现&#xff0c;指针虽然看起来难&#xff0c;实际上也不怎么简单。哈哈哈开玩笑的&a…

macos vscode 激活虚拟环境

用 source activate activate的路径报错 解决&#xff1a;cd到activate下的文件下 直接source activate 解决 (base) dearrdearrdeMacBook-Air 时序作业 % /Applications/文件/派森/时序作业/.venv/bin/activat zsh: no such file or directory: /Applications/文件/派森/时…

TCN-LSTM时间卷积网络长短期记忆网络多输入多输出回归预测

文章目录 效果一览文章概述 订阅专栏只能获取一份代码部分源码参考资料 效果一览 文章概述 TCN-LSTM时间卷积网络长短期记忆网络多输入多输出回归预测 matlab2021 订阅专栏只能获取一份代码 部分源码 %------------------------------------------------------------------…

c# winform打包

本次采用vs2022打包winform窗体应用&#xff0c;有时应用不需要打包为安装应用&#xff0c;执行一个EXE就运行了 测试了几次&#xff0c;winform 非.net Framework 和控制台程序也是非.net Framework项目能打包这种&#xff0c;后续在研究

JS中的深拷贝实现方式

在JS中&#xff0c;对象的复制是常见的操作&#xff0c;但有时候我们需要的不仅仅是简单的浅拷贝&#xff0c;而是深度拷贝&#xff0c;即复制对象以及它的所有子对象。这就涉及到了深拷贝的概念。深拷贝与浅拷贝的主要区别在于&#xff0c;深拷贝会复制对象及其所有的子对象&a…

边缘计算在视频监控领域的应用

一、边缘计算在视频监控领域的应用 运用边缘计算解决视频监控问题&#xff0c;可以带来许多优势。以下是一些具体的应用示例&#xff1a; 实时分析与处理&#xff1a;在视频监控系统中&#xff0c;边缘计算盒子可以实时处理和分析视频流&#xff0c;实现对监控画面的智能识别…

强化学习和深度学习的差异对比

当你在玩一款视频游戏时&#xff0c;你是如何学习的&#xff1f;你尝试不同的策略&#xff0c;看哪个会让你获得更高的分数。强化学习就像是让机器学会玩游戏&#xff0c;只不过它是通过尝试不同的动作&#xff0c;接收游戏给予的奖励或惩罚来学习的。 想象一下你在学习认识动物…

STM32H7 HSE时钟的使用方法介绍

目录 概述 1 STM32H750 HSE时钟介绍 2 使用STM32Cube创建Project 3 认识HSE时钟 3.1 HSE时钟的特性 3.2 HSE的典型应用电路 4 STM32Cube中配置时钟 4.1 时钟需求 4.2 配置参数 4.2.1 使能外围资源 4.2.2 使用STM32Cube注意项 4.2.3 配置参数 5 总结 概述 本文主要…

IBM SPSS Statistics for Mac v27.0.1中文激活版:强大的数据分析工具

IBM SPSS Statistics for Mac是一款功能强大的数据分析工具&#xff0c;为Mac用户提供了高效、精准的数据分析体验。 IBM SPSS Statistics for Mac v27.0.1中文激活版下载 该软件拥有丰富的统计分析功能&#xff0c;无论是描述性统计、推论性统计&#xff0c;还是高级的多元统计…

【c++每天一题】 快速幂

快速冥 描述 输入 b,p,k 的值&#xff0c;求 bp mod k的值。其中 b,p,k 为长整型数。 输入描述 输入 b,p,k 的值。 输出描述 求 bp mod k 的值。 样例输入 1 2 10 9 样例输出 1 7 代码&#xff1a; #include<bits/stdc.h> using namespace std; //求a的b次方%k的结果 …

论文解读:(CAVPT)Dual Modality Prompt Tuning for Vision-Language Pre-Trained Model

v1文章名字&#xff1a;Dual Modality Prompt Tuning for Vision-Language Pre-Trained Model v2文章名字&#xff1a;Class-Aware Visual Prompt Tuning for Vision-Language Pre-Trained Model 文章汇总 对该文的改进&#xff1a;论文解读&#xff1a;(VPT)Visual Prompt …

Visual Studio 对 C++ 头文件和模块的支持

在 C 编程领域&#xff0c;头文件和模块的管理有时候确实比较令人头疼。但是&#xff0c;有许多工具和功能可以简化此过程&#xff0c;提高效率并减少出错的可能性。下面是我们为 C 头文件和模块提供的几种工具的介绍。 构建明细 通过菜单栏 Build > Run Build Insights&a…

【个人博客搭建】(11)swagger添加jwt信息

这个主要是为了方便使用swagger时&#xff0c;能更好的带入我们的token。 ps&#xff1a;如果使用其他第三方api工具&#xff08;apipost、postman等&#xff09;则不需要。 &#xff08;当然&#xff0c;不用不能没有&#xff0c;是吧&#xff09; 1、在AddSwaggerGen内添加…