Redis是一种高性能内存数据库,被广泛使用,但默认情况下并没有强安全设置。特别是在通过网络访问时,错误的配置可能会导致数据泄露、黑客攻击、服务中断等问题。

在这篇文章中,我将解释如何增强Redis的网络安全以及主要配置,使初学者也能轻松理解。为了安全地运行Redis,让我们逐一看看需要检查哪些设置

1. 限制Redis的外部访问

✅ 1-1. 仅允许特定IP访问 (bind设置)

Redis默认可以接受来自所有网络接口的连接。也就是说,如果没有任何设置,任何人都有可能访问Redis服务器。

为了防止这种情况,您应该使用bind设置来限制仅允许特定IP地址访问

📌 示例:仅允许本地(127.0.0.1)访问
bind 127.0.0.1 -::1

如上所述设置后,只有在同一服务器上运行的客户端才能访问Redis。

📌 如果需要从外部IP访问呢?

如果需要从外部IP访问,可以设置仅允许特定IP。

bind 192.168.1.100 10.0.0.1

这样将允许仅从192.168.1.100和10.0.0.1两个IP访问Redis。

✅ 1-2. 启用保护模式 (protected-mode)

为了增强安全性,Redis提供保护模式(protected mode)功能。在保护模式下,未经密码无法从外部访问。

📌 启用保护模式
protected-mode yes

这样设置后,Redis只能在127.0.0.1 (本地)中访问

2. Redis的网络端口和连接限制

✅ 2-1. 设置Redis接收的端口 (port)

Redis默认在6379端口上运行。

port 6379

如果希望仅使用Unix套接字而非TCP套接字,则将端口设置为0。

port 0

✅ 2-2. 设置仅在特定端口通信 (bind-source-addr)

Redis的发起连接(副本与主服务器连接,集群间通信等)默认不绑定到特定网络接口。

bind-source-addr 10.0.0.1

这样设置后,Redis将仅通过10.0.0.1接口与外部Redis服务器通信

3. 为了网络连接的稳定性所需的设置

✅ 3-1. TCP连接等待队列大小 (tcp-backlog)

tcp-backlog 511

🔹 对于处理高流量的服务器,建议将此值设置为1,024或4,096

✅ 3-2. 客户端非活动时间 (timeout)

timeout 300

如果客户端在5分钟内没有执行任何操作,将自动断开连接。

4. 增强安全性的附加设置

✅ 4-1. 阻止危险命令 (enable-debug-command)

一些Redis命令(DEBUG, MODULE LOAD等)可能存在安全风险。

enable-debug-command no
enable-module-command no

这样将限制执行潜在危险的命令

5. 总结:Redis网络安全设置检查清单

  • ✔ 设置仅允许特定IP访问Redis (bind)
  • ✔ 启用保护模式(protected-mode)以阻止外部访问
  • ✔ 通过TCP端口设置 (port) 限制不必要的访问
  • ✔ 设置客户端非活动计时器 (timeout) 来阻止空闲连接
  • ✔ 通过Keepalive设置 (tcp-keepalive) 来保持网络连接
  • ✔ 通过禁用危险命令 (enable-debug-command no) 加强安全性

Redis是对网络安全要求高的数据库。实施上述设置可以有效预防黑客攻击和数据泄露! 如果您正在运营Redis服务器,请立即检查安全设置。 🔐🚀

Redis网络安全设置