大家好,我是非伈,一位php的开发工程师,记录一下我学习的经历和成长。如果有什么不正确的地方,欢迎大家指点。
因为,之前学习的时候没有写过微博。这次写微博是因为,公司这边组成了学习小组,小组通过微博的方式进行比赛。这边也想了一些,写微博,既可以增加自己的写作能力,又可以深化了解自己的知识,何乐而不为呢?
这次我学了redis的安全问题,之前的学习,我这边会抽时间补上的!

这次,我根据微信读书里面的一本书叫《Redis入门指南》进行学习。书中对于安全,有这么几个好用的招数。

一、可信的环境
     原话:Redis的安全设计是在“Redis运行在可信环境”这个前提下做出的,在生产环境运行时不能允许外界直接连接到Redis服务器上,而应该通过应用程序进行中转,运行在可信的环境中是保证Redis安全的最重要方法。

    我这边是这么理解的:就是在服务器上部署redis时,将redis的访问ip默认指向本地,只有本地,通过程序的校验,才能通过本地自己写的代码进行访问。就可以防止其他ip的访问了。

    使用:bind 127.0.0.1 

 

二、数据库密码

   通过配置文件中的requirepass参数为Redis设置一个密码。设置命令:requirepass TAFK(@~!ji^XALQ(sYh5xIwTn5D$s7JF。

通过redis输入密码进行链接:redis> AUTH TAFK(@~!ji^XALQ(sYh5xIwTn5D$s7JF。

密码是肯定可以破解的。所以,需要复杂,并且经常更换。

 

三、命名命令

Redis支持在配置文件中将命令重命名,比如将FLUSHALL命令重命名成一个比较复杂的名字,以保证只有自己的应用可以使用该命令。就像这样:rename-command FLUSHALL oyfekmjvmwxq5a9c8usofuo369x0it2k

这个应该是将存入的名称进行复杂化命名,程序根据一套规则进行重命名,到时候,人都不知道哪个是哪个,只能通过程序进行查找。

 

以上就是在微信读书的这本书上介绍的三种方法,如果想要了解redis的朋友,可以看一下这个入门,讲的还是很详细的,还有例子等等。

 

在看这本书的同时,我还翻阅了别人的博客,学到了另一种方案。
 

四、限制redis文件目录访问权限
设置redis的主目录权限为700;如果redis配置文件独立于redis主目录,权限修改为600,因为Redis密码明文存储在配置文件中。


$chmod 700 /var/lib/redis #redis目录 $chmod 600 /etc/redis/redis.conf #redis配置文件


将这个文件目录的访问权限进行限制,就可以不让别人能够修改redis数据文件。就是只读模式。

五、其它

1. 监控redis安全状态,cmdstat_auth cmdstat_flushdb/flushall监控报警。

2. Redis设计旨在提供高性能的KV服务,至少目前在权限访问控制和数据持久化方面比较弱化。所以禁止在Redis中存储或缓存敏感的明文数据。

3. 针对之前Redis版本,默认无bind和密码设置存在很大安全风险;Redis3.2版本提出新特性protected mode(保护模式)。