redis--安全

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis--安全相关的知识,希望对你有一定的参考价值。

参考技术A [TOC]

redis被设计成仅有可信环境下的可信用户才可以访问。这意味着将redis实例直接暴露在网络上或者让不可信用户直接访问redis的是不安全的。

==换句话说,redis不保证redis的安全,而是由使用者保证的。==

在redis的配置文件中,可以配置==bind==的ip,让redis只接受绑定的ip的客户端。

一般来说,如果redis需要禁止外部访问,只需bind本地IP即可。

bind 127.0.0.1

也可以绑定指定的网段:

bind 192.168.1.100 10.0.0.1

在redis的配置文件中可以配置

requirepass password 来配置验证密码。

当配置了验证密码后,在开始执行其他命令之前需要执行 auth <password> 来验证。

使用 config get requ* 获取配置信息

发现有两个返回,分别是 requirepass 和空,意思是,requirepass现在的配置为空,表示不启用

使用 config set requirepass mypassword 设置密码是mypassword

然后我们退出客户端,然后重新登录

连接是没有问题的,但是却无法执行任何命令。

使用auth验证通过后,才能执行redis的命令。

但是这种方式也存在问题:

redis每秒可以尝试15W的密码,所以如果密码长度比较短的话,很短时间就会被暴力破解。

735 091 890 625 / 150000 = 4 900 612.6 秒 = 81 676.88 分 = 1361.28时 = 56.72天

看起来还不错吧,假设一个机器有4个核心,8线程。那么在一个机器上同时开8个客户端,每个客户端负责尝试指定范围的密码组合。

56.72 / 8 = 7.09 天

如果有多台机器,那么速度会更快。假设有100台机器,每台的机器配置都一样:

7.09 / 100 = 15.696 分钟

==你设置的密码,在强大的算力下,只需15分钟的时间就会被破解。==

当然,这只是理论上的,实际上还需要考虑网络,多线程切换等因素影响。

==AUTH 命令在网络中是明文传输的。==

如果你登录了redis,意味着,redis中全部的命令你都能使用。对于普通用户来说,使用一些高危的操作很危险,所以需要对普通用户禁用一些命令。

redis是通过==命令重命名==来实现命令禁用的

rename-command source-command dest-command

通过配置 rename-command 将 source-command 重命名为 dest-command

后面想要使用 source-command 只能输入 dest-command 来使用了。

对于普通用户来说,不知道 dest-command ,就无法使用 source-command 了。

如果 dest-command 设置为空,表示任何人都无法使用 source-command 了。

以上是关于redis--安全的主要内容,如果未能解决你的问题,请参考以下文章

redis--安全

Redis 安全

Redis 安全

Redis 安全

如何保证Redis性能与安全?看这篇Redis数据库性能测试及安全优化配置指南就够了

Redis 如何高效安全删除大 Hash Key