我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redis数据库安全详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Redis数据库安全详解

前言

本篇文章基于的Redis 的环境为: redis_version:7.0.5

文档内容均为学习Redis 官方文档心得.

Redis相信大家都或多或少都听说过吧,作为内存数据库的代表, 但是近些年Redis 被攻击的典范也是越来越多,我们将如何防护Redis 安全呢? 跟着我们的脚本,来看看这篇文章吧.

对于Redis而言,我们设置的方法大概有以下几种

  • 通过redis.conf 设置。
  • 在已经启动的Redis 中使用CONFIG SET 来设置。

如之前所述,安全方面归根结底,总结一句话就是:最好的安全设置就是最小化权限。

那我们来看下,Redis 有哪些安全设置呢?

开放最小化很重要

作为Redis 服务器而言, 应该仅允许受信任的客户端访问,其他访问都应该拒绝,因此也善用防火墙相当重要,当然这个防火墙不是在Redis 是做不了的,应该在Redis 所属的机器进行设置。

若该Redis 是自建于本地实体机中,那么应该考虑防火墙软件,例如: iptablesfirewalld 等。若是存在于各云厂商实例中(ECS ),那么应该善用云厂商提供的防火墙。

那我们Redis 在这一步就什么也不能做了么? 不是的,在Redis 配置中,有一个配置参数为bind ,该参数选项是将Redis对相应的网卡监听,若配置如下:

bind 127.0.0.1

则监听在本地的回环地址上,若该值为空,则监听所有的网卡(3.2版本提供的功能)。

若想监听在多个网卡上的话,ip 地址直接可以使用空格分开即可,例如:

bind 127.0.0.1 10.0.2.15

则该配置则是监听到127.0.0.1 以及 10.0.2.15 网卡上。

在已经启动的Redis 中,想查看Redis 监听到哪些网卡上,除了查看所属机器的网路状态外,还可以通过CONFIG GET bind 来获取。

除此之外,Redis还为我们提供了"保护模式",即配置: protected-mode ,默认为yes 。请不要关闭它,因为它能够检测到启动后的Redis 是否安全,其检测策略为:当Redis 没有设置密码的时候,从外部进行访问,这就会触发它的保护模式,即向访问用户提示信息:

Redis is running in protected mode because protected mode is enabled and no password is set for the default user.

当然网上很多博客提供的最快解决如上问题的方法是关闭其保护模式,请不要这么做.

认证不可少

接上一段落,若Redis 想从外部进行访问,除了关闭保护模式以外,还可以设置Redis 密码. 在Redis 中,通过配置requirepass 来设置密码,不过设置密码应当注意一下,Redis 密码不应该设置为若密码,建议设置为复杂密码.

原因如下:

  • 客户端在校验身份的时候,使用的是auth 命令,可以理解为是Redis 的普通命令,即能够被无限执行,换言之有被爆破的可能.
  • redis-cli可以通过加载客户端的redis.conf 文件来校验服务器, 不需要管理员记住密码.

如上所属,客户端在校验身份的时候,发送的是auth 命令,该命令可以理解为Redis 的普通命令,是没有被加密的, 若请求报文被监听了,也有泄密的可能. 所以尽可能的使用加密进行通信,即: SSL/TLS.

防止管理员误操作也很重要

Redis中有一些非常危险的命令,例如: FLUSHALL ,FLUSHDB ,该命令前者是清空所有的数据,后则是清空当前库的数据, 在日常工作中,如果误操作了,那后果不堪设想. 还有一些命令,运行后可能会导致系统阻塞,非常不建议使用,例如:KEYS ,HGETALL等.

基于上述情况,禁用某些命令来保证系统安全是非常有必要的, 好在Redis给我们提供了方法. 若想禁用某些命令,可以在其服务器redis.conf 配置文件中,使用rename-command 指令,例如:

rename-command FLUSHALL ""
rename-command FLUSHDB ""

若设置为空的话,则是禁止使用命令.修改配置,启动服务器后,若再使用这些命令,即会报错: ERR unknown command .

若并非想禁用命令,而是想重命名命令,那么将空字符串修改为重命名后的命令即可,例如:

rename-command KEYS FINDALL

设置后,即可使用FINDALL 来代替KEYS , 案例如下:

127.0.0.1:6379> set juejinNmae pdudo
OK
127.0.0.1:6379> FINDALL *
1) "juejinNmae"
127.0.0.1:6379> 

担心网络被监听? 开启TLS之旅吧

开启ssl/tls 后势必会降低Redis 的吞吐量,所以是否采用该配置主要还是看业务情况,若业务想要避免被抓包等,适合开启该设置,若仅在某一内网使用,那就没必要的.

Redis 6.0 以后启用了SSL/TLS ,但是注意, 若想使用SSL/TLS 的话,在编译的时候需要指定make BUILD_TLS=yes , 这里需要注意的是, 客户端和服务器都需要编译才行.

这里简单举个例子如何启动Redis吧.

证书生成

openssl genrsa -out ca.key 2048
openssl req -new -key ca.key -out ca.csr
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

数据库启动

redis-server --tls-port 6379 --port 0  --tls-cert-file ca.crt --tls-key-file ca.key  --tls-ca-cert-file ca.crt

客户端连接

redis-cli --tls --cert ca.crt --key ca.key  --cacert ca.crt

在使用SSL/TLS 后,我们需要禁用非TLS 端口并且开启SSL/TLS 端口后,可以直接设置:

port 0
tls-port 6379

这样的话,通过6379 连接,默认情况下是走的SSL/TLS

总结

安全一直是大家比较关心的话题,在Redis 中,我们不仅仅要防外部入侵, 还要知道, 技术人员的误操作也许破坏的更为严重, 始终需要记住, 权限最小化.不仅对外,也需要对内.

以上就是Redis数据库安全详解的详细内容,更多关于Redis数据库安全的资料请关注我们其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redis数据库安全详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

在CentOS 7环境下安装Redis数据库详解

正如我们所知的那样,Redis是一个开源的、基于BSD许可证的,基于内存的、键值存储NoSQL数据库。Redis经常被视为一个数据结构服务器,因为Redis支持字符串strings、哈希hashes、列表lists、集合sets、有序集so
2022-06-04

Redis安全策略详解

目录缓存穿透缓存击穿缓存雪崩布隆过滤器基于布隆过滤器解决缓存穿透问题缓存穿透高并发情况下查询一个不存在的key产生的背景(原因):缓存穿透是指使用不存在的key进行大量的高并发查询,导致缓存无法命中,每次请求都要都要穿透到后端数据库查
2022-07-27

【MySQL数据库】最全安装过程及配置详解

🧛‍♂️iecne个人主页::iecne的学习日志 💡每天关注iecne的作品,一起进步 💪一起学习,必看iecne 🐳希望大家多多支持🥰一起进步呀
2023-08-16

Android数据库安全permission

android是基于linux的操作系统,linux本身提供了强大的安全机制。1. 应用程序沙箱,将你的代码、数据与其他app隔离2. 应用框架层提供了“鲁棒”的加密、权限以及安全的进程间通信机制3. ASLR, N
2022-06-06

阿里云数据库安全问解析

随着云计算技术的快速发展,越来越多的企业选择将数据库迁移到云上,其中阿里云作为国内领先的云计算服务提供商,其数据库服务受到了广泛的关注。然而,最近有关阿里云无法登陆数据库的安全问题引发了人们的担忧。本文将对这一问题进行详细的解析,以期为用户提供更全面的信息。一、阿里云数据库安全问题的出现阿里云数据库安全问题的出现
阿里云数据库安全问解析
2023-11-18

Redis中键和数据库通用指令详解

目录一、Redis键(key)通用指令1、key基本操作2、时效性控制3、查询模式4、其它操作二、数据库通用指令1、基本操作2、相关操作一、Redis键(key)通用指令可以参考菜鸟教程:Redis 键命令用于管理 redis 的键ke
2022-08-10

linux 常见的标识与Redis数据库详解

xxx@xxx:~$ : 第一个 xxx 只的是 用户名 第二个 xxx 代表的是 HOST主机 ~ : 当前用户的根, 根的位置在 /home/用户名 $ : 代表当前用户是一个普通用户 # : 代表当前用户是超级用户 查看当前命令所在的
2022-06-03

Redis02 使用Redis数据库(String类型)全面解析

一 String类型首先使用启动服务器进程 :redis-server.exe 1. Set设置Key对应的值为String 类型的value。例子:向 Redis数据库中插入一条数据类型为String 的记录。在客户端输入命令:C:sof
2022-06-04

阿里云数据库Redis价格表全面解析

随着云计算技术的发展,数据库服务成为了众多企业和个人的必备选择。阿里云作为国内知名的云服务提供商,其数据库服务得到了广泛的认可和使用。特别是Redis,作为一款高性能、开源的内存数据库,已经成为了众多企业数据处理的重要工具。本文将详细解析阿里云数据库Redis的价格表,帮助读者更好地理解阿里云Redis服务的定价
阿里云数据库Redis价格表全面解析
2023-12-09

pg数据库安全配置

数据库安全配置是数据库管理的重要环节之一。安全配置主要包括密码、网络访问控制、审计等。下面会依次讲解在瀚高数据库中如何实现密码相关的安全性配置。1 密码加密存储pg中密码始终以加密方式存储在系统目录中。ENCREPED 关键字没有任何效果, 但被接受向后兼容。
pg数据库安全配置
2018-10-05

编程热搜

目录