温馨提示×

Ubuntu Redis如何进行安全配置

小樊
45
2025-10-12 08:51:45
栏目: 云计算

Ubuntu Redis安全配置指南

一、基础环境准备

在开始安全配置前,需完成以下前置操作:

  1. 更新系统包列表及已安装软件,确保系统处于最新状态:
    sudo apt update && sudo apt upgrade -y
    
  2. 安装Redis-server(若未安装):
    sudo apt install redis-server -y
    

二、核心安全配置步骤

1. 限制访问IP(网络隔离)

  • 原理:通过绑定可信IP地址,拒绝非授权主机的连接请求,降低被扫描或攻击的风险。
  • 操作:编辑Redis配置文件(/etc/redis/redis.conf),修改bind参数:
    • 仅允许本地访问(默认推荐):
      bind 127.0.0.1
      
    • 若需远程访问,绑定内网IP(如192.168.1.100),而非0.0.0.0(完全开放):
      bind 127.0.0.1 192.168.1.100
      
  • 补充:结合操作系统防火墙(如ufw)进一步限制访问源IP:
    sudo ufw allow from 10.0.0.5 to any port 6379 proto tcp  # 允许指定IP
    sudo ufw deny in to any port 6379 proto tcp            # 拒绝其他IP
    

2. 启用强密码认证

  • 原理:通过密码验证客户端身份,防止未授权访问。
  • 操作:在redis.conf中找到requirepass参数,取消注释并设置强密码(包含大小写字母、数字、特殊字符,长度≥12位):
    requirepass sTr0ng@RedisP@ss2025!
    
  • 注意
    • 避免使用默认密码(如foobared)或弱密码(如123456)。
    • 若Redis已运行,需重启服务使密码生效:
      sudo systemctl restart redis-server
      
    • 连接Redis时需先验证密码:
      redis-cli -h 127.0.0.1 -p 6379
      AUTH sTr0ng@RedisP@ss2025!
      

3. 调整保护模式(Protected Mode)

  • 原理:保护模式限制Redis仅接受本地连接,防止暴露在公网。
  • 操作
    • 生产环境必须开启保护模式(yes),禁止非本地连接:
      protected-mode yes
      
    • 若需远程访问,需配合bind(绑定可信IP)和防火墙使用,而非关闭保护模式。

4. 禁用不必要的持久化(可选,根据需求)

  • 原理:持久化功能(RDB/AOF)会将数据保存到磁盘,若Redis被入侵,攻击者可能篡改持久化文件。
  • 操作:若无需数据持久化(如缓存场景),可在redis.conf中注释或关闭相关参数:
    # save 900 1      # 关闭RDB快照
    # appendonly no   # 关闭AOF日志
    

5. 限制客户端连接数

  • 原理:防止恶意客户端发起大量连接,耗尽服务器资源(如内存、CPU)。
  • 操作:在redis.conf中设置maxclients参数,限制最大连接数(如10000):
    maxclients 10000
    

6. 以非root用户运行Redis

  • 原理:降低权限提升风险,即使Redis被入侵,攻击者也无法直接获取root权限。
  • 操作
    1. 创建专用Redis用户及目录:
      sudo useradd -r -s /bin/false redis
      sudo mkdir -p /var/lib/redis
      sudo chown redis:redis /var/lib/redis
      sudo chmod 750 /var/lib/redis
      
    2. 修改Redis配置文件,指定用户:
      user redis
      
    3. 重启Redis服务:
      sudo systemctl restart redis-server
      

三、高级安全增强(可选)

1. 修改默认端口

  • 原理:降低被自动化扫描工具(如nmap)命中的概率。
  • 操作:在redis.conf中修改port参数(如16379),并更新防火墙规则:
    port 16379
    
    sudo ufw allow 16379/tcp
    

2. 使用防火墙强化访问控制

  • 推荐工具:Ubuntu默认使用ufw(Uncomplicated Firewall),操作简便。
  • 操作
    1. 允许Redis端口(默认6379或自定义端口)的TCP流量:
      sudo ufw allow 6379/tcp
      
    2. 启用ufw并检查状态:
      sudo ufw enable
      sudo ufw status verbose
      

3. 启用Redis ACL(访问控制列表,Redis 6.0+)

  • 原理:替代传统的requirepass,实现更细粒度的权限控制(如读、写、管理命令权限)。
  • 操作
    1. redis.conf中启用ACL并配置用户权限:
      aclfile /etc/redis/users.acl
      
    2. 创建/etc/redis/users.acl文件,定义用户及权限(示例):
      user admin on >AdminPass123 ~* +@all  # 管理员用户,拥有所有权限
      user app_user on >AppPass456 ~cache:* +get +set  # 应用用户,仅能访问cache:*键,支持get/set
      
    3. 重启Redis服务使配置生效:
      sudo systemctl restart redis-server
      
    4. 连接时使用ACL认证:
      redis-cli -h 127.0.0.1 -p 6379
      AUTH admin AdminPass123
      

四、验证配置有效性

  1. 检查Redis服务状态

    sudo systemctl status redis-server
    

    (状态应为active (running)

  2. 测试密码认证

    redis-cli
    AUTH sTr0ng@RedisP@ss2025!
    SET test_key "Hello Redis"
    GET test_key
    

    (应返回"Hello Redis"

  3. 测试IP访问限制

    • 从非绑定IP(如10.0.0.10)尝试连接,应收到Connection refused错误。

五、日常维护建议

  • 定期更新Redis:及时安装安全补丁,修复已知漏洞。
  • 监控日志:通过journalctl -u redis-server/var/log/redis/redis-server.log查看异常连接或操作。
  • 备份数据:定期备份Redis数据目录(/var/lib/redis),防止数据丢失。
  • 禁用危险命令:在redis.conf中重命名或禁用高危命令(如FLUSHALLCONFIG):
    rename-command FLUSHALL ""
    rename-command CONFIG "SECURE_CONFIG"
    

通过以上配置,可显著提升Ubuntu环境下Redis的安全性,防范常见的未授权访问、数据泄露等风险。

0