Redis进阶-Redis安全相关操作

简介: Redis进阶-Redis安全相关操作

20200307112715522.png


Pre


这里我们主要谈一下使用 Redis 需要注意的安全风险以及防范措施,避免数据泄露和丢失,避免所在主机权限被黑客窃取,以及避免人为操作失误。


port


默认会监听 *:6379,如果当前的服务器主机有外网地址,Redis 的服务将会直接暴露在公网上。 一旦可以被外网直接访问,这何谈数据安全?


咋保护呢?

bind ip

Redis进阶-bind参数详解

运维人员务必在 Redis 的配置文件中指定监听的 IP 地址

增加 Redis 的密码访问限制 requirepass & masterauth


客户端必须使用 auth 指令传入正确的密码才可以访问 Redis,这样即使地址暴露出去了,普通黑客也无法对 Redis 进行任何指令操作.

requirepass passwd


密码控制也会影响到从库复制 ,如果配置了主从或者是集群模式,从库必须在配置文件里使用 masterauth 指令配置相应的密码才可以进行复制操作。

masterauth passwd


  1. 这俩密码必须一致。

command


20200426065613100.png


Redis中有些指令会对 Redis 的稳定以及数据安全造成非常严重的影响。

比如

  • keys 指令会导致 Redis 卡顿 (单线程,需要关注n的量),
  • lushdb 和 flushall 会让 Redis 的所有数据全部清空。
  • config 可以动态修改参数


Redis 在配置文件中提供了 rename-command 指令用于将某些危险的指令修改成特别的名称,用来避免人为误操作。

比如在配置文件的 security 块增加下面的内容:

rename-command keys artisanlovecode


如果还想执行 keys 方法,那就不能直接敲 keys 命令了,而需要键入 artisanlovecode。

如果想完全封杀某条指令,可以将指令 rename 成空串,就无法通过任何字符串指令来执行这条指令了。

rename-command flushall ""


常用的

rename-command FLUSHALL ""
rename-command FLUSHDB  ""
rename-command CONFIG   ""
rename-command KEYS     ""


lua script


  • 必须禁止 Lua 脚本由用户输入的内容 (UGC) 生成,这可能会被黑客利用以植入恶意的攻击代码来得到 Redis 的主机权限。
  • 应该让 Redis 以普通用户的身份启动,这样即使存在恶意代码黑客也无法拿到 root 权限。

SSL proxy


Redis 并不支持 SSL 链接,意味着客户端和服务器之间交互的数据不应该直接暴露在公网上传输,否则会有被窃听的风险。


如果必须要用在公网上,可以考虑使用 SSL 代理。


SSL 代理比较常见的有 ssh,不过 Redis 官方推荐使用 spiped 工具


地址: http://www.tarsnap.com/spiped.html


20200426070243948.png


同样 SSL 代理也可以用在主从复制上,如果 Redis 主从实例需要跨机房复制,spiped也可以派上用场.


小结

我们这里总结了最基本的 Redis 安全防护思路,安全防护措施务必做到位。

相关文章
|
NoSQL 安全 Redis
Redis 安全
10月更文挑战第20天
115 4
|
NoSQL Linux Redis
Redis性能优化问题之想确认Redis延迟变大是否因为fork耗时导致的,如何解决
Redis性能优化问题之想确认Redis延迟变大是否因为fork耗时导致的,如何解决
|
NoSQL Redis
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
456 0
|
缓存 NoSQL Redis
redis管道操作(节省网络IO开销)
pipeline中发送的每个command都会被server立即执行,如果执行失败,将会在此后的响应中得到信息;也就是pipeline并不是表达“所有command都一起成功”的语义,管道中前面命令失败,后面命令不会有影响,继续执行。
187 1
|
NoSQL Java Redis
如何在 Java 中操作这些 Redis 数据结构的基本方法
如何在 Java 中操作这些 Redis 数据结构的基本方法
168 2
|
NoSQL 数据管理 关系型数据库
数据管理DMS操作报错合集之控制台查看Redis时出现乱码是什么导致的
数据管理DMS(Data Management Service)是阿里云提供的数据库管理和运维服务,它支持多种数据库类型,包括RDS、PolarDB、MongoDB等。在使用DMS进行数据库操作时,可能会遇到各种报错情况。以下是一些常见的DMS操作报错及其可能的原因与解决措施的合集。
217 2
|
DataWorks NoSQL Java
DataWorks操作报错合集之数据集成使用公共数据集成资源组写入到redis数据源(使用的是VPC连接),提示以下错误:request action:[InnerVpcGrantVpcInstanceAccessToApp], message:[InvalidInstanceId.怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
存储 NoSQL Go
轻松上手,使用Go语言操作Redis数据库
轻松上手,使用Go语言操作Redis数据库
201 2
|
NoSQL Redis
加速 Redis 操作:掌握管道技术提升性能与效率
加速 Redis 操作:掌握管道技术提升性能与效率
174 2
|
NoSQL Java Redis
【Redis】 Java操作客户端命令——列表操作与哈希操作
【Redis】 Java操作客户端命令——列表操作与哈希操作