Введение
В этой лабораторной работе вы научитесь повышать безопасность вашего сервера Redis. Мы рассмотрим установку пароля для предотвращения несанкционированного доступа и отключение определенных команд для ограничения потенциального злоупотребления. К концу этой лабораторной работы у вас будет более безопасный экземпляр Redis.
Установка пароля с помощью CONFIG SET requirepass
По умолчанию Redis не требует пароля, что делает его уязвимым. Установка пароля — это первый и самый важный шаг в обеспечении безопасности вашего сервера Redis. Для этого мы будем использовать команду CONFIG SET requirepass.
Команда CONFIG SET позволяет динамически изменять настройки конфигурации Redis. Параметр requirepass указывает пароль, который клиенты должны предоставить для подключения к серверу.
Приступим:
Подключитесь к серверу Redis с помощью
redis-cli:Откройте терминал в виртуальной машине LabEx. Рабочий каталог по умолчанию:
~/project. Выполните следующую команду:redis-cliЭто подключит вас к серверу Redis, работающему на хосте по умолчанию (127.0.0.1) и порту (6379). Вы должны увидеть приглашение
127.0.0.1:6379>.127.0.0.1:6379>Установите пароль с помощью команды
CONFIG SET requirepass:Мы установим пароль
mysecretpassword. Для производственных сред выбирайте надежный, уникальный пароль.CONFIG SET requirepass mysecretpasswordВы должны увидеть следующий вывод:
OKЭто подтверждает, что пароль установлен.
Теперь выйдите из
redis-cli, набравexitи нажав Enter. Это гарантирует, что ваши команды будут залогированы.exitПопытайтесь выполнить команду без аутентификации:
Откройте новый терминал и подключитесь к серверу Redis с помощью
redis-cli:redis-cliПопробуйте выполнить простую команду, например
PING:PINGВы должны получить сообщение об ошибке:
(error) NOAUTH Authentication required.Это указывает на то, что теперь требуется аутентификация.
Выйдите из
redis-cli:Чтобы убедиться, что команда залогирована, выйдите из
redis-cli, набравexitили нажавCtrl+D.exitЭто важно для корректной работы этапа проверки.
Аутентификация с помощью команды AUTH
Теперь, когда мы установили пароль, давайте научимся аутентифицироваться на сервере Redis с помощью команды AUTH. Эта команда требует пароль, который вы установили на предыдущем шаге.
Подключитесь к серверу Redis с помощью
redis-cli:Откройте терминал в виртуальной машине LabEx. Рабочий каталог по умолчанию:
~/project. Выполните следующую команду:redis-cliВы должны увидеть приглашение
127.0.0.1:6379>.Аутентифицируйтесь с помощью команды
AUTH:Используйте команду
AUTH, за которой следует пароль, установленный ранее:AUTH mysecretpasswordЕсли аутентификация прошла успешно, вы увидите:
OKВыполните команду после аутентификации:
Теперь, когда вы аутентифицированы, попробуйте команду
PINGеще раз:PINGВы должны получить ожидаемый ответ:
PONGВыйдите из
redis-cli:Выйдите из
redis-cli, набравexitили нажавCtrl+D.exit
Ограничение опасных команд
Redis предлагает множество команд, но некоторые из них могут быть рискованными в определенных средах. Хотя мы не можем динамически отключать команды с помощью CONFIG SET (поскольку rename-command требует перезапуска сервера), мы можем продемонстрировать концепцию безопасности команд, показав, как работают опасные команды, такие как FLUSHALL, и почему их следует ограничивать в производственных средах.
Подключитесь к серверу Redis с помощью
redis-cli:Откройте терминал в виртуальной машине LabEx. Рабочий каталог по умолчанию:
~/project. Выполните следующую команду:redis-cliВы должны увидеть приглашение
127.0.0.1:6379>.Аутентифицируйтесь с помощью команды
AUTH:Аутентифицируйтесь с помощью команды
AUTH, за которой следует ваш пароль:AUTH mysecretpasswordПосле успешной аутентификации вы должны увидеть вывод
OK.Создайте тестовые данные для демонстрации опасности
FLUSHALL:SET testkey "important data" SET anotherkey "more important data"Обе команды должны вернуть
OK.Проверьте наличие данных:
KEYS *Вы должны увидеть оба ключа в списке:
1) "testkey" 2) "anotherkey"Продемонстрируйте опасную команду
FLUSHALL:Внимание: Эта команда удалит все данные во всех базах данных!
FLUSHALLВы должны увидеть:
OKЭта команда успешно удаляет все данные из всех баз данных.
Проверьте, что все данные удалены:
KEYS *Вы должны увидеть:
(empty array)Это демонстрирует, почему
FLUSHALLсчитается опасной и должна быть отключена в производственной среде путем добавленияrename-command FLUSHALL ""в файлredis.conf.Выйдите из
redis-cli:Выйдите из
redis-cli, набравexitили нажавCtrl+D.exit
Резюме
В этой лабораторной работе вы научились повышать безопасность Redis. Вы установили пароль с помощью CONFIG SET requirepass для предотвращения несанкционированного доступа. Вы также узнали, как аутентифицироваться с помощью команды AUTH, и продемонстрировали опасный характер команд, таких как FLUSHALL, которые могут удалять все данные. В производственных средах такие опасные команды следует отключать, добавив rename-command FLUSHALL "" в файл redis.conf и перезапустив сервер Redis. Эти шаги необходимы для обеспечения безопасности вашего сервера Redis.


