1.1.1. 21.Redis 的安全

指令安全

Redis 中有一些非常危险的指令,如 keys 指令造成卡顿,flush 指令会让数据清空。

Redis 为了避免这些问题,提供了 rename-command 指令用于将某些危险的饿指令修改成特别的名称。避免人为无操作。

在配置文件中 security 块中增加下面的内容:

# 可以自行修改命令
rename-command flushall allflushall
rename-command keys "searchkeys"

# 如果想完全封杀某条指令则可以使用这个
rename-command flushdb ""
127.0.0.1:6379> flushall
(error) ERR unknown command `flushall`, with args beginning with:
127.0.0.1:6379> allflushall
OK
127.0.0.1:6379> keys *
(error) ERR unknown command `keys`, with args beginning with: `*`,
127.0.0.1:6379> searchkeys name
(empty list or set)
127.0.0.1:6379> flushdb
(error) ERR unknown command `flushdb`, with args beginning with:

端口安全

Redis 默认会监听 *:6379,很容易被黑客扫描出来。一旦被扫描出来,就可以通过外网访问,内部数据就丧失了安全性。

所以需要指定监听的 ip 地址。增加密码访问限制,这样就算知道了 ip 和端口也无法对 Redis 进行操作。

# 绑定指定的监听地址
bind 10.100.20.13

# 增加密码
requirepass yoursecurepasswordhereplease

密码控制也会影响到从库复制,从库必须在配置文件中使用 masterauth 指令配置对应的密码才可以进行复制操作。

masterauth yoursecurepasswordhereplease

lua 脚本

必须禁止 lua 脚本由用户输入的内容生成,因为可能会被黑客利用植入攻击代码。

必须要让 Redis 以普通身份启动,这样即使存在恶意代码黑客也无法拿到 root 权限。

SSL 代理

Redis 不支持 SSL 链接,意味着客户端和服务器之间交互的数据不应该直接暴露在公网上传输,否则会有被窃听的风险,如果必须要使用公网,可以考虑 SSL 代理。

SSL 代理常见的事 ssh,不过 Redis 官方推荐使用 spiped 工具,因为其功能单一简单容易理解。

spiped 运行图

spiped 对 ssh 通道进行二次加密(因为 ssh 通道也可能存在 bug)

同样 SSL 代理可以用在主从复制上,如果 Redis 主从实例需要跨机房,也可以使用 spiped。

Copyright © Kagami丶 2019 all right reserved,powered by Gitbook该文件修订时间: 2019-12-10 20:25:25

results matching ""

    No results matching ""