首页主机资讯Redis在Ubuntu上如何进行安全配置

Redis在Ubuntu上如何进行安全配置

时间2025-10-27 10:02:04发布访客分类主机资讯浏览1117
导读:Redis在Ubuntu上的安全配置指南 一、基础环境准备 在开始安全配置前,确保Ubuntu系统及Redis软件处于最新状态,减少已知漏洞风险: sudo apt update && sudo apt upgrade -y...

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生效。

四、验证配置有效性

  1. 检查Redis状态

    sudo systemctl status redis-server
    

    确保状态为active (running)

  2. 测试密码认证

    redis-cli
    AUTH sTr0ng!P@ssw0rd2025
    PING  # 应返回PONG
    
  3. 测试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
debian分卷是否支持远程访问 Redis数据备份在Ubuntu上怎么做

游客 回复需填写必要信息