1. 啟用強密碼認證
密碼認證是Redis安全的基礎防線。編輯Redis配置文件(/etc/redis.conf),找到# requirepass foobared行,去掉注釋并設置復雜密碼(包含大小寫字母、數字和特殊字符,長度不少于8位),例如:requirepass YourSecurePassword@2025。修改后重啟Redis服務使配置生效:sudo systemctl restart redis。此后客戶端連接時需通過AUTH命令驗證密碼,如redis-cli -h 127.0.0.1 -p 6379 -a YourSecurePassword@2025。
2. 限制網絡訪問范圍
通過bind指令限制Redis僅接受特定IP地址的連接,降低非法訪問風險。編輯/etc/redis.conf,將bind 127.0.0.1修改為服務器本地IP(如bind 192.168.1.100),或僅保留127.0.0.1(僅允許本機訪問)。若需遠程訪問,需結合保護模式(protected-mode yes,Redis 6.0+默認開啟)和密碼認證,避免直接暴露在公網。
3. 配置防火墻規則
使用firewalld(CentOS 7+默認防火墻)限制Redis端口(默認6379)的訪問,僅允許信任的IP地址或網段連接。執行以下命令:
sudo firewall-cmd --permanent --zone=public --add-port=6379/tcp # 永久開放6379端口
sudo firewall-cmd --reload # 重新加載防火墻配置
驗證端口是否開放:sudo firewall-cmd --list-all,確認ports列表中包含6379/tcp。
4. 禁用危險命令與模塊
通過重命名或禁用高風險命令(如FLUSHDB、FLUSHALL、KEYS),防止惡意操作導致數據丟失或泄露。編輯/etc/redis.conf,添加以下配置:
rename-command FLUSHDB "" # 禁用清空當前數據庫命令
rename-command FLUSHALL "" # 禁用清空所有數據庫命令
rename-command KEYS "" # 禁用遍歷所有鍵命令(影響性能)
若無需額外模塊,可通過loadmodule指令注釋掉模塊加載項,避免潛在風險。
5. 使用ACL實現細粒度權限控制(Redis 6.0+)
Redis 6.0及以上版本支持ACL(訪問控制列表),可針對用戶分配不同命令和鍵的訪問權限。編輯/etc/redis.conf,添加以下配置創建用戶并限制權限:
aclfile /etc/redis/users.acl # 指定ACL文件路徑
創建/etc/redis/users.acl文件,添加用戶及權限(如僅允許read命令訪問user:*鍵):
user readonly_user on >ReadonlyPassword ~user:* +get +set
重啟Redis服務使ACL配置生效:sudo systemctl restart redis。
6. 啟用數據持久化與備份
通過RDB(快照)或AOF(追加日志)持久化機制,防止數據因服務器故障丟失。編輯/etc/redis.conf,配置AOF持久化(推薦):
appendonly yes # 開啟AOF
appendfsync everysec # 每秒同步一次(平衡性能與安全性)
dir /var/lib/redis # AOF文件存儲路徑
appendfilename "appendonly.aof" # AOF文件名
定期備份/var/lib/redis目錄(如使用rsync或tar命令),并將備份存儲在異地。
7. 定期更新Redis版本
保持Redis為最新穩定版本,及時修復已知安全漏洞。使用yum更新Redis:
sudo yum update redis -y
關注Redis官方安全公告(如GitHub Releases或郵件列表),第一時間應用安全補丁。
8. 配置SELinux(可選但推薦)
若系統啟用SELinux(sestatus顯示Enforcing),需配置SELinux策略允許Redis訪問所需資源。安裝policycoreutils-python工具:
sudo yum install policycoreutils-python -y
添加Redis端口策略:
sudo semanage port -a -t redis_port_t -p tcp 6379
驗證策略是否生效:sudo semanage port -l | grep redis。
9. 監控與日志記錄
啟用Redis日志功能,記錄連接、命令執行等活動,便于及時發現異常。編輯/etc/redis.conf,配置日志級別和輸出路徑:
loglevel notice # 日志級別(notice為常用級別,記錄重要事件)
logfile /var/log/redis/redis.log # 日志文件路徑
確保/var/log/redis目錄存在且Redis用戶有寫入權限:sudo mkdir -p /var/log/redis && sudo chown redis:redis /var/log/redis。使用tail -f /var/log/redis/redis.log實時監控日志,或通過ELK、Prometheus等工具實現集中監控。