Redis密码验证命令AUTH
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代理。
就介绍到这里,很多细节的地方需要大家自己去深究。希望本文对大家有所帮助。
相关文章
在 AngularJS 中添加自定义表单验证
发布时间:2023/04/12 浏览次数:106 分类:Angular
-
本文讨论了有关 AngularJS 自定义验证的所有内容。 AngularJS 自定义验证是一个强大的验证库,允许开发人员创建自定义验证规则。
在 PHP 中设置 PHP_AUTH_USER 和 PHP_AUTH_PW
发布时间:2023/03/29 浏览次数:179 分类:PHP
-
本文演示了在 PHP 中设置 PHP_AUTH_USER 和 PHP_AUTH_PW 的方法。