首页

9.4Redis的安全管理

关灯 护眼    字体:

上一章 目录 下一章




Redis默认没有密码,并且只能本机访问。使用redis-cli连上以后可以执行任意命令。如果要开放外网连接,则需要设置密码,同时禁用危险命令或者对危险命令进行改名。



9.4.1  实例42:设置密码并开放外网访问


实例描述

修改Redis的配置文件,设置Redis的访问密码,并允许外网通过密码访问Redis中的数据。

1.设置密码

(1)打开Redis的配置文件,搜索关键字“requirepass”,如图9-25所示。

(2)将“requirepass”这一行的注释去掉,这一行的“foobared”就是默认密码,可以改成自己的密码,如图9-26所示。

图9-25  在配置文件中找到requirepass

图9-26  启用并修改密码

(3)保存配置文件并重启Redis,可以发现redis-cli连上Redis以后无法正常使用了,如图9-27所示。

图9-27  没有密码redis-cli无法使用Redis

(4)如要正常使用Redis,则需要在redis-cli连接时加上一个“-a”参数:

(5)运行效果如图9-28所示。

图9-28  使用“-a”命令连上Redis即可使用

对于Python,如果要连接设置有密码的Redis,则应在连接参数中添加密码,见代码9-20。

代码9-20  用Python连接有密码的Redis

2.开发外网访问

(1)打开配置文件,搜索“bind”找到配置网络的位置,如图9-29所示。

图9-29  配置网络来源的项

(2)直接把这一行注释,即可从外网访问Redis。

●  在redis-cli中,如果要访问外网的Redis,则需要指定地址和端口,格式如下:

redis-cli  –h  Redis地址  –p  端口  –a  密码

例如:

redis-cli  –h  192.168.2.10  –p  3129  –a  kingnameisgenius163

●  在Python中,如果要访问外网的Redis,则需将代码修改为:

import  redis

client  =  redis.Redis(host='192.163.2.10',  port=3129,  password='kingnameisgenius')



9.4.2  禁用危险命令


Redis中默认开启了一些非常高权限的命令。使用这些命令,轻则清空Redis,重则直接写入挖矿木马甚至是SSH  Key公钥,从而控制服务器。

通过修改Redis的配置文件,可以对一些危险命令进行改名或者禁用,从而降低安全风险。

(1)打开Redis配置文件,添加以下几行内容:

代码9-21  重命名Redis的危险命令

(2)如果把命令重命名为空字符串,表示禁用这个命令。

对于一些比较危险但可能会用到的命令,可以把它改名;对于一些特别危险的命令,可以禁用。



本章小结


本章主要介绍了Redis的哈希表、“发布/订阅”模式、有序集合和安全设置。

哈希表在储存大量数据时比字符串更好。

“发布/订阅”模式可以方便简单地实现一对多的消息推送。

有序集合可以实现计分板或排行榜。

在学习本章内容时,建议使用Python来测试,因为redis-cli对于这些复杂数据结构和模式的显示方式不太直观。

如果需要开放  Redis  的外网访问权限,则一定要设置密码并禁用一些危险的命令(或将这些命令改名),从而降低安全风险。



第4篇  商业实战


第4篇分为4章,综合利用前面9章所学到的关于MongoDB与Redis的知识,搭建一个类似“知乎”的知识问答网站。

第10章会实现网站的基本功能,包括查看已有问题、提问或者回答问题、对问题或者答案“点赞”或者“点踩”。

第11章会实现权限管理功能,包括注册账号并用自己的账号登录网站、修改或者删除自己的问题或者回答。

第12章会实现问题的标签功能,能够根据标签筛选问题。同时还会实现对问题和答案进行排序,根据问题或者答案的评分来动态调整问题或答案的顺序。

第13章会讨论在用户数据极大时,如何有效地实现“去重”功能,以及网站在安全方面的建议。




上一章 目录 下一章