Настройки безопасности Redis

RedisBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы научитесь повышать безопасность вашего сервера Redis. Мы рассмотрим установку пароля для предотвращения несанкционированного доступа и отключение определенных команд для ограничения потенциального злоупотребления. К концу этой лабораторной работы у вас будет более безопасный экземпляр Redis.

Установка пароля с помощью CONFIG SET requirepass

По умолчанию Redis не требует пароля, что делает его уязвимым. Установка пароля — это первый и самый важный шаг в обеспечении безопасности вашего сервера Redis. Для этого мы будем использовать команду CONFIG SET requirepass.

Команда CONFIG SET позволяет динамически изменять настройки конфигурации Redis. Параметр requirepass указывает пароль, который клиенты должны предоставить для подключения к серверу.

Приступим:

  1. Подключитесь к серверу Redis с помощью redis-cli:

    Откройте терминал в виртуальной машине LabEx. Рабочий каталог по умолчанию: ~/project. Выполните следующую команду:

    redis-cli

    Это подключит вас к серверу Redis, работающему на хосте по умолчанию (127.0.0.1) и порту (6379). Вы должны увидеть приглашение 127.0.0.1:6379>.

    127.0.0.1:6379>
  2. Установите пароль с помощью команды CONFIG SET requirepass:

    Мы установим пароль mysecretpassword. Для производственных сред выбирайте надежный, уникальный пароль.

    CONFIG SET requirepass mysecretpassword

    Вы должны увидеть следующий вывод:

    OK

    Это подтверждает, что пароль установлен.

    Теперь выйдите из redis-cli, набрав exit и нажав Enter. Это гарантирует, что ваши команды будут залогированы.

    exit
  3. Попытайтесь выполнить команду без аутентификации:

    Откройте новый терминал и подключитесь к серверу Redis с помощью redis-cli:

    redis-cli

    Попробуйте выполнить простую команду, например PING:

    PING

    Вы должны получить сообщение об ошибке:

    (error) NOAUTH Authentication required.

    Это указывает на то, что теперь требуется аутентификация.

  4. Выйдите из redis-cli:

    Чтобы убедиться, что команда залогирована, выйдите из redis-cli, набрав exit или нажав Ctrl+D.

    exit

    Это важно для корректной работы этапа проверки.

Аутентификация с помощью команды AUTH

Теперь, когда мы установили пароль, давайте научимся аутентифицироваться на сервере Redis с помощью команды AUTH. Эта команда требует пароль, который вы установили на предыдущем шаге.

  1. Подключитесь к серверу Redis с помощью redis-cli:

    Откройте терминал в виртуальной машине LabEx. Рабочий каталог по умолчанию: ~/project. Выполните следующую команду:

    redis-cli

    Вы должны увидеть приглашение 127.0.0.1:6379>.

  2. Аутентифицируйтесь с помощью команды AUTH:

    Используйте команду AUTH, за которой следует пароль, установленный ранее:

    AUTH mysecretpassword

    Если аутентификация прошла успешно, вы увидите:

    OK
  3. Выполните команду после аутентификации:

    Теперь, когда вы аутентифицированы, попробуйте команду PING еще раз:

    PING

    Вы должны получить ожидаемый ответ:

    PONG
  4. Выйдите из redis-cli:

    Выйдите из redis-cli, набрав exit или нажав Ctrl+D.

    exit

Ограничение опасных команд

Redis предлагает множество команд, но некоторые из них могут быть рискованными в определенных средах. Хотя мы не можем динамически отключать команды с помощью CONFIG SET (поскольку rename-command требует перезапуска сервера), мы можем продемонстрировать концепцию безопасности команд, показав, как работают опасные команды, такие как FLUSHALL, и почему их следует ограничивать в производственных средах.

  1. Подключитесь к серверу Redis с помощью redis-cli:

    Откройте терминал в виртуальной машине LabEx. Рабочий каталог по умолчанию: ~/project. Выполните следующую команду:

    redis-cli

    Вы должны увидеть приглашение 127.0.0.1:6379>.

  2. Аутентифицируйтесь с помощью команды AUTH:

    Аутентифицируйтесь с помощью команды AUTH, за которой следует ваш пароль:

    AUTH mysecretpassword

    После успешной аутентификации вы должны увидеть вывод OK.

  3. Создайте тестовые данные для демонстрации опасности FLUSHALL:

    SET testkey "important data"
    SET anotherkey "more important data"

    Обе команды должны вернуть OK.

  4. Проверьте наличие данных:

    KEYS *

    Вы должны увидеть оба ключа в списке:

    1) "testkey"
    2) "anotherkey"
  5. Продемонстрируйте опасную команду FLUSHALL:

    Внимание: Эта команда удалит все данные во всех базах данных!

    FLUSHALL

    Вы должны увидеть:

    OK

    Эта команда успешно удаляет все данные из всех баз данных.

  6. Проверьте, что все данные удалены:

    KEYS *

    Вы должны увидеть:

    (empty array)

    Это демонстрирует, почему FLUSHALL считается опасной и должна быть отключена в производственной среде путем добавления rename-command FLUSHALL "" в файл redis.conf.

  7. Выйдите из redis-cli:

    Выйдите из redis-cli, набрав exit или нажав Ctrl+D.

    exit

Резюме

В этой лабораторной работе вы научились повышать безопасность Redis. Вы установили пароль с помощью CONFIG SET requirepass для предотвращения несанкционированного доступа. Вы также узнали, как аутентифицироваться с помощью команды AUTH, и продемонстрировали опасный характер команд, таких как FLUSHALL, которые могут удалять все данные. В производственных средах такие опасные команды следует отключать, добавив rename-command FLUSHALL "" в файл redis.conf и перезапустив сервер Redis. Эти шаги необходимы для обеспечения безопасности вашего сервера Redis.