迹忆博客
当前位置: 主页 > 学无止境 > 数据库 > 文章

Redis密码验证命令AUTH

发布时间: 2016-05-11 作者: 迹忆 浏览次数:

Redis在安全方面并没有做太大的优化,而是在性能和易用性方面下了很大的功夫。Redis一个很简单的安全方式就是密码验证,这需要用到AUTH命令。下面我们就来看看如何使用这个命令。

在安装完成Redis以后,默认情况下是不需要验证密码的。开启Redis服务以后,可以直接通过客户端连接Redis,并进行相应的操作。

# redis-server   //开启redis服务
# redis-cli    //使用客户端连接
redis> get mykey
“onmpw”   //返回的结果

上面是默认没有密码的情况下进行的操作。下面我们开启密码验证。

对于Redis开启密码验证有两种方式:一种是通过命令行直接设置密码,另一种方式是在redis.conf配置文件中添加密码。

通过命令行直接设置密码

通过这种方式设置的密码仅在当前进程下有效。也就是说,如果我们重启了Redis服务,先前我们设置的密码就不存在了。使用方式如下:

# redis-cli
redis> get mykey
“onmpw” //返回的结果   我们还没有设置密码,所以这里不用验证就可以执行相应的命令
redis> config set requirepass onmpw123
redis> get mykey
(error) NOAUTH Authentication required. //错误信息
redis> auth onmpw123  // 通过auth命令 验证密码
redis> get mykey
“onmpw”   //这里我们看,是不是又能得到我想要的结果了

通过上面的例子,我们可以了解到如何通过命令行来设置密码以及如何通过命令AUTH来进行密码的验证。重启服务以后密码失效。从上面的例子中我们看到有个关键字 requirepass(如果对于vim操作不熟悉,大家可以参考《vim常用命令总结》) ,设置密码需要用到它。并且在下面的通过配置文件来设置密码同样也需要requirepass。

在redis.conf配置文件中添加密码

接下来我们介绍如何在redis.conf中添加密码。其实很简单,在Redis根目录下面存在redis.conf文件,进入Redis根目录,使用vim 编辑该文件。并且查找 requirepass,定位到这一行,并且将前面的#去掉,修改密码。部分内容如下:

################################## SECURITY ###################################
# Require clients to issue AUTH <PASSWORD> before processing any other
# commands.  This might be useful in environments in which you do not trust
# others with access to the host running redis-server.
#
# This should stay commented out for backward compatibility and because most
# people do not need auth (e.g. they run their own servers).
#
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
requirepass onmpw123

我们看,requirepass后面就是我们要设置的密码。这时候保存退出该文件,然后重启Redis服务。注意,这里重启Redis服务需要在redis-server 后面加上参数。这个参数就是redis.conf文件路径。

# redis-server /redis.conf所在目录/redis.conf

只有这种方式才能让redis-server服务去检测redis.conf 文件。如果不加参数的话,那redis.conf中的设置是被忽略无效的。

#redis-cli
redis> get mykey
(error) NOAUTH Authentication required. //错误信息
redis> auth onmpw123  // 通过auth命令 验证密码
redis> get mykey
“onmpw”   //这里我们看,是不是又能得到我想要的结果了

AUTH命令返回值

《Redis协议详解》这篇文章中我们介绍了RESP几种数据类型。对于AUTH命令的返回值使用的是Simple Strings 类型。当密码验证正确的时候响应的数据为

“+OK\r\n”

如果验证不成功返回的值为Errors类型

“-Err invalid password”

总结

通过上面两种方式我们了解了如何给Redis设置密码和用AUTH命令验证密码。但是,因为redis的高性能能在短时间接受非常多的尝试性密码,所以请务必设置一个足够复杂的密码以防止可能的攻击。并且,AUTH命令和其他的Redis命令一样是通过非加密方式发送数据的,因此它没有办法阻止拥有足够的网络访问权限的攻击者进行窃听。要想实现数据加密保护,需要新增保护层,例如我们可以使用SSL代理。

就介绍到这里,很多细节的地方需要大家自己去深究。希望本文对大家有所帮助。

赞助
迹忆博客

除非注明转载,本站文章均为原创,欢迎转载,转载请以链接形式注明出处

本文地址: