描述:项目中用到了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 你的密码
设置完之后就完美解决了;

docker-compose设置redis密码:

command: redis-server --port 6379 --requirepass {密码}  --appendonly yes
# Redis服务容器
  redis:
    build:
      context: ../docker-file/redis
    container_name: redis
    #command: redis-server /usr/local/bin/redis.conf
    command: redis-server --port 6379 --requirepass ieksa%*(jisw%(*  --appendonly yes
    restart: always
    volumes:
      - ../docker-data/redis:/data
      - ../docker-file/redis/redis.conf:/etc/redis/redis.conf
    ports:
      - 6379:6379
    networks:
      - backend