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--安全的主要内容,如果未能解决你的问题,请参考以下文章