保护Redis

1、指令安全

Redis的危险命令主要有:

命令 说明
flushdb 清空数据库
flushall 清空所有记录,数据库
config 客户端连接后可配置服务器
keys 客户端连接后可查看所有存在的键

禁用的具体做法是,修改服务器的配置文件redis.conf,在SECURITY这一项中,来禁用远程修改 DB 文件地址
我们新增以下命令:

rename-command FLUSHALL ""
rename-command FLUSHDB  ""
rename-command CONFIG   ""
rename-command KEYS     ""

而如果想要保留命令,但是不能轻易使用,可以重命名命令来设定:

rename-command FLUSHALL abcFLUSHALLabc
rename-command FLUSHDB  abcFLUSHDBabc
rename-command CONFIG   abcCONFIGabc
rename-command KEYS     abcKEYSabc

2、端口安全

  • 监听地址
    较新版本redis默认监听环回地址(loopback),无需修改;
    bind 127.0.0.1 ::1
  • 修改端口
    port 6380
  • 添加密码
    配置文件中添加
    requirepass yourpassword
    命令行执行
redis 127.0.0.1:6379> config set requirepass test123
 redis 127.0.0.1:6379> config get requirepass
redis-cli -p 6379 -a test123

主从复制时从库需要设置
masterauth yourpassword

3、Lua脚本安全

Redis从2.6版本开始引入对Lua脚本的支持,通过在服务器中嵌入Lua环境,Redis客户端可以使用Lua脚本,直接在服务端原子的执行多个Redis命令。

使用脚本的好处如下:
1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在redis服务器上完成。使用脚本,减少了网络往返时延。
2.原子操作:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。
3.复用:客户端发送的脚本会永久存储在Redis中,意味着其他客户端可以复用这一脚本而不需要使用代码完成同样的逻辑。
https://www.cnblogs.com/52fhy/p/9786720.html
正是因为Lua有强大的功能,我们更应给禁止Lua脚本由用户输入的内容(UGC)生成。

4、SSL代理

  • SSL代理
  • spiped

你可能感兴趣的:(保护Redis)