vsftp虚拟用户和ssl加密配置 —— 筑梦之路

为什么要用虚拟用户? 

1.增强安全性:使用虚拟用户,可以避免直接使用系统账户进行 FTP 访问,通过使用虚拟用户,可以限制 FTP 用户的访问范围和权限,减少潜在的安全风险。


2.隔离用户和文件:虚拟用户可以被隔离到特定的目录或目录树中,这样可以确保 FTP 用户只能访问其分配的特定文件夹,而不能访问整个文件系统。


3.简化管理:虚拟用户可以独立于操作系统的用户管理进行配置和管理,可以更方便地添加、修改或删除 FTP 用户,而无需涉及操作系统的账户管理。

虚拟用户配置步骤

 1. 创建一个ftp用户

#创建一个用户ftpuser,不创建家目录,设置ftpuser家目录为/mnt/ftp/,不允许其登录shelluseradd -M ftpuser -d /mn/ftp/ -s /sbin/nologin

2. 创建ftp目录以及虚拟用户访问的根目录

mkdir -p /mnt/ftp/ceshi{01..03}chown -R ftpuser. /mnt/ftp/chmod -R 755 /mnt/ftp/

3. 在vsftpd中添加配置文件信息,允许使用虚拟用户登录FTP

vim /etc/vsftpd/vsftpd.confanonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd   #使用pam验证用户身份
userlist_enable=YES
tcp_wrappers=YES
dual_log_enable=yes
xferlog_enable=YES
xferlog_file=/var/log/xferlog
guest_enable=YES  #启用虚拟用户
guest_username=ftpuser #指定虚拟用户绑定的系统用户名
virtual_use_local_privs=YES  #指定虚拟用户使用本地用户权限
user_config_dir=/etc/vsftpd/vconf #虚拟用户的配置文件目录
allow_writeable_chroot=YES
anon_other_write_enable=YES
chroot_local_user=YES    

4. 创建ftp虚拟用户,需严格按照一行用户名一行密码的格式来编写

mkdir /etc/vsftpd/virtuserscat >> /etc/vsftpd/virtusers <<EOF
ceshi01
123456
ceshi02
123456
ceshi03
123456
EOF

5. 生成虚拟用户数据库文件,在pam认证中关联vt-users.db文件

#如果新增用户则需要重新生成db文件db_load -T -t hash -f /etc/vsftpd/virtusers  /etc/vsftpd/vt-users.dbvi /etc/pam.d/vsftpd#%PAM-1.0
auth     sufficient /lib64/security/pam_userdb.so  db=/etc/vsftpd/vt-users
account  sufficient /lib64/security/pam_userdb.so  db=/etc/vsftpd/vt-users

 6. 创建虚拟用户配置文件,为每个用户设置独立的权限以及存储目录

mkdir /etc/vsftpd/vconf
touch /etc/vsftpd/vconf/ceshi{01..03}cat >>/etc/vsftpd/vconf/ceshi01 <<EOF
local_root=/mnt/ftp/ceshi01   #用户的根目录设置为/mnt/ftp/ceshi01
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600  #空闲会话超时时间为 600 秒。如果客户端在该时间内没有发送任何数据或命令,服务器将会关闭与客户端的连接
data_connection_timeout=120  #数据连接超时时间为 120 秒。在建立数据连接后,如果在该时间内未进行任何数据传输,服务器将会关闭数据连接。
local_max_rate=204800   #最大传输速率为204800bits
EOFcat >>/etc/vsftpd/vconf/ceshi02 <<EOF
local_root=/mnt/ftp/ceshi02
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=409600
EOFcat >>/etc/vsftpd/vconf/ceshi03 <<EOF
local_root=/mnt/ftp/ceshi02
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
EOF

7. 测试用户登录上传下载文件

# 生成一个大文件,分别用不同的账户登陆测试dd if=/dev/zero of=test bs=1M count=1000

SSL加密传输配置

为什么要配置ssl加密?

那自然是不安全呗。

FTP传输时皆为明文传输,通过抓包软件能够轻易获取账号和密码,为了增强 FTP 服务的安全性,可以配置 SSL 证书,以确保在数据传输过程中的加密保护

 1. 创建CA证书目录

#创建文件夹,默认这些文件夹都是不存在的
mkdir -p /etc/pki/CA/{certs,newcerts,crl,private}#进入到CA目录中创建索引文件
cd /etc/pki/CA/touch index.txt#指定一个证书编号echo "01">serial

2. 创建私钥文件

openssl genrsa -out private/cakey.pem 2048

3. 创建证书文件

openssl req -new -x509 -nodes -key private/cakey.pem -days 7300 -out cacert.pem

4. 为ftp应用证书,配置私钥文件与证书文件的位置在ftp配置文件末尾添加以下行

#虽然 SSLv2 和 SSLv3 协议在过去被广泛使用,但由于安全性问题,现在已不推荐使用。建议禁用 SSLv2 和 SSLv3,仅使用 TLSv1.2 或更新版本rsa_cert_file=/etc/pki/CA/cacert.pem
rsa_private_key_file=/etc/pki/CA/private/cakey.pem
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_enable=YES
ssl_sslv1=YES
ssl_sslv2=YES
ssl_sslv3=YES#重启服务
systemctl restart vsftpd

5.检查验证

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

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

相关文章

docker如何关闭证书认证

目录 前言关闭Docker认证的步骤修改pom 前言 当docker认证证书过期了&#xff0c;项目又要马上上线怎么办&#xff1f;重新生成证书&#xff0c;时间来不及&#xff0c;这时最快的方法就是关闭证书认证。 关闭Docker认证的步骤 停止Docker服务 systemctl stop docker编辑Do…

Ts创建的详细过程及配置步骤(傻瓜式配置创建),最后效果展示

一:首先创建一个 空文件夹 二:使用编辑器打开,再创建一个src文件夹,然后按照以下步骤

VMware worksation 17 简易安装Centos8.2、Redhat8.2、Ubuntu16.04

系列文章目录 文章目录 系列文章目录前言一、VMware worksation 17 安装二、安装Centos8.2三、安装RHEL8.2四、安装Ubuntu16.04总结 前言 傻瓜式按照Linux系统&#xff0c;如果觉得简单&#xff0c;可以自定义设置&#xff0c;特别是配置一下磁盘空间大小&#xff0c;对以后排…

2023年上半年系统规划与管理师上午真题及答案解析

1.香农用概率来定量描述信息的公式如下&#xff0c;其中H(x)表示X的( )&#xff0c;Pi是( )出现第i种状态的( )。 A.信息熵 事件 概率 B.总熵 单位 概率 C.信息熵 单位 概率 D.总熵 单位 度量 2.信息传输模型中&#xff0c;( )负责信息的向外传播&#xff0c;( )负责…

数据结构--链表进阶面试题

在链表题目开始之前我们来复习一道数组元素的逆序问题&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 提示&#xff1a; 1 < nums.length < 10^5-2^31 < nums[i] < 2^31 - 10 < k < 10^5 思…

wordpress子比主题给文章内容加上密码查看

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤1.引入库2.读入数据第三步:文章内添加代码前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,…

Docker容器:Docker-Consul的容器服务更新与发现

目录 前言 一、什么是服务注册与发现 二、 Docker-Consul 概述 1、Consul 概念 2、Consul 提供的一些关键特性 3、Consul 的优缺点 4、传统模式与自动发现注册模式的区别 4.1 传统模式 4.2 自动发现注册模式 5、Consul 核心组件 5.1 Consul-Template组件 5.2 Consu…

一款 NodeJS 版本管理工具 NVM (Windows)

一、简介 Node Version Manager&#xff08;NVM&#xff09;是一种用于管理多个 NodeJS 版本的工具。在日常工作中&#xff0c;我们可能同时在进行多个不同的项目开发&#xff0c;每个项目的需求不同&#xff0c;依赖与不同版本的NodeJS 运行环境。这种情况下&#xff0c;维护…

SAP PP学习笔记11 - PP中的MRP相关概念,参数,配置

上文讲了作业区的概念及配置。 SAP PP学习笔记08 - 作业区&#xff08;工作中心Work Center&#xff09;&#xff0c;作业区Customize-CSDN博客 SAP PP学习笔记09 - 作业区&#xff08;工作中心Work Center&#xff09;Customize2&#xff08;管理码&#xff0c;班次顺序&…

利用github pages建立Serverless个人博客

利用github pages建立Serverless个人博客 概述 使用github pages&#xff0c;可以在github上部署静态网站。利用这个功能&#xff0c;可以很方便地实现个人博客的发布托管。 比如我的个人博客&#xff1a;Buttering’s Blog 对应代码仓库&#xff1a;buttering/EasyBlog: 自…

【WPF学习笔记(一)】WPF应用程序的组成及Window类介绍

WPF应用程序的组成及Window类介绍 WPF应用程序的组成及Window类介绍前言正文1、WPF介绍1.1 什么是WPF1.2 WPF的特点1.3 WPF的控件分类 2、XAML介绍2.1 XAML的定义2.2 XAML的特点2.3 XAML的命名空间 3、WPF应用程序组成3.1 App.config3.2 App.xaml3.3 App.xaml.cs3.4 MainWindow…

微服务---feign调用服务

目录 Feign简介 Feign的作用 Feign的使用步骤 引入依赖 具体业务逻辑 配置日志 在其它服务中使用接口 接着上一篇博客&#xff0c;我们讲过了nacos的基础使用&#xff0c;知道它是注册服务用的&#xff0c;接下来我们我们思考如果一个服务需要调用另一个服务的接口信息&…

【C++】学习笔记——vector_3

文章目录 七、vector3. vector的模拟实现4. vector实现代码整合 未完待续 七、vector 3. vector的模拟实现 上篇文章我们讲解了非常 玄幻 的拷贝构造函数&#xff0c;同样的方法&#xff0c;我们也能用这种方法来实现 赋值重载函数 。 void swap(vector<T>& v) {s…

overflow:hidden对解决外边距塌陷的个人理解

外边距塌陷&#xff1a; 子元素的上外边距大于父元素的上外边距&#xff0c;导致边距折叠&#xff0c;取两者之间最大值&#xff0c;即子元素外边距&#xff0c;导致父元素上外边距失效。 解决办法&#xff1a;在父元素样式添加overflow:hidden;或者border:1px solid black;(不…

前端开发攻略---介绍HTML中的<dialog>标签,浏览器的原生弹框。

1、演示 2、介绍 <dialog> 标签用于定义对话框&#xff0c;即一个独立的窗口&#xff0c;通常用来显示对话框、提示框、确认框等弹出式内容。在对话框中&#xff0c;可以包含文本、表单元素、按钮等内容&#xff0c;用户可以和这些内容进行交互。 3、兼容性 4、示例代码 …

【C语言回顾】数据在内存中的存储

前言1. 概述2. 大小端字节序和字节序判断2.1 大端字节序&#xff08;Big-Endian&#xff09;2.2 小端字节序&#xff08;Little-Endian&#xff09;2.3 判断字节序的示例 3. 数据在内存中的存储3.1 整数在内存中的存储3.2 浮点数在内存中的存储 结语 ↓ 上期回顾: 【C语言回顾】…

【小菜鸟之---Ansible基础详解】

文章目录 1 【Ansible简介】1.1简介1.2 Ansible 特点1.3 Ansible的工作机制1.4Ansible任务工作模式 2【安装部署】2.1安装命令2.2 Ansible配置文件2.3主机清单配置2.4 基于ssh免密登录2.5常用命令 3【Ansible常用模块】3.1 ping模块3.2 shell模块3.3 command模块3.4 copy模块3.…

webox微信群发器多少钱?电脑微信群发软件哪个好用?微信群发助手一次能发多少人?最强稳定群发器来袭

今天给大家推荐一款我们目前在使用的电脑群发工具WeBox&#xff0c;不仅可以无限多开&#xff0c;方便你同时管理多个账号&#xff0c;群发功能更是十分强大&#xff0c;轻松释放你的双手。 软件下载地址>>密码&#xff1a;4as1 WeBox群发功能 下载WeBox打开登录&#x…

Golang | Leetcode Golang题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; func climbStairs(n int) int {sqrt5 : math.Sqrt(5)pow1 : math.Pow((1sqrt5)/2, float64(n1))pow2 : math.Pow((1-sqrt5)/2, float64(n1))return int(math.Round((pow1 - pow2) / sqrt5)) }

《苍穹外卖》电商实战项目(java)知识点整理(P1~P65)【上】

史上最完整的《苍穹外卖》项目实操笔记&#xff0c;跟视频的每一P对应&#xff0c;全系列10万字&#xff0c;涵盖详细步骤与问题的解决方案。如果你操作到某一步卡壳&#xff0c;参考这篇&#xff0c;相信会带给你极大启发。 《苍穹外卖》项目实操笔记【中】&#xff1a;P66~P…