redis密码设置、访问权限控制等安全设置

redis做为一个高速数据库,在互联网上,必须有对应的安全机制来进行保护,方法有2,以下。html

1.比较安全的办法是采用绑定IP的方式来进行控制redis

 请在redis.conf文件找到以下配置
# If you want you can bind a single interface, if the bind option is not
# specified all the interfaces will listen for incoming connections.
#
# bind 127.0.0.1

把# bind 127.0.0.1前面的 注释#号去掉,而后把127.0.0.1改为你容许访问你的redis服务器的ip地址,表示只容许该ip进行访问数据库

这种状况下,咱们在启动redis服务器的时候不能再用:redis-server,改成:redis-server path/redis.conf 即在启动的时候指定须要加载的配置文件,其中path/是你上面修改的redis配置文件所在目录,这个方法有一点不太好,我不免有多台机器访问一个redis服务。安全

2.设置密码,以提供远程登录服务器

打开redis.conf配置文件,找到requirepass,而后修改以下:并发

requirepass yourpassword
yourpassword就是redis验证密码,设置密码之后发现能够登录,可是没法执行命令了。ui

命令以下:
redis-cli -h yourIp -p yourPort//启动redis客户端,并链接服务器
keys * //输出服务器中的全部key
报错以下
(error) ERR operation not permitted


这时候你能够用受权命令进行受权,就不报错了spa

命令以下:
auth youpassword

另外,在链接服务器的时候就能够指定登陆密码,避免单独输入上面受权命令命令行

命令以下:
redis-cli -h  yourIp-p yourPort  -a youPassword

 

除了在配置文件redis.conf中配置验证密码之外,也能够在已经启动的redis服务器经过命令行设置密码,但这种方式是临时的,当服务器重启了密码必须重设。命令行设置密码方式以下:code

config set requirepass yourPassword

 

有时候咱们不知道当前redis服务器是否有设置验证密码,或者忘记了密码是什么,咱们能够经过命令行输入命令查看密码,命令以下:

config get requirepass

 

若是redis服务端没有配置密码,会获得nil,而若是配置了密码,可是redis客户端链接redis服务端时,没有用密码登陆验证,会提示:operation not permitted,这时候能够用命令:auth yourpassword 进行验证密码,再执行 config set requirepass,就会显示yourpassword

因为redis并发能力极强,仅仅搞密码,攻击者可能在短时间内发送大量猜密码的请求,很容易暴力破解,因此建议密码越长越好,好比20位。(密码在 conf文件里是明文,因此不用担忧本身会忘记)

本文参考以下文章,并根据本身的实际使用经验进行了加工,细化。转载请注明:http://www.cnblogs.com/langtianya/p/5189234.html 

参考:redis密码设置、访问权限控制等安全设置

相关文章
相关标签/搜索