redis学习-密码管理
前言
redis存在于内存中,这意味着redis每秒可以接收十万数量级的攻击,因此处于安全考虑,redis提供了密码验证。(每秒十万次,暴力破解一个密码岂不是也很简单,设定密码能抵御攻击吗?)
redis设置密码有两种方式
- 修改配置文件,重启后生效,永久有效
- 通过指令修改,立即生效,重启后失效
方法一:修改配置文件
通过修改redis.conf
文件的requirepass
属性配置密码。
[root@VM-0-4-centos etc]# vim redis.conf
# 搜索并配置密码
requirepass 123
# 保存后启动redis
[root@VM-0-4-centos etc]# cd ../bin
[root@VM-0-4-centos bin]#/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
24081:C 06 Aug 2020 20:14:16.348 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
24081:C 06 Aug 2020 20:14:16.348 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=24081, just started
24081:C 06 Aug 2020 20:14:16.348 # Configuration loaded
登录含密码的redis
- auth pass指令验证登录
# 启动客户端,输入任意指令提示需要验证密码
[root@VM-0-4-centos bin]# ./redis-cli
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
# 使用auth pass指令输入密码即可正常使用
127.0.0.1:6379> auth 123
OK
127.0.0.1:6379> keys *
(empty list or set)
- -a pass 参数验证登录
[root@VM-0-4-centos bin]# ./redis-cli -a 123
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> keys *
(empty list or set)
方法二:客户端修改
登录客户端并使用config set requirepass pass指令设定密码
[root@VM-0-4-centos bin]# ./redis-cli
127.0.0.1:6379> config get requirepass // 此时密码为空
1) "requirepass"
2) ""
127.0.0.1:6379> config set requirepass 123 // 设定密码123
OK
127.0.0.1:6379> config get requirepass // 设定后立即生效,输入指令需要先验证密码
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123
OK
127.0.0.1:6379> config get requirepass // 验证密码后查询pass已设定为123
1) "requirepass"
2) "123"
重启后密码失效
127.0.0.1:6379> quit
[root@VM-0-4-centos bin]# ps -ef|grep redis
root 25456 1 0 20:23 ? 00:00:00 /usr/local/redis/bin/redis-server 127.0.0.1:6379
root 26922 23009 0 20:33 pts/0 00:00:00 grep --color=auto redis
[root@VM-0-4-centos bin]# kill -9 25456 // 关闭redis服务
[root@VM-0-4-centos bin]# ps -ef|grep redis
root 26954 23009 0 20:33 pts/0 00:00:00 grep --color=auto redis
[root@VM-0-4-centos bin]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf // 重启redis服务
26967:C 06 Aug 2020 20:33:42.684 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
26967:C 06 Aug 2020 20:33:42.684 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=26967, just started
26967:C 06 Aug 2020 20:33:42.684 # Configuration loaded
[root@VM-0-4-centos bin]# ./redis-cli
127.0.0.1:6379> config get requirepass // 此时密码为空,前文设定密码已失效
1) "requirepass"
2) ""
END
redis虽然提供了密码支持,但实际运用中,redis常用于内网环境中,设定密码除了增加操作量,并无其他用途。
具体是否需要设定密码,可以从系统的数据安全性,服务器安全性,网络安全性等方面综合考虑后决定。