Redis安全策略
Redis 提供了诸多安全策略,比如为了保证数据安全,提供了设置密码的功能。Redis 密码设置主要有两种方式:一种是使用
下面执行以下命令设置密码。如下所示:
除了需要为 Redis 配置密码外,我们在使用 Redis 时也需要注意一些常见的安全风险以及防范措施,从而避免数据泄露和丢失,以及人为操作失误等。
Redis 在配置文件中提供了 rename-command 指令用于将某些危险的指令修改成特别的名称,用来避免人为误操作。比如在配置文件的 security 模块增加以下内容:
如果 Redis 的服务地址一旦可以被外网直接访问,其内部数据就彻底丧失了安全性。黑客们可以通过 Redis 执行 Lua 脚本拿到服务器权限,然后清空您的 Redis 数据库。因此务必在 Redis 的配置文件中绑定要监听的 IP 地址,避免类似的情况发生。如下所示:
密码配置也会影响到主从复制。要求从机必须配置与主服务相同的密码才可以进行主从复制。
CINFIG
命令来设置密码;另外一种则是手动修改 Redis 的配置文件。虽然看似前者更为简单,其实两种方式各有特点。本节将对它们进行介绍。命令配置密码
通过执行以下命令查看是否设置了密码验证:127.0.0.1:6379> CONFIG get requirepass 1) "requirepass" 2) ""在默认情况下 requirepass 参数值为空的,表示无需通过密码验证就可以连接到 Redis 服务。
下面执行以下命令设置密码。如下所示:
127.0.0.1:6379> CONFIG set requirepass "www.biancheng.net" OK 127.0.0.1:6379> CONFIG get requirepass 1) "requirepass" 2) "www.biancheng.net"执行完上述操作后,客户端要连接到 Redis 服务就需要密码验证,如果不验证就无法操作 Redis 数据库。如下所示:
127.0.0.1:6379> set key name www.biancheng.net #报错无法操作 (error) NOAUTH Authentication required.使用
AUTH
命令验证密码:
127.0.0.1:6379> AUTH www.biancheng.net OK #执行命令成功 127.0.0.1:6379> SET name www.biancheng.net OK 127.0.0.1:6379> GET name www.biancheng.net注意:通过命令行设置的密码并非永久有效,当您重启服务后密码就会失效,所以一般不采用这种方式。下面介绍一种永久有效的修改方式,也就是手动配置密码。
手动配置密码
手动修改配置密码也非常的简单,首先,您要在 Redis 的安装目录中找到 redis.windows.conf 配置文件,然后打开该文件,并使用 Ctrl+F 搜索 requirepass 关键字,找到配置项并配置密码,如下所示:# requirepass foobared requirepass www.biancheng.net //配置自己的密码然后使用更改后的配置文件重启服务器,依次执行以下命令:
#首先停止服务: C:\Users\Administrator>redis-server.exe --service-stop #重启服务器 C:\Users\Administrator>redis-server.exe --service-start #重新登陆 C:\Users\Administrator>redis-cli.exe -h 127.0.0.1 -p 6379 -a www.biancheng.net Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. #命令执行成功 127.0.0.1:6379>config get requirepass 1)"requirepass" 2)"www.biancheng.net"手动配置无须验证密码,只需要重新启动 Redis 服务器。这种配置方式,密码永远有效。如果想取消密码设置,您需要将配置文件更改回原来的状态,然后再次重启服务器,即可取消。
除了需要为 Redis 配置密码外,我们在使用 Redis 时也需要注意一些常见的安全风险以及防范措施,从而避免数据泄露和丢失,以及人为操作失误等。
指令安全
Redis 有一些非常危险的命令,这些命令会对 Redis 的稳定以及数据安全造成非常严重的影响。比如 keys 指令会导致 Redis 卡顿,而 flushdb 和 flushall 会让 Redis 的所有数据全部清空。那么如何避免这些操作失误带来的灾难性后果呢?Redis 在配置文件中提供了 rename-command 指令用于将某些危险的指令修改成特别的名称,用来避免人为误操作。比如在配置文件的 security 模块增加以下内容:
rename-command keys 123keys123如果您还想执行 keys 命令,那就需要在命令行输入123keys123。 当然也可以将指令 rename 成空字符串,这样就无法通过字符串来执行 keys 命令了。
rename-command flushall ""
端口安全
Redis 默认监听*:6379
,如果当前的服务器主机有外网地址,那么 Redis 的服务将会直接暴露在公网上,别有用心的人使用适当的探测工具就可以对 IP 地址进行端口扫描,从而威胁您的系统安全。如果 Redis 的服务地址一旦可以被外网直接访问,其内部数据就彻底丧失了安全性。黑客们可以通过 Redis 执行 Lua 脚本拿到服务器权限,然后清空您的 Redis 数据库。因此务必在 Redis 的配置文件中绑定要监听的 IP 地址,避免类似的情况发生。如下所示:
bind 193.168.1.1 #绑定外网ip地址不仅如此,还可以增加 Redis 的密码访问限制,客户端必须使用 auth 命令传入正确的密码才可以访问 Redis。
requirepass yourspassword这样即使地址暴露出去了,普通黑客也无法对 Redis 服务器进行任何指令操作。
密码配置也会影响到主从复制。要求从机必须配置与主服务相同的密码才可以进行主从复制。
masterauth yourspassword