Практическое задание

Эта задача — шаг 8 курса «Redis в проде»

Закрой анонимный доступ к Redis

средне~10 мин

Сейчас любой, кто достучится до порта 6379, работает в Redis без пароля и с полными правами — это пользователь default. Закрой эту дыру:

  • создай администратора ops с паролем ops-secret и полным доступом (все команды, все ключи, все каналы);
  • сделай так, чтобы клиент без аутентификации получал отказ (NOAUTH): отключи default или задай ему пароль;
  • настройки должны пережить перезапуск (service redis-server restart);
  • данные в базе не должны пострадать.
Что потренируешь:
  • redis
  • ACL
  • пользователь default
  • NOAUTH
  • CONFIG REWRITE
  • безопасность

Разбор темы

По умолчанию в Redis есть единственный пользователь default без пароля и со всеми правами: кто подключился — тот и администратор. Такие инстансы, открытые в сеть, массово находят сканеры и превращают в майнеры через CONFIG SET dir + SAVE. Правильная схема — именованные пользователи с паролями (ACL SETUSER) и выключенный default (или default с паролем — так работает старый requirepass). Неаутентифицированный клиент тогда получает NOAUTH на любую команду, кроме AUTH и HELLO. Изменения ACL живут в памяти, поэтому их сохраняют в redis.conf (CONFIG REWRITE) или в отдельный aclfile (ACL SAVE).

Что проверяется

  1. анонимный клиент получает отказ
  2. ops входит с паролем и имеет полный доступ
  3. данные на месте
  4. настройки переживают перезапуск (проверка перезапускает Redis)

Как это выглядит