当前位置: 首页 > news >正文

Redis性能瓶颈与安全隐患排查验证纪实

在写《Redis怎样保证数据安全?》这篇文章,我是有对redis设置密码需要哪些步骤,设置密码的性能损耗有验证的。这就涉及到要对redis的配置做修改。

开始时我是打算采用直接使用redis配置文件的方式。所以我从redis官网下载了一个默认的配置文件,就打算只将这个配置文件的requirepass注释打开,设置一个密码。

00d1f1c2ef5c1c6e14d757a1d8920f8a.png

redis我用docker启动,如果 docker run -p 6379:6379 --name ai-redis -v c:/docker/redis.conf:/etc/redis/redis.conf -d redis/redis-stack-server redis-server /etc/redis/redis.conf

使用本机的redis.conf文件拷贝一份到docker容器中启动,docker里可以正常运行,用docker内的redis-cli可以正常访问服务端,但是使用主机的java程序访问就会报 Unexpected end of stream.; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream.

我到咱们「编程一生」用户交流群里,问出了我的问题。咱们群里的朋友提示我说:telnet 可以验证下redis响应

我其实在他说之前是验证过的,当时telnet没有反应。既然人家说了,我就又试了一下。其实这次测试的配置和上次不一样了。我为了测试是不是我redis.conf文件的格式或者编码有问题。redis.conf直接弄了一个空文件,自然也是没有密码的。这时候给出了下面的提示(java客户端连提示和telnet的是一样的):

DENIED Redis is running in protected mode because protected mode is enabled and no password is set for the default user. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Set up an authentication password for the default user. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.

这么具体的问题,第一反应当然是问AI工具了。AI给了这个答案:

您所描述的信息是Redis的一个安全特性。当Redis在没有设置密码的情况下运行时,它会进入保护模式(protected mode)。在这种模式下,Redis仅接受来自本地回环接口(loopback interface)的连接,这通常意味着只能从运行Redis的同一台机器上进行连接。这是为了防止未经授权的外部访问。

如果您希望从外部计算机连接到Redis,您有几个选择:

  1. 禁用保护模式:您可以通过在本地回环接口上连接到Redis,并发送命令CONFIG SET protected-mode no来禁用保护模式。但是,请注意,这会增加安全风险,因为任何能够访问Redis服务器的机器都可以进行连接,除非您还实施了其他安全措施(如防火墙规则)。

  2. 设置密码:您可以在Redis配置文件中设置密码,方法是修改requirepass字段。例如,在redis.conf文件中,您可以添加或修改以下行:

    requirepass your_strong_password

    然后,您需要重启Redis服务器以使更改生效。设置密码后,您需要在连接到Redis时提供该密码。

根据提示,redis配置改成不允许本地接口外运行 protected-mode yes。同样,docker里可以正常运行。但从客户端连接,结果是:

 ERR AUTH <password> called without any password configured for the default user. Are you sure your configuration is correct?

另外一个朋友提示我抓包看一下,我就犯愁犯懒了。我是在windows上做的验证,默认不能使用tcmpdump。我是安装了wireshark的。wireshark貌似只能抓tcp和udp协议的包,不支持redis协议。有朋友能给点思路,对我这种懒人在这种情况下怎么抓包吗?

但是根据目前的情况:Redis仅接受来自本地回环接口(loopback interface)的连接,我想到了bind的配置

980d6cd37a26a4bca827f06ca3c71694.png

实际验证,默认bind是127.0.0.1。手动加上

bind 0.0.0.0

问题解决。回归验证时,我建立了一个空redis.conf,只有两样配置,也同样验证问题解决

272e044e641beac8be94b06446feb81e.png

但实际上这个问题与我真正的验证目标:对redis设置密码需要哪些步骤,设置密码的性能损耗做验证,是跑题的。

所以当时我并没有先全力去解决这个问题,而是使用了另外一种验证方式,不使用redis.conf文件,而是启动参数里直接指定参数,先验证了真正的目标之后再来解决的。启动参数如下:

docker run -p 6379:6379 --name ai-redis  -d redis/redis-stack-server redis-server --requirepass 123456 --protected-mode yes       

之后,我重新看了一下群里的聊天记录

f4d3df84d349530c763a7781fc811d05.png

群里朋友都给出我正确答案了,我没有领会到!!!

总结

总结一下本次排查的过程步骤:

我的整个排查过程使用的是《性能之巅》里介绍的科学法。

科学法采用以下框架:问题->假设->预测->实验->分析。在分析过程中,可以有效利用各种资源:AI技术、网上资料、仔细阅读Redis的错误提示,咨询群里的朋友。此外,在验证问题的过程中,不要因为新的问题,迷失了原本的目标,这里就根据具体目标和问题特点采取合适的验证方法,如直接指定启动参数来验证目标。

相关文章:

Redis性能瓶颈与安全隐患排查验证纪实

在写《Redis怎样保证数据安全&#xff1f;》这篇文章&#xff0c;我是有对redis设置密码需要哪些步骤&#xff0c;设置密码的性能损耗有验证的。这就涉及到要对redis的配置做修改。 开始时我是打算采用直接使用redis配置文件的方式。所以我从redis官网下载了一个默认的配置文件…...

【C/C++】C语言实现顺序表

C语言实现顺序表 简单描述代码运行结果 简单描述 用codeblocks编译通过 源码参考连接 https://gitee.com/IUuaena/data-structures-c.git 代码 common.h #ifndef COMMON_H_INCLUDED #define COMMON_H_INCLUDED#define LIST_INIT_CAPACITY 100 //!< 线性表初始化长度 #def…...

零基础快速上手:搭建类ChatGPT对话机器人的完整指南

来自&#xff1a;鸵傲科技开发 随着人工智能技术的飞速发展&#xff0c;对话机器人已经成为我们日常生活中不可或缺的一部分。它们能够实时响应我们的需求&#xff0c;提供便捷的服务。那么&#xff0c;对于零基础的朋友们来说&#xff0c;如何快速搭建一个类似ChatGPT的对话机…...

Java中的取余与取模运算:概念、区别与实例详解

Java中的取余与取模运算&#xff1a;概念、区别与实例详解 引言一、取余运算&#xff08;Remainder Operation&#xff09;二、取模运算&#xff08;True Modulo Operation&#xff09;三、区别比较四、实战应用 引言 在Java编程中&#xff0c;当我们提到“取余”和“取模”运算…...

Excel制作甘特图

使用Excel表格制作甘特图&#xff0c;可根据任务开始时间和结束时间自动计算工时&#xff0c;并自动用指定颜色填充横道图。 1.新建Excel文档&#xff0c;先设置项目基本信息&#xff0c;包括表格名称&#xff0c;这里设置为“**项目甘特图”&#xff1b;然后添加任务序号列&a…...

Dapr(一) 基于云原生了解Dapr

(这期先了解Dapr&#xff0c;之后在推出如何搭建Dapr&#xff0c;以及如何使用。) 目录 引言&#xff1a; Service Mesh定义 Service Mesh解决的痛点 Istio介绍 Service Mesh遇到的挑战 分布式应用的需求 Multiple Runtime 理念推导 Dapr 介绍 Dapr 特性 Dapr 核心…...

RESTful的优点

优点 1.通过url对资源定位&#xff0c;语义清晰&#xff1b; 2.通过HTTP谓词表示不同的操作&#xff0c;接口自描述&#xff1b; 3.可以对GET、PUT、DELETE请求重试&#xff08;幂等的&#xff09;&#xff1b; 4.可以对GET请求做缓存&#xff1b; 5.通过HTTP状态码反映服务器端…...

网络检测与监控

1.IP sla 服务等级质量检测&#xff0c;思科私有&#xff0c;提供商与用户之间的协议 可以对带宽、延迟、丢包率、网络抖动进行检测 &#xff08;1&#xff09;针对icmp进行检测&#xff1a; r1(config)#ip sla 1 r1(config-ip-sla)#icmp-echo 12.12.12.2 source-ip 12.12…...

基于架构的软件开发方法_1.概述和相关概念及术语

1.体系结构的设计方法概述 基于体系结构的软件设计&#xff08;Architecture-Based Software Design&#xff0c;ABSD&#xff09;方法。ABSD方法是由体系结构驱动的&#xff0c;即指由构成体系结构的商业、质量和功能需求的组合驱动的。 使用ABSD方法&#xff0c;设计活动可以…...

读所罗门的密码笔记07_共生思想(中)

1. 在人工智能系统中建立信任 1.1. 人类的大脑容易被个人倾向、干扰因素和确认偏误所影响 1.2. 古莱说&#xff0c;然而&#xff0c;从不同的角度去思考事实、花更长时间来做决策的能力&#xff0c;可能会让人类拥有“密探”一般的智慧 1.3. 我们可以对决策进行批判性思考&a…...

目标检测——工业安全生产环境违规使用手机的识别

一、重要性及意义 首先&#xff0c;工业安全生产环境涉及到许多复杂的工艺和设备&#xff0c;这些设备和工艺往往需要高精度的操作和严格的监管。如果员工在生产过程中违规使用手机&#xff0c;不仅可能分散其注意力&#xff0c;降低工作效率&#xff0c;更可能因操作失误导致…...

Linux/Ubuntu/Debian 终端命令:设置文件/目录权限和组

更改文件权限&#xff1a; chmod filename&#xff1a;根据指定的权限更改文件的权限。 例如&#xff1a; chmod ux filename # 为文件所有者添加执行权限 递归更改目录权限&#xff1a; chmod -R <说明> 目录名称&#xff1a;递归更改目录及其内容的权限。 例如&#xf…...

QA测试开发工程师面试题满分问答3: python的深拷贝和浅拷贝问题

在 Python 中&#xff0c;深拷贝&#xff08;deep copy&#xff09;和浅拷贝&#xff08;shallow copy&#xff09;是用于创建对象副本的两种不同方式。 浅拷贝是创建一个新的对象&#xff0c;该对象与原始对象的内容相同&#xff08;包括内部嵌套对象的引用&#xff09;&…...

Spire.PDF for .NET【文档操作】演示:合并 PDF 文件并添加页码

搜索了这么多有关 PDF 合并的信息后&#xff0c;很容易发现&#xff0c;无论您在线合并 PDF 文件还是使用 C#/VB.NET 来实现此任务&#xff0c;您都无法逃避对 PDF 文件安全等一些重要问题的担忧&#xff0c;因此需要花费多少时间或者合并后的文件是否支持打印页码等等。不过&a…...

VMware使用PowerCLI 修改分布式虚拟交换机的默认上联接口为LAG

简介 创建VMware 分布式交换机vDS 并配置 LACP接口时&#xff0c;然后创建新的默认分布式端口组不会默认使用LACP的上联接口。这意味着当创建新的端口组时&#xff0c;不可避免地会导致没手动修改上联端口的问题&#xff0c;导致网络不通&#xff0c;因为它们无可用的上联端口…...

什么是EDM邮件推广营销?

电子邮件作为最古老的互联网沟通工具之一&#xff0c;凭借其无可比拟的直达性、个性化潜力与高投资回报率&#xff0c;始终占据着企业营销策略的核心地位。随着人工智能技术的革新应用&#xff0c;云衔科技以其前瞻视野与深厚技术底蕴&#xff0c;倾力打造了一站式智能EDM邮件营…...

NoSQL之 Redis配置

目录 关系数据库与非关系型数据库 关系型数据库&#xff1a; ●非关系型数据库 关系型数据库和非关系型数据库区别&#xff1a; &#xff08;1&#xff09;数据存储方式不同 &#xff08;2&#xff09;扩展方式不同 对事务性的支持不同 非关系型数据库产生背景 Redis简介…...

Android U user+root实现方案

背景 由于项目&#xff08;MTK平台&#xff09;上要实现userroot的版本&#xff0c;供特殊用户使用。Android T上的方案无效&#xff0c;经历了各种搜索查看资料&#xff0c;和bsp大佬一起通宵奋战&#xff0c;整出了方案。梳理记录下&#xff0c;有需要的同学可以参考。 Root…...

CSS3 Transform变形理解与应用

Transform&#xff1a;对元素进行变形&#xff1b; Transition&#xff1a;对元素某个属性或多个属性的变化&#xff0c;进行控制&#xff08;时间等&#xff09;&#xff0c;类似flash的补间动画。但只有两个关键贞。开始&#xff0c;结束。 Animation&#xff1a;对元素某个属…...

语音克隆技术浪潮:探索OpenAI Voice Engine的奇妙之旅

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...