Redis在Ubuntu上如何进行安全配置
Redis在Ubuntu上的安全配置指南
一、基础环境准备
在开始安全配置前,确保Ubuntu系统及Redis软件处于最新状态,减少已知漏洞风险:
sudo apt update &
&
sudo apt upgrade -y
sudo apt install redis-server -y
二、核心安全配置步骤
1. 限制访问IP(网络隔离)
通过bind参数指定Redis仅监听可信IP地址,默认情况下Redis可能监听所有接口(0.0.0.0),易被公网扫描到。
编辑配置文件/etc/redis/redis.conf:
sudo nano /etc/redis/redis.conf
- 若仅需本地访问,保留或修改为:
bind 127.0.0.1; - 若需远程访问,添加内网IP(如
192.168.1.10):bind 127.0.0.1 192.168.1.10(切勿直接绑定0.0.0.0)。
修改后保存退出。
2. 启用强密码认证
默认情况下Redis无密码认证,任何人连接后均可执行命令。通过requirepass设置强密码(建议包含大小写字母、数字和特殊字符):
sudo nano /etc/redis/redis.conf
找到# requirepass foobared,取消注释并修改为:
requirepass sTr0ng!P@ssw0rd2025
重启Redis使配置生效:
sudo systemctl restart redis-server
验证密码有效性:
redis-cli
AUTH sTr0ng!P@ssw0rd2025 # 输入密码
SET test_key "Hello Redis" # 测试写入
GET test_key # 测试读取
3. 配置防火墙规则
使用Ubuntu自带的ufw防火墙限制Redis端口(默认6379)的访问,仅允许可信IP通过:
# 允许特定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
# 检查防火墙状态
sudo ufw status
4. 禁用保护模式(可选,需配合其他措施)
Redis的protected-mode默认开启,仅允许本地连接。若绑定了内网IP且通过防火墙限制了访问,可将protected-mode设为no以允许远程连接(生产环境建议保持yes并依赖IP限制):
sudo nano /etc/redis/redis.conf
修改:
protected-mode no
重启Redis:
sudo systemctl restart redis-server
5. 修改默认端口(降低扫描风险)
默认端口6379易被自动化工具扫描,修改为非标准端口(如16379)可增加攻击难度:
sudo nano /etc/redis/redis.conf
修改:
port 16379
重启Redis并更新防火墙规则:
sudo systemctl restart redis-server
sudo ufw allow from 10.0.0.5 to any port 16379 proto tcp # 更新为新的端口
sudo ufw deny in to any port 6379 proto tcp # 关闭旧端口
6. 限制客户端连接数
通过maxclients参数限制同时连接的客户端数量,防止资源耗尽攻击(默认无限制):
sudo nano /etc/redis/redis.conf
添加或修改:
maxclients 100 # 根据服务器性能调整(如1GB内存可设为50-100)
重启Redis生效。
7. 内存管理与淘汰策略
设置maxmemory限制Redis最大使用内存(如服务器8GB内存,设为6GB),并配置maxmemory-policy定义内存满时的淘汰策略(推荐allkeys-lru,移除最近最少使用的key):
sudo nano /etc/redis/redis.conf
添加或修改:
maxmemory 6gb
maxmemory-policy allkeys-lru
重启Redis生效。
三、进阶安全措施(可选但推荐)
1. 以非root用户运行
避免Redis以root权限运行,降低被攻击后的影响范围:
# 创建redis用户和组
sudo useradd -r -s /bin/false redis
# 修改Redis目录所有者
sudo chown -R redis:redis /var/lib/redis
sudo chown -R redis:redis /etc/redis
# 修改配置文件中的supervised参数(systemd环境下设为systemd)
sudo nano /etc/redis/redis.conf
修改:
supervised systemd
重启Redis并指定用户:
sudo systemctl restart redis-server
sudo systemctl edit redis-server
添加:
[Service]
User=redis
Group=redis
保存后重启:
sudo systemctl daemon-reload
sudo systemctl restart redis-server
2. 禁用危险命令
通过rename-command重命名或禁用高危命令(如FLUSHALL清空数据库、CONFIG修改配置):
sudo nano /etc/redis/redis.conf
添加:
rename-command FLUSHALL ""
rename-command CONFIG "SAFE_CONFIG"
重启Redis后,FLUSHALL无法使用,CONFIG需用SAFE_CONFIG代替。
3. 启用TLS加密(Redis 6.0+)
若需加密客户端与服务器之间的通信,可配置TLS(需提前获取证书):
sudo nano /etc/redis/redis.conf
添加或修改:
tls-port 6379
port 0 # 关闭非TLS端口
tls-cert-file /path/to/redis.crt
tls-key-file /path/to/redis.key
tls-ca-cert-file /path/to/ca.crt
重启Redis生效。
四、验证配置有效性
-
检查Redis状态:
sudo systemctl status redis-server确保状态为
active (running)。 -
测试密码认证:
redis-cli AUTH sTr0ng!P@ssw0rd2025 PING # 应返回PONG -
测试IP限制: 从非信任IP尝试连接,应无法访问:
redis-cli -h your_server_ip -p 6379 # 提示Connection refused或认证失败
五、日常维护建议
- 定期更新Redis:及时应用安全补丁,避免已知漏洞被利用。
- 监控日志:通过
journalctl -u redis-server或/var/log/redis/redis-server.log监控异常行为(如频繁的认证失败)。 - 备份数据:定期备份
/var/lib/redis目录,防止数据丢失。
通过以上配置,可显著提升Redis在Ubuntu上的安全性,防范常见的网络攻击(如未授权访问、内存耗尽、命令注入等)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Redis在Ubuntu上如何进行安全配置
本文地址: https://pptw.com/jishu/735446.html
