赵志强
Learn more than progress
赵志强的博客
Redis 风险控制

注意
操作时建议做好记录或备份

打开保护模式

Redis 默认开启保护模式。要是配置里没有指定 bind和密码,开启该参数后,Redis 只能本地访问,拒绝外部访问。

编辑 Redis 的配置文件 redis.conf,设置配置项 protected-mode

protected-mode yes

禁止使用 root 用户启动

使用 root 权限去运行网络服务是比较有风险的(Nginx 和 Apache 都是有独立的 work 用户,而 Redis 没有)。Redis Cackit 漏洞就是利用 root 用户的权限来替换或者增加authorized_keys,来获取 root 登录权限的。

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

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

禁止监听在公网

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

编辑 Redis 的配置文件 redis.conf,设置配置项 bind

bind 127.0.0.1

或者内网 IP,然后重启 Redis。

禁用或者重命名危险命令

Redis 中线上使用 keys * 命令,也是非常危险的。因此线上的Redis 必须考虑禁用一些危险的命令,或者尽量避免谁都可以使用这些命令,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 joYAPNXRPmcarcR4ZDgC

限制 Redis 配置文件访问权限

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

执行以下命令修改配置文件权限:

chmod 600 /<filepath>/redis.conf

修改默认 6379 端口

避免使用熟知的端口,降低被初级扫描的风险。

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

port 9736

然后重启 Redis。

开启 Redis 密码认证,并设置高复杂度密码

Redis 因查询效率高,auth 这种命令每秒能处理 9w 次以上,简单的 Redis 的密码极容易为攻击者暴破。

编辑 Redis 的配置文件 redis.conf,设置配置项 requirepass, 开启密码认证。

密码应符合复杂性要求:

1. 长度8位以上
2. 包含以下四类字符中的三类字符:
    * 英文大写字母(A 到 Z)
    * 英文小写字母(a 到 z)
    * 10 个基本数字(0 到 9)
    * 非字母字符(例如 !、$、%、@、^、&等,#除外)
3. 避免使用已公开的弱密码,如:`abcd.1234` 、`admin@123` 等

再去掉前面的 # 号注释符,然后重启 Redis。

赞赏
首页      Redis      Redis 风险控制

发表评论

textsms
account_circle
email

赵志强的博客

Redis 风险控制
 注意操作时建议做好记录或备份 打开保护模式 Redis 默认开启保护模式。要是配置里没有指定 bind和密码,开启该参数后,Redis 只能本地访问,拒绝外部访问。 编辑 Redis 的配置…
扫描二维码继续阅读
2019-11-12
近期文章
分类目录
标签云
2021年一月
« 11月    
 123
45678910
11121314151617
18192021222324
25262728293031