温馨提示×

Redis在Ubuntu怎样安全配置

小樊
38
2025-11-11 04:34:21
栏目: 云计算

Redis在Ubuntu上的安全配置指南

Redis作为高性能内存数据库,默认配置偏向便捷性,存在未授权访问、命令滥用等安全风险。以下是在Ubuntu系统上加固Redis安全的具体步骤,覆盖网络隔离、身份认证、权限控制等核心环节:

1. 更新系统与安装Redis

首先确保系统包列表最新,避免依赖旧版本漏洞:

sudo apt update && sudo apt upgrade -y
sudo apt install redis-server -y

安装完成后,启动Redis服务并设置开机自启:

sudo systemctl start redis-server
sudo systemctl enable redis-server

2. 绑定可信IP地址(网络隔离)

默认情况下,Redis监听所有网络接口(0.0.0.0),易被公网扫描到。需修改配置文件,限制仅可信IP可访问:

sudo nano /etc/redis/redis.conf

找到bind配置项,修改为本地回环地址(仅本地访问)或内网IP(如192.168.1.100):

bind 127.0.0.1 192.168.1.100  # 示例:允许本地和内网IP访问

保存后重启Redis使配置生效:

sudo systemctl restart redis-server

验证绑定效果

sudo netstat -lnp | grep redis

输出应显示Redis仅监听绑定的IP地址(如127.0.0.1:6379192.168.1.100:6379)。

3. 启用强密码认证(身份验证)

Redis默认无密码,需通过requirepass配置强密码(建议包含大小写字母、数字和特殊字符,长度≥12位):

sudo nano /etc/redis/redis.conf

找到requirepass行,取消注释并设置密码(如sTr0ng@RedisP@ss2025):

requirepass sTr0ng@RedisP@ss2025

重启Redis

sudo systemctl restart redis-server

测试密码认证

redis-cli
AUTH sTr0ng@RedisP@ss2025  # 输入密码
SET test_key "Hello Redis"  # 验证命令执行
GET test_key

若返回"Hello Redis",则认证成功。

4. 限制危险命令(权限控制)

Redis的FLUSHDB(清空当前库)、FLUSHALL(清空所有库)、CONFIG(修改配置)等命令若被滥用,可能导致数据丢失或配置泄露。需通过rename-command重命名或禁用这些命令:

sudo nano /etc/redis/redis.conf

添加以下配置(示例):

rename-command FLUSHDB ""       # 禁用FLUSHDB(空字符串表示禁用)
rename-command FLUSHALL ""      # 禁用FLUSHALL
rename-command CONFIG "SECURE_CONFIG"  # 重命名CONFIG为不易猜测的名称

重启Redis

sudo systemctl restart redis-server

测试命令限制

redis-cli AUTH sTr0ng@RedisP@ss2025
FLUSHDB  # 将返回"(error) ERR unknown command 'FLUSHDB'"
SECURE_CONFIG GET *  # 需使用新名称访问

5. 配置防火墙规则(网络层防护)

使用Ubuntu自带的ufw防火墙,仅允许可信IP访问Redis端口(默认6379):

# 查看防火墙状态(确保处于active状态)
sudo ufw status

# 允许特定IP访问Redis端口(如应用服务器IP:10.0.0.5)
sudo ufw allow from 10.0.0.5 to any port 6379 proto tcp

# 拒绝其他所有入站请求到Redis端口
sudo ufw deny in to any port 6379 proto tcp

# 启用防火墙(若未启用)
sudo ufw enable

6. 以非root用户运行Redis(权限最小化)

默认情况下,Redis以redis用户(低权限)运行,但仍需确认配置:

# 检查Redis运行用户
ps aux | grep redis-server

输出应包含redis用户(如redis 1234 0.0 0.1 ... /usr/bin/redis-server)。
若未以redis用户运行,修改配置文件:

sudo nano /etc/redis/redis.conf

找到supervised配置项,修改为systemd(Ubuntu默认使用systemd管理服务):

supervised systemd

并确保user配置项为redis

user redis

重启Redis

sudo systemctl restart redis-server

7. 可选:更改默认端口(降低扫描风险)

默认端口6379易被自动化工具扫描,可修改为非标准端口(如16379):

sudo nano /etc/redis/redis.conf

找到port配置项,修改为自定义端口:

port 16379

更新防火墙规则

sudo ufw allow from 10.0.0.5 to any port 16379 proto tcp
sudo ufw deny in to any port 16379 proto tcp

重启Redis

sudo systemctl restart redis-server

8. 监控与审计(实时感知异常)

使用redis-climonitor命令实时查看操作日志(仅用于调试,生产环境建议用专业工具):

redis-cli monitor

或集成监控工具(如Prometheus+Grafana),监控Redis的连接数、内存使用、命令执行等指标,设置异常报警(如频繁的FLUSHDB命令)。

通过以上步骤,可显著提升Ubuntu上Redis的安全性,防范未授权访问、数据泄露等风险。需根据实际业务需求调整配置(如远程访问需谨慎开启bind 0.0.0.0并配合严格防火墙规则)。

0