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.获取配置文件

下载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/

2.修改配置文件

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

bind 0.0.0.0 -::1
protected-mode no
port 6379

四、启动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

五、修改iptables文件

查看已有的防火墙规则

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

通过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

增加访问控制规则

# 增加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

重启服务

systemctl restart iptables
iptables -L -n

增加后的防火墙规则

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

总结

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

猜你喜欢

转载自blog.csdn.net/baidu_35848778/article/details/133126473
今日推荐