Установка и защита Redis на Ubuntu 22.04

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-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.

Авторизуемся:

auth strong_redis_password

Ответ сервера:

OK

Проверим ещё раз:

ping
PONG

Шаг 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 безопасным компонентом вашей инфраструктуры.

Комментарии (0)

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

Похожие статьи

Простой способ работать с конкурентностью и параллелизмом в Python

Объяснение, как с помощью стандартных средств Python (concurrent.futures) легко решать задачи конкурентности и параллелизма. Приведены практические примеры использования пулов потоков и процессов.

41 0 2 мин

Как загружать большие файлы в Laravel

Подробный практический гайд по загрузке больших файлов в Laravel с использованием разбиения на части и функцией возобновления. Объясняется, как организовать сервер и клиент для надёжной загрузки больших файлов.

36 0 2 мин

Как отключить SELinux на Ubuntu, CentOS, Debian и RHEL

Подробная инструкция по проверке, временной и постоянной деактивации SELinux на популярных Linux-дистрибутивах: Ubuntu, Debian, CentOS и RHEL. Объяснены способы через консоль и конфигурационные файлы.

17 0 1 мин