• redis漏洞修复:(CNVD-2019-21763)


    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


    前言

    漏扫发现机器上基于容器运行的redis的访问权限没有限制,需要增加安全配置。
    现在使用的7.0.4版本,正好一起升级版本。
    由于redis使用的是容器形式运行,所以防火墙的相关配置是到DOCKER中,而不是在INPUT中。因为配置到INPUT中无法影响到容器运行的服务端口。


    一、漏洞内容

    Redis 未授权访问漏洞(CNVD-2019-21763)【原理扫描】在这里插入图片描述


    二、镜像准备

    1.确认镜像版本

    目前latest中使用的redis版本是7.2.1
    在这里插入图片描述

    2.下载镜像

    docker pull redis:latest
    
    • 1

    三、配置文件准备

    1.获取配置文件

    下载7.2.1版本的配置文件

    wget http://download.redis.io/releases/redis-7.2.1.tar.gz
    tar -xvf redis-7.2.1.tar.gz
    cp redis-7.2.1/redis.conf /data/
    
    • 1
    • 2
    • 3

    2.修改配置文件

    这里把bind修改为0.0.0.0,保护模式的开关也关闭上

    bind 0.0.0.0 -::1
    protected-mode no
    port 6379
    
    • 1
    • 2
    • 3

    四、启动redis容器

    启动redis容器,挂载数据目录和配置文件

    docker run --name redis  -d -p 6379:6379  -v /data/redis-data:/data -v /date/redis.conf:/etc/redis/redis.conf  redis-server /etc/redis/redis.conf
    
    • 1

    五、修改iptables文件

    查看已有的防火墙规则

    Chain DOCKER (1 references)
    target     prot opt source               destination         
    ACCEPT     tcp  --  0.0.0.0/0            172.17.0.2           tcp dpt:6379
    
    
    • 1
    • 2
    • 3
    • 4

    通过iptable防火墙进行规则控制
    /etc/sysconfig/iptables

    # 这一行是docker服务自动创建的规则,172.17.0.4是redis容器的IP
    -A DOCKER -d 172.17.0.4/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 6379 -j ACCEPT
    
    • 1
    • 2

    增加访问控制规则

    # 增加XXX.XX.XX.XX容器访问的规则,已172.16.112.1、2为例
    -A DOCKER -s XXX.XX.XX.XX -d 172.17.0.4/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 6379 -j ACCEPT
    # 增加所有地址无法访问的规则
    -A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 6379 -j DROP
    # 系统原有规则
    -A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 6379 -j ACCEPT
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    重启服务

    systemctl restart iptables
    iptables -L -n
    
    • 1
    • 2

    增加后的防火墙规则

    Chain DOCKER (1 references)
    target     prot opt source               destination         
    ACCEPT     tcp  --  172.16.112.1         172.17.0.2           tcp dpt:6379
    ACCEPT     tcp  --  172.16.112.2         172.17.0.2           tcp dpt:6379
    ACCEPT     tcp  --  172.16.254.10        172.17.0.2           tcp dpt:6379
    DROP       tcp  --  0.0.0.0/0            172.17.0.2           tcp dpt:6379
    ACCEPT     tcp  --  0.0.0.0/0            172.17.0.2           tcp dpt:6379
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    总结

    增加安全控制比较简单,重要的是docker运行的redis的规则控制在DOCKER组中,而不是在INPUT中。

  • 相关阅读:
    详解.NET依赖注入中对象的创建与“销毁”
    RALB负载均衡算法的应用
    抖音无需API开发连接Stable Diffusion,实现自动根据评论区的指令生成图像并返回
    教你初学者如何快速学会 Python
    AIGC ChatGPT 4 与 Python 进行数据分析与可视化
    2022牛客蔚来杯加赛
    自主实现HTTP服务器项目逻辑
    尚品汇后台管理项目(Vue)
    libnet
    Redis安装和使用(博客)
  • 原文地址:https://blog.csdn.net/baidu_35848778/article/details/133126473