Redis 配置密码认证
Posted 心静`问己
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 配置密码认证相关的知识,希望对你有一定的参考价值。
在上一篇文章《Redis 部署》中介绍了Redis的基础安装,其中简单介绍了Redis配置文件redis.conf里面的参数,Redis在市场上应用越来越普及这样有好处也里弊端,例如好处有:大量的使用会使用Redis越来越稳定(BUG快速解决)、解决方案越来越多也越来越稳定、相关资料也越来越多等等好处,然后问题也越来越明显,例如:Redis的安全问题日益提升,安全包括两个方面:①外部的安全,包含:攻击、入侵、挂毒(例如:Redis的挖矿病毒已经不在是个例)等,②内部的安全:离职人员的恶意删除数据或者无意误删等操作。
来自外部的安全风险,我们可以通过两个方面来解决:首先通过防火墙来指定IP访问Redis(Redis一般都是被服务直接调用,而不是客户直接调用,那么服务基本都是固定IP,因此这是一个可行的方案),然后修改默认的Redis端口(强行推荐,由于对Redis进行Telnet操作不会有任何提示符,所以黑客如果通过nmap扫描+Telnet试探等都很难准确定位该端口具体运行的服务)。如果这两个手段基本可以防御80%以上的恶意攻击或者扫描。
最后来自内部(也有可能是外部)的安全风险就是:直接连接Redis就登录,可以进行删除数据操作(一个flushall命令,干掉半年的辛苦)。该解决方案是给Redis配置访问密码。Redis配置访问密码有两种方式:①、修改Redis的配置文件redis.conf。②、在Redis中直接运行配置密码命令。下面将详细讲解这两种方法。
通过Redis命令进行设置密码(注意:该方法在重启Redis后密码将失效):
首先观察设置密码前,只要使用客户端连接Redis就可以进行所有操作。如下:
#连接Redis命令 /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379> KEYS * (empty list or set) 127.0.0.1:6379> set user ray OK 127.0.0.1:6379> KEYS * 1) "user" 127.0.0.1:6379>
然后,通过命令进行设置密码。如下:
#首先连接Redis,然后执行CONFIG SET requirepass userpassword /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379> KEYS * 1) "user" 127.0.0.1:6379> CONFIG SET requirepass 123.com OK 127.0.0.1:6379> KEYS * (error) NOAUTH Authentication required. 127.0.0.1:6379> quit #从上面可以看到密码设置成功,同时一旦密码设置成功,刚刚建立的连接将不能进行任何权限操作 #使用-a userpassword 登录Redis /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a 123.com 127.0.0.1:6379> KEYS * 1) "user" 127.0.0.1:6379> set job it OK 127.0.0.1:6379> KEYS * 1) "job" 2) "user" 127.0.0.1:6379> #通过Redis登录后可以看到可以进行任何操作
通过Redis配置文件redis.conf进行设置密码(注意:该方法设置密码后需要重启Redis才生效):
首先,编辑redis.conf文件,找到下来内容:
# requirepass foobared
然后,把注释(#)去掉,并把foobared修改为直接的密码字段。如下:
requirepass ray.com
最后,重启Redis,登录连接。如下:
#重启Redis服务 service redis restart Stoping redis-server ...... Starting redis-server ..... #不使用认证连接,发现什么有权限的命令都操作不了,提示权限认证问题 /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379> KEYS * (error) NOAUTH Authentication required. 127.0.0.1:6379> quit #使用-a userpassword 认证登录,然后可以正常操作所有命令 /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a ray.com 127.0.0.1:6379> KEYS * 1) "user" 2) "job" 127.0.0.1:6379>
至此,Redis密码配置已完成,但是需要特别注意的是:使用命令配置密码,在Redis重启以后将会失效。而使用配置文件设置密码,将需要重启Redis(在生产环境中一般不允许重启服务)。所以最好的方法是两者结合,修改Redis配置文件设置密码,同时使用命令配置相同的密码,这样既可以立即生效也不用重启Redis。
以上是关于Redis 配置密码认证的主要内容,如果未能解决你的问题,请参考以下文章