[转帖]Redis之安全措施
指令安全
Redis的一些指令会对Redis服务的稳定性及安全性各方面造成影响,例如keys指令在数据量大的情况下会导致Redis卡顿,flushdb和flushall会导致Redis的数据被清空。
Redis在配置文件中提供了 rename-command 指令用于将一些危险的指令修改成其他指令,例如:
-
rename-command keys xxxnxxx
-
复制代码
将 keys 指令修改为 xxxnxxx 指令,这样需要执行 keys 指令的时候,输入 xxxnxxx 才是对的效果,以此可以禁止客户端使用keys。
如果想完全禁用某个指令,可以将其设置成空字符串,这条指令将无法通过任何字符串来执行:
-
rename-command flushdb ''
-
复制代码
更为重要的一个指令是config,该指令不仅可以获取redis的配置信息,还可以直接在线修改密码,十分危险,可以通过rename的方式进行屏蔽禁用。
端口安全
redis默认监听 6379 端口,如果该端口对公网暴露,可能会被一些黑客扫描到,从而使用一些指令、lua脚本对服务器注入一些木马,
可以通过redis的bind配置指定客户端的ip来限制可访问服务端的ip地址,
-
bind 192.168.1.199
-
复制代码
但更建议对redis设置密码,这样即使端口暴露了,没有正确的密码也无法访问,
-
requirepass you password
-
复制代码
密码也会影响到从节点的复制,从节点也需要在配置文件里配置相应的密码进行同步操作。
-
masterauth you password
-
复制代码
Lua脚本安全
使用redis执行lua脚本时,切记不可使用用户输入的内容来动态生成lua脚本,这可能会导致恶意代码植入,影响服务器的稳定性,
同时Redis在服务单运行也应当使用普通用户的权限,这样即使有恶意代码,也无法使用root权限对服务器做攻击。
通信安全
Redis本身不支持SSL连接,如果客户端和服务端的通信是在公网上进行的,那么就有数据被窃听的风险,需要考虑使用SSL代理。
SSL代理常见的有SSH,Redis官方更推荐使用 spiped 工具,其功能单一,使用简单,便于理解,下图是使用 spiped 对ssh通道(ssh通道本身也可能存在风险)进行二次加密。

SSL代理也可以用在跨机房复制上,用来保证通信安全,例如公司有两个机房,突然有个需求需要从A机房访问B机房读取数据,如果使用普通tcp直接访问,就会导致传输的数据暴露在公网上,很不安全,可能会被窃听。

redis本身不支持SSL连接,不过使用spiped作为代理,就可以让数据得到加密。

spiped会在客户端和服务端各启动一个进程,客户端的spiped负责接收到客户端的请求数据,然后加密,在发送给服务端的spiped进程,其收到后进行解密,在传给redis server,反之也是,
每个 spiped 进程都会监听一个端口,用来接收数据,同时还会作为一个客户端将数据转发到目标地址。

spiped 使用
安装(mac):
-
// 安装 spiped
-
-
1. brew install spiped
-
-
// 生成随机密钥文件
-
-
2. dd if=/dev/urandom bs=32 count=1 of=spiped.key
-
-
// 使用密钥文件启动spiped进程,-d 解密输入数据 -s 源地址监听 -t 转发目标地址
-
-
3. spiped -d -s '[192.168.31.141]:6479' -t '[127.0.0.1]:6379' -k spiped.key
-
-
// 使用密钥文件启动spiped进程,-e 加密输入数据 -s 源地址监听 -t 转发目标地址
-
-
4. spiped -e -s '[127.0.0.1]:6579' -t '[192.168.31.141]:6479' -k spiped.key
-
-
复制代码
6579就是本机客户端的spiped进程,可以使用redis客户端对其进行连接然后向它发送指令,6579收到指令后进行加密,转发给 ip为141的6479端口上,
6479接收到数据后进行解密,解密后转发给redis 6379端口上,达到了加密传送的效果。
如下图,可以看到我们使用jedis连接spiped本地进程发送指令,效果与直接连接redis一样,说明spiped起到了代理的作用。

如果使用jedis直接连接服务端的spiped进程,收到了错误的提示,说明我们的数据没有加密直接发送过去,对方无法识别处理,必须走spiped本地进程加密发送过去才可以。

关闭spiped
-
-
1. ps -ef | grep spiped
-
-
501 42506 1 0 11:07下午 ?? 0:00.08 spiped -d -s [192.168.31.141]:6479 -t [127.0.0.1]:6379 -k spiped.key
-
-
501 42616 1 0 11:07下午 ?? 0:00.08 spiped -e -s [127.0.0.1]:6579 -t [192.168.31.141]:6479 -k spiped.key
-
-
2. kill 42506 42616
-
-
复制代码
注意
spiped客户端进程可以支持多个客户端连接的数据转发工作,还可以通过参数限定允许的最大客户端连接数。
但是服务端spiped与redis server只能1对1工作,一个spiped无法转发到多个redis server上去,也就是说要为每个redis server准备一个spiped,这增加了运维成本。
觉得有帮助请帮忙点下,谢谢:https://developer.aliyun.com/article/852005
[转帖]Redis之安全措施的更多相关文章
- [转帖]Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案
Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案 https://www.cnblogs.com/xlecho/p/11834011.html echo编辑整理,欢迎转载,转 ...
- [转帖]Redis、Memcache和MongoDB的区别
Redis.Memcache和MongoDB的区别 https://www.cnblogs.com/tuyile006/p/6382062.html >>Memcached Memcach ...
- [转帖]Redis性能解析--Redis为什么那么快?
Redis性能解析--Redis为什么那么快? https://www.cnblogs.com/xlecho/p/11832118.html echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加e ...
- [转帖]Redis未授权访问漏洞复现
Redis未授权访问漏洞复现 https://www.cnblogs.com/yuzly/p/11663822.html config set dirconfig set dbfile xxxx 一. ...
- [转帖]redis知识点总结
redis面试常问知识点总结 https://www.toutiao.com/i6740199554127233543/ 原创 波波说运维 2019-10-02 00:01:00 概述 今天主要分享一 ...
- [转帖]redis监控工具汇总
redis监控工具汇总 https://www.cnblogs.com/felixzh/p/11170143.html redis-stat redis-stat是一个比较有名的redis指标可视化的 ...
- 开始跟踪Redis啦,开帖
随着NoSql的流行,对这方面的产品开始关注起来,之前一直只是看看.从昨天开始决定把Redis的实现机制啃下来,毕竟代码量也就2W行. 每天花时间看看,记录下成果. here we go.
- 【转帖】 redis 命令 From https://www.cnblogs.com/zhouweidong/p/7550717.html
redis命令详解 redis中添加key value元素:set key value; 获取元素:get key ; redis中添加集合:lpush key value1 va ...
- Python celery和Redis入门安装使用(排难帖)
1.redis安装 下载地址 https://github.com/MicrosoftArchive/redis/releases,选择Redis-x64-3.2.100.msi5.8 MB下载就好了 ...
- [转帖]美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题
美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题 博客分类: redis 运维 redis clustercluster-node-timeoutfailover 转载请 ...
随机推荐
- 如何使用 Node.js Stream API 减少服务器端内存消耗?
摘要:让我们看一个示例,展示在内存消耗方面,采用流的编程思路带来的巨大优越性. 本文分享自华为云社区<使用 Node.js Stream API 减少服务器端内存消耗的一个具体例子>,作者 ...
- Redis Sentinel 源码:Redis的高可用模型分析
摘要:本文通过对Redis Sentinel源码的理解,详细说明Sentinel的代码实现方式. Redis Sentinel 是Redis提供的高可用模型解决方案.Sentinel可以自动监测一个或 ...
- Git工作流中常见的三种分支策略:GitFlow、GitHubFlow和GitLabFlow
摘要:聊一聊Git中的工作流--分支策略. 本文分享自华为云社区<Git工作流中常见的三种分支策略:GitFlow.GitHubFlow以及GitLabFlow>,原文作者:敏捷的小智. ...
- Koa、koa-router、koa-jwt 鉴权详解:分模块鉴权实践总结
首先看koa-router koa-router use 熟悉Koa的同学都知道use是用来注册中间件的方法,相比较Koa中的全局中间件,koa-router的中间件则是路由级别的. koa-rout ...
- 怎么用 Solon 开发基于 undertow jsp tld 的项目?(新)
Solon 开发 jsp 项目是非常简单的,只要改用 jetty 启动器 或者 undertow 启动器,其它也没特别之处了.此文用 undertow + jsp + tld 这个套路搞一把: 一. ...
- Axure 绘制表格添加删除
1.添加按钮:白底黑框,80X30,文本和命名均为"添加"; 2.数据表格(表头):1行5列,灰底黑框的表格作为表头,从左到右每个格子的文字分别为:姓名.性别.年龄.电话和操作: ...
- MB52增强
一.在MB52报表中新增字段 实现如图效果 二.增强实现 MB52程序为RM07MLBS,在程序中找到定义的内表结构bestand,在最后创建隐式增强,加入增强字段,该内表为将来展示的ALV数据 设置 ...
- Codeforces Round #663 (Div. 2) (A~C题,C题 Good)
比赛链接:Here 1391A. Suborrays 简单构造题, 把 \(n\) 放最前面,接着补 \(1\) ~ \(n - 1\) 即可 1391B. Fix You \((1,1)\) -&g ...
- Latex公式排版问题总结
Latex写博客和论文,因为有模板,所以用起来还是很方便的. 但是在实际使用中,由于论文是双栏的,因此比较长的公式在排版时会比较困难.下面对Latex中的公式排版方法做一些记录. Latex公式排版( ...
- HDU - 2897 邂逅明下 (简单博弈)
题目链接: https://vjudge.net/problem/HDU-2897 题目大意: 就是现在一堆石子有n颗, 每次只能拿走p~q颗, 当剩余少于p颗的时候必须一次拿完 拿走最后一颗的人败 ...