描述:项目中用到了redis,存的数据设置了有效期为一天,但是没过一会儿redis中存的该数据莫名其妙的就删除了。我用的是docker容器,下面是找问题以及解决问题的过程。
1,进到redis容器
docker exec -it 容器ID /bin/bash
2,链接reids
redis-cli
3,进入到 redis 监控模式
monitor
也可以把监控信息输出到文件中:redis-cli monitor >/data/logs/redis/log0326.txt
然后就看到了输出了日志如下,可以看到居然执行了flushall命令
因为redis没有设置密码,是受到了木马的攻击,阔怕(其实也是小场面)。
此木马脚本分为三个部分:init.sh、is.sh、rs.sh,首先黑客拿到我们的 Redis 链接,因为没有密码直接就连接到了 Redis,然后利用 Redis 未授权访问漏洞执行 Redis 命令:
-
init.sh 主要功能是:关闭selinux、杀掉别人的挖矿进程、杀掉CPU占用过高的进程,如果是自己就跳过、修改破坏系统命令、自己造一个下载器downloads()函数、解锁和加锁定时任务、添加挖矿技术任务、设置SSH免密登陆、下载执行矿机挖矿程序、关闭防火墙、清除日志、感染已知的免密机器、下载执行is.sh。
-
is.sh 主要功能是:下载masscan扫描器、下载pnscan扫描器、安装 redis 用于创建 redis 未授权访问的漏洞、执行 rs.sh。
-
rs.sh 主要功能是:开放 6379 端口、自动化利用redis未授权写入定时任务、利用 pnscan 扫描b段IP 6379 端口、利用 masscan 进行扫描端口。
这个漏洞只危害安装了Redis并且没有设置密码的机器
所以我就把redis设置了密码
1,进到redis容器
docker exec -it 容器ID /bin/bash
2,链接redis客户端
redis-cli
3,查看现有的redis密码:
config get requirepass
4,设置 redis 密码:
config set requirepass ****(****为你要设置的密码)
5,设置完密码之后再执行第3步查看密码可能会报以下错,则使用 auth 密码 来认证密码
(error) NOAUTH Authentication required.错误
auth 你的密码
设置完之后就完美解决了;