redis常见安全防护策略及故障排除

1.Redis中线上使用keys *命令,也是非常危险的。因此线上的Redis必须考虑禁用一些危险的命令,或者尽量避免谁都可以使用这些命令,Redis没有完整的管理系统,但是也提供了一些方案。

修改 redis.conf 文件,添加

rename-command FLUSHALL ""
rename-command FLUSHDB  ""
rename-command CONFIG   ""
rename-command KEYS     ""
rename-command SHUTDOWN ""
rename-command DEL ""
rename-command EVAL ""

然后重启redis。 重命名为"" 代表禁用命令,如想保留命令,可以重命名为不可猜测的字符串,如: rename-command FLUSHALL 9741c7fcae9f869d

2.redis内存增长过快,查询哪个key值占用内存

redis是基于内存的KV数据库,内存作为存储介质,关注其内存的使用情况是一个重要指标,解析其内部的存储信息是给出优化方法和维护的最基本要求。

解析内存有二种方法:

第一个是通过scan遍历所有key,针对每个key进行分析(memory usage);

第二个是基于RDB文件进行所有key的分析(redis-rdb-tools)。

本文将介绍如何使用rdbtools工具。
rdbtools工具包括了3个可执行文件:
rdb -- 解析整个rdb文件

redis-memory-for-key -- 解析server里的单个key

redis-profiler --解析rdb文件成html格式


rdb是rdbtools工具包其中之一的工具,也是解析dump.rdb文件的工具:分析内存并将数据导出到JSON,Rdbtools是Redis的dump.rdb文件的解析器,解析器生成类似于xml。rdbtools提供了以下实用程序:

  1. 生成所有数据库和键中数据的内存报告
  2. 将转储文件转换为JSON
  3. 使用标准差异工具比较两个转储文件

安装 rdbtools:

1.安装pip:
yum -y install epel-release python-pip
pip install --upgrade pip

2.安装rdbtools (python-lzf :加快解析速度)
pip install rdbtools python-lzf 

安装完后拷贝rdb文件到一台测试机器上,尽量不要在线上运行。
用rdbtools工具生产内存报告,命令是 rdb -c memory,例子:
sudo rdb -c memory  ./dump.rdb >test.csv
.报告生成后,结合用linux sort命令排序,根据內存列排序,找出最高的key有哪些。例子:
sudo sort -k4nr -t , test.csv > sort.txt
查看sort.txt的结果,一般能得出类似‘my_ranking_list’开头的集合占用最高,排在了前面。若要查看类似‘my_ranking_list’开头的总共占用了多少内存,可以用命令:
sudo cat sort.txt | grep ‘my_ranking_list’ | awk -F ',' '{sum += $4};END {print sum}'

查询到大key就可以分析为什么会越来越大了。

3.redis开启保护模式。

配置文件没有指定bind和密码,开启该参数后,redis只能本地访问,拒绝外部访问。

redis.conf安全设置: # 打开保护模式 protected-mode yes

禁止监听在公网

Redis监听在0.0.0.0,可能导致服务对外或内网横向移动渗透风险,极易被黑客利用入侵。

在redis的配置文件redis.conf中配置如下: bind 内网IP,然后重启redis

4.root权限

使用root权限去运行网络服务是比较有风险的(nginx和apache都是有独立的work用户,而redis没有)

redis crackit 漏洞就是利用root用户的权限来替换或者增加authorized_keys,来获取root登录权限的

使用root切换到redis用户启动服务

useradd -s /sbin/nolog -M redis 
sudo -u redis /<redis-server-path>/redis-server /<configpath>/redis.conf 

5.限制redis 配置文件访问权限 

因为redis密码明文存储在配置文件中,禁止不相关的用户访问改配置文件是必要的,设置redis配置文件权限为600

chmod 600 /<filepath>/redis.conf

6.修改端口

编辑文件redis的配置文件redis.conf,找到包含port的行,将默认的6379修改为自定义的端口号,然后重启redis

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值