Redis - это высокопроизводительное хранилище данных в памяти, которое часто используют как кеш, брокер сообщений или простую NoSQL-базу. Он ценится за скорость, простоту и гибкость, но при неправильной настройке может стать уязвимым местом в системе.
В этой статье разберём, как установить Redis на Ubuntu 22.04, проверить его работу и выполнить базовую настройку безопасности для использования на продакшене.
Шаг 1. Установка Redis из официальных репозиториев
В Ubuntu 22.04 Redis уже доступен в стандартных репозиториях, поэтому дополнительную настройку источников делать не нужно. Сначала обновим список пакетов:
sudo apt updateПример вывода:
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:3 http://security.ubuntu.com/ubuntu jammy-security InRelease
Reading package lists... DoneТеперь устанавливаем Redis:
sudo apt install redis-server -yВо время установки будет установлен сам сервер Redis и утилита redis-cli.
Шаг 2. Проверка работы Redis
После установки Redis запускается автоматически. Проверим его статус через systemd:
sudo systemctl status redis-serverОжидаемый вывод:
● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running)
Docs: http://redis.io/documentation,
man:redis-server(1)Теперь подключимся к Redis через консольный клиент:
redis-cliЕсли сервер работает корректно, вы увидите приглашение:
127.0.0.1:6379>Проверим соединение командой ping:
pingОтвет Redis:
PONGДля выхода из клиента используйте:
exitШаг 3. Настройка Redis для работы под systemd
В Ubuntu 22.04 Redis уже корректно интегрирован с systemd, но важно убедиться, что он запущен именно в этом режиме. Откроем конфигурационный файл:
sudo nano /etc/redis/redis.confНайдите строку:
supervised noЗамените её на:
supervised systemdСохраните файл и перезапустите Redis:
sudo systemctl restart redis-serverШаг 4. Базовая настройка безопасности Redis
По умолчанию Redis слушает только localhost, но не требует аутентификации. Это удобно для разработки, но небезопасно для продакшена. Поэтому нужно ограничить доступ по сети. Для этого конфигурационном файле Redis убедитесь, что сервер привязан только к локальному интерфейсу:
sudo nano /etc/redis/redis.confНайдите директиву bind:
bind 127.0.0.1 ::1Так Redis будет доступен только локально и по IPv4, и по IPv6.
Включение пароля для Redis
В том же файле найдите строку:
# requirepass foobaredРаскомментируйте её и укажите сложный пароль:
requirepass strong_redis_passwordСохраните изменения и перезапустите Redis:
sudo systemctl restart redis-serverТеперь при подключении без пароля Redis будет отклонять команды:
redis-cli127.0.0.1:6379> ping
(error) NOAUTH Authentication required.Авторизуемся:
auth strong_redis_passwordОтвет сервера:
OKПроверим ещё раз:
pingPONGШаг 5. Переименование опасных команд
Redis предоставляет команды, которые могут быть опасны при компрометации доступа, например FLUSHALL или CONFIG. Для дополнительной защиты можно переименовать или отключить их. В файле конфигурации добавьте, например:
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""После этого Redis не позволит использовать эти команды. Перезапустите сервис:
sudo systemctl restart redis-serverШаг 6. Проверка настроек после перезапуска
Подключаемся снова:
redis-cliАвторизуемся:
auth strong_redis_passwordИ проверяем, что Redis работает корректно:
info serverЕсли в ответе отображается информация о сервере, значит конфигурация применена успешно.
Заключение
Redis на Ubuntu 22.04 устанавливается быстро и без лишних действий, но из коробки он не готов к безопасной работе в продакшене. Обязательные шаги это ограничение сетевого доступа, включение пароля и отключение опасных команд.
Даже эти базовые меры значительно снижают риск несанкционированного доступа и делают Redis безопасным компонентом вашей инфраструктуры.