Redis性能瓶颈与安全隐患排查验证纪实
在写《Redis怎样保证数据安全?》这篇文章,我是有对redis设置密码需要哪些步骤,设置密码的性能损耗有验证的。这就涉及到要对redis的配置做修改。
开始时我是打算采用直接使用redis配置文件的方式。所以我从redis官网下载了一个默认的配置文件,就打算只将这个配置文件的requirepass注释打开,设置一个密码。
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,您有几个选择:
禁用保护模式:您可以通过在本地回环接口上连接到Redis,并发送命令CONFIG SET protected-mode no来禁用保护模式。但是,请注意,这会增加安全风险,因为任何能够访问Redis服务器的机器都可以进行连接,除非您还实施了其他安全措施(如防火墙规则)。
设置密码:您可以在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的配置
实际验证,默认bind是127.0.0.1。手动加上
bind 0.0.0.0
问题解决。回归验证时,我建立了一个空redis.conf,只有两样配置,也同样验证问题解决
但实际上这个问题与我真正的验证目标:对redis设置密码需要哪些步骤,设置密码的性能损耗做验证,是跑题的。
所以当时我并没有先全力去解决这个问题,而是使用了另外一种验证方式,不使用redis.conf文件,而是启动参数里直接指定参数,先验证了真正的目标之后再来解决的。启动参数如下:
docker run -p 6379:6379 --name ai-redis -d redis/redis-stack-server redis-server --requirepass 123456 --protected-mode yes
之后,我重新看了一下群里的聊天记录
群里朋友都给出我正确答案了,我没有领会到!!!
总结
总结一下本次排查的过程步骤:
我的整个排查过程使用的是《性能之巅》里介绍的科学法。
科学法采用以下框架:问题->假设->预测->实验->分析。在分析过程中,可以有效利用各种资源:AI技术、网上资料、仔细阅读Redis的错误提示,咨询群里的朋友。此外,在验证问题的过程中,不要因为新的问题,迷失了原本的目标,这里就根据具体目标和问题特点采取合适的验证方法,如直接指定启动参数来验证目标。
相关文章:
Redis性能瓶颈与安全隐患排查验证纪实
在写《Redis怎样保证数据安全?》这篇文章,我是有对redis设置密码需要哪些步骤,设置密码的性能损耗有验证的。这就涉及到要对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对话机器人的完整指南
来自:鸵傲科技开发 随着人工智能技术的飞速发展,对话机器人已经成为我们日常生活中不可或缺的一部分。它们能够实时响应我们的需求,提供便捷的服务。那么,对于零基础的朋友们来说,如何快速搭建一个类似ChatGPT的对话机…...
Java中的取余与取模运算:概念、区别与实例详解
Java中的取余与取模运算:概念、区别与实例详解 引言一、取余运算(Remainder Operation)二、取模运算(True Modulo Operation)三、区别比较四、实战应用 引言 在Java编程中,当我们提到“取余”和“取模”运算…...
Excel制作甘特图
使用Excel表格制作甘特图,可根据任务开始时间和结束时间自动计算工时,并自动用指定颜色填充横道图。 1.新建Excel文档,先设置项目基本信息,包括表格名称,这里设置为“**项目甘特图”;然后添加任务序号列&a…...
Dapr(一) 基于云原生了解Dapr
(这期先了解Dapr,之后在推出如何搭建Dapr,以及如何使用。) 目录 引言: Service Mesh定义 Service Mesh解决的痛点 Istio介绍 Service Mesh遇到的挑战 分布式应用的需求 Multiple Runtime 理念推导 Dapr 介绍 Dapr 特性 Dapr 核心…...
RESTful的优点
优点 1.通过url对资源定位,语义清晰; 2.通过HTTP谓词表示不同的操作,接口自描述; 3.可以对GET、PUT、DELETE请求重试(幂等的); 4.可以对GET请求做缓存; 5.通过HTTP状态码反映服务器端…...
网络检测与监控
1.IP sla 服务等级质量检测,思科私有,提供商与用户之间的协议 可以对带宽、延迟、丢包率、网络抖动进行检测 (1)针对icmp进行检测: r1(config)#ip sla 1 r1(config-ip-sla)#icmp-echo 12.12.12.2 source-ip 12.12…...
基于架构的软件开发方法_1.概述和相关概念及术语
1.体系结构的设计方法概述 基于体系结构的软件设计(Architecture-Based Software Design,ABSD)方法。ABSD方法是由体系结构驱动的,即指由构成体系结构的商业、质量和功能需求的组合驱动的。 使用ABSD方法,设计活动可以…...
读所罗门的密码笔记07_共生思想(中)
1. 在人工智能系统中建立信任 1.1. 人类的大脑容易被个人倾向、干扰因素和确认偏误所影响 1.2. 古莱说,然而,从不同的角度去思考事实、花更长时间来做决策的能力,可能会让人类拥有“密探”一般的智慧 1.3. 我们可以对决策进行批判性思考&a…...
目标检测——工业安全生产环境违规使用手机的识别
一、重要性及意义 首先,工业安全生产环境涉及到许多复杂的工艺和设备,这些设备和工艺往往需要高精度的操作和严格的监管。如果员工在生产过程中违规使用手机,不仅可能分散其注意力,降低工作效率,更可能因操作失误导致…...
Linux/Ubuntu/Debian 终端命令:设置文件/目录权限和组
更改文件权限: chmod filename:根据指定的权限更改文件的权限。 例如: chmod ux filename # 为文件所有者添加执行权限 递归更改目录权限: chmod -R <说明> 目录名称:递归更改目录及其内容的权限。 例如…...
QA测试开发工程师面试题满分问答3: python的深拷贝和浅拷贝问题
在 Python 中,深拷贝(deep copy)和浅拷贝(shallow copy)是用于创建对象副本的两种不同方式。 浅拷贝是创建一个新的对象,该对象与原始对象的内容相同(包括内部嵌套对象的引用)&…...
Spire.PDF for .NET【文档操作】演示:合并 PDF 文件并添加页码
搜索了这么多有关 PDF 合并的信息后,很容易发现,无论您在线合并 PDF 文件还是使用 C#/VB.NET 来实现此任务,您都无法逃避对 PDF 文件安全等一些重要问题的担忧,因此需要花费多少时间或者合并后的文件是否支持打印页码等等。不过&a…...
VMware使用PowerCLI 修改分布式虚拟交换机的默认上联接口为LAG
简介 创建VMware 分布式交换机vDS 并配置 LACP接口时,然后创建新的默认分布式端口组不会默认使用LACP的上联接口。这意味着当创建新的端口组时,不可避免地会导致没手动修改上联端口的问题,导致网络不通,因为它们无可用的上联端口…...
什么是EDM邮件推广营销?
电子邮件作为最古老的互联网沟通工具之一,凭借其无可比拟的直达性、个性化潜力与高投资回报率,始终占据着企业营销策略的核心地位。随着人工智能技术的革新应用,云衔科技以其前瞻视野与深厚技术底蕴,倾力打造了一站式智能EDM邮件营…...
NoSQL之 Redis配置
目录 关系数据库与非关系型数据库 关系型数据库: ●非关系型数据库 关系型数据库和非关系型数据库区别: (1)数据存储方式不同 (2)扩展方式不同 对事务性的支持不同 非关系型数据库产生背景 Redis简介…...
Android U user+root实现方案
背景 由于项目(MTK平台)上要实现userroot的版本,供特殊用户使用。Android T上的方案无效,经历了各种搜索查看资料,和bsp大佬一起通宵奋战,整出了方案。梳理记录下,有需要的同学可以参考。 Root…...
CSS3 Transform变形理解与应用
Transform:对元素进行变形; Transition:对元素某个属性或多个属性的变化,进行控制(时间等),类似flash的补间动画。但只有两个关键贞。开始,结束。 Animation:对元素某个属…...
语音克隆技术浪潮:探索OpenAI Voice Engine的奇妙之旅
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
将Python程序打包为Windows安装包
本文使用创作助手。 如果你想将Python程序打包为Windows安装包,你可以使用NSIS(Nullsoft Scriptable Install System)工具。NSIS是一个免费的Windows安装包创建工具。 以下是使用NSIS将Python程序打包为Windows安装包的步骤: 首…...
一个基于大数据的派单管理系统
通常需要处理大量的订单数据,并确保这些数据能够在各个相关部门之间高效、准确地传递。这样的系统不仅有助于提高派单效率,还能优化资源配置,减少不必要的浪费。以下是一个包含所需元素的系统设计方案概述: 数据结构 订单号&…...
【单片机 5.3开关检测】
文章目录 前言一、5.3开关检测1.1没按键按下的1.2有按键按下的 二、改进1.改进 三、独立键盘3.1为什么要取反3.2 实用的按键 总结 前言 提示:这里可以添加本文要记录的大概内容: 课程需要: 提示:以下是本篇文章正文内容…...
每天五分钟计算机视觉:如何基于滑动窗口技术完成目标的检测?
汽车检测算法 现在我们想要构建一个汽车检测算法,我们希望输入到算法中一张图片,算法就可以帮助我们检测出这张图片中是否有汽车。 数据集 首先创建一个标签训练集,x是样本,y是标签。我们的训练集最好是被剪切过的图片,剪掉汽车以外的部分,使汽车居于中间位置,就是整张…...
wpf ContextMenu
ContextMenu上下文菜单 ContextMenu 在 WPF 中是一个非常有用的控件,它提供了一个在用户执行特定操作(如右键点击)时显示的菜单。ContextMenu 可以附加到几乎所有的 WPF 控件上,使得当用户与这些控件互动时,能够提供一…...
增加网站搜索引擎排名的6个准则
怎样提高网站排名首页 在竞争激烈的网络世界中,网站的排名对于吸引流量和提升曝光至关重要。登上搜索引擎结果页面的首页,意味着更多的曝光和点击率。以下是一些方法,可以帮助您提高网站在搜索引擎中的排名,让其跻身首页…...
【数据库索引】【面试题】【SQL】什么时候不需要用索引?
在数据库查询优化中,索引是一种重要的工具,可以提高查询性能。然而,并不是所有的情况下都适合使用索引。 以下是一些情况下(收集整理)不建议使用索引: 更新频繁的列:索引会占用数据库资源,当列经常被更新时,索引可能会变得过时,导致查询性能下降。 小数值类型:对于…...
RISC-V/ARM mcu OpenOCD 调试架构解析
Risc-v/ARM mcu OpenOCD 调试架构解析 最近有使用到risc-v的单片机,所以了解了下risc-v单片机的编译与调试环境的搭建,面试时问到risc-v的调试可参看以下内容。 risc-v根据官方的推荐,调试器服务是选择OpenOCD,DopenOCD(开放片上…...
HackTheBox-Mist
整体思路 端口扫描->Pluck CMS组件文件读取漏洞->文件上传获取shell->创建指向exe的快捷方式来提权-> 信息收集&端口利用 namp -sSVC 10.10.11.17目标只开放了80端口,将mist.htb加入到hosts文件后,访问mist.htb Pluck CMS文件读取 在…...
游戏引擎中的声音系统
一、声音基础 1.1 音量 声音振幅的大小 压强p:由声音引起的与环境大气压的局部偏差 1.2 音调 1.3 音色 1.4 降噪 1.5 人的听觉范围 1.6 电子音乐 将自然界中连续的音乐转换成离散的信号记录到内存中 采样 - 量化 - 编码 香农定理:采样频率是信…...
wordpress手机导航栏/seo外链推广平台
基础IO: c库文件IO操作接口:(详细查看c语言中的文件操作函数总结:https://www.cnblogs.com/cuckoo-/p/10560640.html) fopen 打开文件 fclose 关闭文件 fread 读取文件 fwrite 写入文件 fseek 移动跳…...
b2c网站平台建设/我是做推广的怎么找客户
一份睡袋使用养护全攻略送给爱户外的你具体如下:一、如何验货:睡袋产品都是成品,仅凭外观很难辨其优劣,如何验货,教你几招:一看 看产品标签信息是否齐全;二按 将羽绒睡袋放松铺平,让…...
济南疫情最新通报/西安企业seo外包服务公司
一、继承 1.什么继承 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类。 2.为什么要有继承 子类会“”遗传”父类的属性,从…...
亚马逊国际站官网/北京营销推广网站建设
目录 一、总结 一句话总结:a、单元测试的测试代码在test文件夹下,和源码不在同一个文件夹下1、JUnit中什么时候使用assertTrue,assertFalse语句?2、单元测试是什么?二、java使用Junit测试实例 junit是什么?…...
管理网站怎么做/网站seo推广方案
3. KingbaseES 驱动在 .NET 平台的配置 本节主要介绍在 .NET 平台下如何配置 KingbaseES 提供的 .NET 驱动,以及 KingbaseES 提供的 Entity Framework 6 驱动。 KingbaseES .NET Data Provider 的配置 KingbaseES Entity Framework 6 介绍与配置 KingbaseES Enti…...
网站基础功能介绍/衡阳网站优化公司
【反欺诈场景剖析】是威胁猎人黑灰产报告的一个系列,我们希望通过对反欺诈实际场景的剖析出发,帮助企业发现业务风控过程重的核心关键点。此篇主要介绍反欺诈场景中虚假账号的产生和流转规模化的背后,以及如何对黑灰产做恶的关键节点的监控来…...