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 yes
這樣設定後,Redis 僅在127.0.0.1(本地)能夠訪問。
2. Redis 的網路端口和連接限制
✅ 2-1. 設定 Redis 接收的端口 (port
)
Redis 預設在 6379端口上運行。
port 6379
如果想要僅使用 Unix socket 而非 TCP socket,可將端口設定為 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 伺服器,立即檢查你的安全設定。 🔐🚀

目前沒有評論。