Redis 是一款高性能的 NoSQL 数据库,常用于缓存、消息队列、计数器等场景。在前端开发中,Redis 也经常被用作缓存或者数据存储的解决方案。然而,Redis 的安全性却常常被忽视,容易被黑客利用进行攻击。因此,本文将为大家介绍 Redis 的部署及安全设置指南,帮助大家更好地使用 Redis。
Redis 的部署
安装 Redis
Redis 的安装非常简单,可以通过官方网站下载安装包,然后解压即可。在 Linux 系统中,可以通过以下命令安装 Redis:
sudo apt-get update sudo apt-get install redis-server
配置 Redis
Redis 的配置文件位于 /etc/redis/redis.conf
文件中,可以通过修改该文件来配置 Redis。常见的配置项包括:
bind
:绑定的 IP 地址,默认为127.0.0.1
,表示只能本地访问。port
:监听的端口号,默认为6379
。requirepass
:设置密码,可以通过密码验证来保护 Redis。daemonize
:是否以守护进程的方式运行 Redis。logfile
:设置日志文件路径。databases
:设置数据库的数量,默认为16
。
启动 Redis
在 Linux 系统中,可以通过以下命令启动 Redis:
sudo systemctl start redis
如果想要开机自启动 Redis,可以执行以下命令:
sudo systemctl enable redis
Redis 的安全设置
设置密码
在 Redis 中设置密码可以有效地保护 Redis 数据库不被未授权的用户访问。可以通过修改 Redis 配置文件中的 requirepass
配置项来设置密码。例如,将密码设置为 mypassword
,可以在配置文件中添加以下一行:
requirepass mypassword
然后重启 Redis,即可生效。在使用 Redis 命令行工具时,需要先使用 AUTH
命令验证密码,才能执行其他命令。例如:
$ redis-cli 127.0.0.1:6379> AUTH mypassword OK 127.0.0.1:6379> SET mykey myvalue OK
修改绑定 IP 地址
默认情况下,Redis 只能本地访问,但是如果需要远程访问 Redis,可以通过修改 Redis 配置文件中的 bind
配置项来指定绑定的 IP 地址。例如,将绑定的 IP 地址设置为 0.0.0.0
,表示允许所有 IP 地址的访问:
bind 0.0.0.0
然后重启 Redis,即可生效。不过需要注意的是,这样会带来一定的安全风险,因为所有 IP 地址都可以访问 Redis,攻击者有可能会利用漏洞进行攻击。
关闭危险命令
Redis 中有一些危险命令,如 FLUSHALL
、FLUSHDB
、CONFIG
等,可以通过修改 Redis 配置文件中的 rename-command
配置项来重命名这些命令,或者直接禁用这些命令。例如,将 FLUSHALL
命令重命名为 MYFLUSHALL
:
rename-command FLUSHALL MYFLUSHALL
然后重启 Redis,即可生效。这样,攻击者就无法直接使用 FLUSHALL
命令清空 Redis 数据库了。
使用 ACL
Redis 6.0 版本开始支持 ACL(Access Control List)功能,可以更细粒度地控制用户权限。可以通过修改 Redis 配置文件中的 aclfile
配置项来指定 ACL 文件的路径。例如,将 ACL 文件的路径设置为 /etc/redis/redis.acl
:
aclfile /etc/redis/redis.acl
然后重启 Redis,即可生效。在 ACL 文件中,可以添加用户、角色和权限,例如:
user myuser on # 设置用户 myuser user default off # 禁用默认用户 user myuser nopass ~* # 允许用户 myuser 不需要密码访问 Redis user myuser +@readonly ~* # 将用户 myuser 添加到 readonly 角色中 role readonly -@all +get +mget # 定义 readonly 角色,禁用所有命令,只允许执行 get 和 mget 命令
然后重启 Redis,即可生效。在使用 Redis 命令行工具时,需要先使用 AUTH
命令验证用户身份,然后根据用户角色的权限来执行命令。例如:
$ redis-cli -u myuser -a mypassword 127.0.0.1:6379> get mykey # 可以执行 get 命令 "myvalue" 127.0.0.1:6379> set mykey myvalue # 不能执行 set 命令 (error) NOPERM ACL user [myuser] with password hash [********] tried to execute command [set] but no allowed
总结
本文介绍了 Redis 的部署及安全设置指南,包括安装 Redis、配置 Redis、启动 Redis、设置密码、修改绑定 IP 地址、关闭危险命令和使用 ACL。这些设置可以有效地保护 Redis 数据库不被未授权的用户访问,提高 Redis 的安全性。希望本文对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65850684d2f5e1655dfa998c