@ArtiomK

Redis в Docker container (открытый для доступа из Интернета) неожиданно начинает писать в var/spool/cron как решить эту проблему?

Буквально вчера установил на сервер Redis 6 в Docker container (контейнер доступен из интернета). Через несколько часов с контейнером происходит такая проблема, он начинает пытаться рабоатьс с директорией var/spool/cron. После перезапуска контейнера, все работает нормально, через несколько часов проблема повторяется.

Искал похожую проблему, пишут, что это происходит якобы из-за того, что Редис взламывают:
Ссылка

Так ли это, или проблема в конфигурации докерфайла или чего-то еще, как решить такую проблему?

FROM redis:6.0-alpine

WORKDIR /usr/src/app

RUN apk add --no-cache tzdata

ENV TZ=Europe/Moscow

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

COPY redis.conf /usr/local/etc/redis/redis.conf

CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

RUN chmod 0755 /usr/src/app/
RUN chmod 0755 /etc/crontabs/
RUN chmod 0755 /data/


Ключевые места файла конфигурации Редиса:

# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1

protected-mode no  # Без этого не доступен из Интернета

port 6379

dbfilename dump.rdb

dir ./

user someusername allcommands allkeys on >somelongpassword  # вроде бы пароль работает, без него не могу зайти


Запускаю так:
docker run -p 6379:6379 -v somevolume:/usr/src/app --name myhackedredisname -d --network somenetwork myhackedredisname_image


Принскрин с терминала прикалдываю:
5f2c2d4e2297f443766288.png
  • Вопрос задан
  • 2573 просмотра
Решения вопроса 1
@ArtiomK Автор вопроса
Как правильно ответил человек, являющийся автором коннектера на C++ для Redis, у Redis есть еще один пользователь, существование которого никак не отображается в файле конфигурации - default пользователь.
У этого пользователя по умолчанию нет вообще никакого пароля, под этим пользователем и заходили при взломе.

Существование этого пользователя и объясняет почему я получал ошибку при попытке сделать защищенный мод включенным.

В итоге я выключил пользователя default, альтернативный вариант сделать ему пароль и включил защищенный мод.

Итого:

Dockerfile:

FROM redis:6.0-alpine

WORKDIR /usr/src/app

RUN apk add --no-cache tzdata

ENV TZ=Europe/Moscow

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

COPY redis.conf /usr/local/etc/redis/redis.conf

CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]


В файле конфигурации Redis:

protected-mode yes

user default off

user someusername allcommands allkeys on >somelongpassword # можно также отключить часть команд
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы