介绍
在本实验中,你将学习如何增强 Redis 服务器的安全性。我们将介绍设置密码以防止未经授权的访问,以及禁用特定命令以限制潜在的滥用。完成本实验后,你将拥有一个更安全的 Redis 实例。
使用 CONFIG SET requirepass 设置密码
默认情况下,Redis 不需要密码,这使其容易受到攻击。设置密码是保护你的 Redis 服务器的第一步,也是最重要的一步。我们将使用 CONFIG SET requirepass 命令来完成此操作。
CONFIG SET 命令允许你动态更改 Redis 的配置设置。requirepass 设置指定了客户端连接服务器必须提供的密码。
让我们开始吧:
使用
redis-cli连接到 Redis 服务器:在 LabEx VM 中打开一个终端。默认目录是
~/project。执行以下命令:redis-cli这将把你的连接指向运行在默认主机 (127.0.0.1) 和端口 (6379) 上的 Redis 服务器。你应该会看到
127.0.0.1:6379>提示符。127.0.0.1:6379>使用
CONFIG SET requirepass命令设置密码:我们将密码设置为
mysecretpassword。对于生产环境,请选择一个强大且唯一的密码。CONFIG SET requirepass mysecretpassword你应该会看到以下输出:
OK这确认密码已设置。
现在,通过输入
exit并按 Enter 键退出redis-cli。这可以确保你的命令被记录。exit尝试在未进行身份验证的情况下执行命令:
打开一个新的终端并使用
redis-cli连接到 Redis 服务器:redis-cli尝试执行一个简单的命令,如
PING:PING你应该会收到一个错误消息:
(error) NOAUTH Authentication required.这表明现在需要进行身份验证。
退出
redis-cli:为了确保命令被记录,通过输入
exit或按Ctrl+D退出redis-cli。exit这对于验证步骤正确工作很重要。
使用 AUTH 命令进行身份验证
既然我们已经设置了密码,现在让我们学习如何使用 AUTH 命令与 Redis 服务器进行身份验证。此命令需要你在上一步中设置的密码。
使用
redis-cli连接到 Redis 服务器:在 LabEx VM 中打开一个终端。默认目录是
~/project。执行以下命令:redis-cli你应该会看到
127.0.0.1:6379>提示符。使用
AUTH命令进行身份验证:使用
AUTH命令,后跟你之前设置的密码:AUTH mysecretpassword如果身份验证成功,你将看到:
OK身份验证后执行命令:
现在你已通过身份验证,再次尝试
PING命令:PING你应该会收到预期的响应:
PONG退出
redis-cli:通过输入
exit或按Ctrl+D退出redis-cli。exit
限制危险命令
Redis 提供了许多命令,但有些命令在特定环境中可能存在风险。虽然我们无法使用 CONFIG SET 动态禁用命令(因为 rename-command 需要重启服务器),但我们可以通过展示像 FLUSHALL 这样的危险命令如何工作以及为什么它们应该在生产环境中受到限制来演示命令安全的概念。
使用
redis-cli连接到 Redis 服务器:在 LabEx VM 中打开一个终端。默认目录是
~/project。执行以下命令:redis-cli你应该会看到
127.0.0.1:6379>提示符。使用
AUTH命令进行身份验证:使用
AUTH命令并跟上你的密码进行身份验证:AUTH mysecretpassword成功身份验证后,你应该会看到
OK输出。创建一些测试数据以演示
FLUSHALL的危险性:SET testkey "important data" SET anotherkey "more important data"两个命令都应该返回
OK。验证数据是否存在:
KEYS *你应该会看到列出的两个键:
1) "testkey" 2) "anotherkey"演示危险的
FLUSHALL命令:警告: 此命令将删除所有数据库中的所有数据!
FLUSHALL你应该会看到:
OK此命令成功删除了所有数据库中的所有数据。
验证所有数据是否已被删除:
KEYS *你应该会看到:
(empty array)这说明了为什么
FLUSHALL被认为是危险的,并且应该通过在redis.conf文件中添加rename-command FLUSHALL ""来禁用它。退出
redis-cli:通过输入
exit或按Ctrl+D退出redis-cli。exit
总结
在本实验中,你学习了如何增强 Redis 的安全性。你使用 CONFIG SET requirepass 设置了密码,以防止未经授权的访问。你还学习了如何使用 AUTH 命令进行身份验证,并演示了像 FLUSHALL 这样会删除所有数据的命令的危险性。在生产环境中,应通过在 redis.conf 文件中添加 rename-command FLUSHALL "" 并重启 Redis 服务器来禁用这些危险命令。这些步骤对于保护你的 Redis 服务器至关重要。


