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

Redis — это открытое, in-memory хранилище ключ‑значение. Его используют как базу данных, кэш и брокер сообщений. Redis поддерживает строки, хэши, списки, множества, битмапы, отсортированные множества, HyperLogLog, стримы и геопространственные индексы с запросами по радиусу.
В этом руководстве мы последовательно установим Redis Server на Ubuntu 18.04 LTS, выполним базовую настройку и применим рекомендации по защите для использования в продуктивной среде.
Что вам понадобится
- Сервер с Ubuntu 18.04 LTS.
- Рекомендуемый минимум для теста: 1 ГБ ОЗУ и 2 vCPU. Для продакшена нужно значительно больше — зависит от нагрузки.
- Пользователь с правами sudo.
Краткий план
- Установка Redis Server
- Базовая конфигурация
- Защита установки (сеть, пароль, отключение опасных команд)
- Тестирование и приёмка
Важно: инструкции пригодны для одиночного инстанса Redis. Для кластерной установки, репликации и высокодоступных конфигураций понадобятся дополнительные шаги.
Шаг 1 — Установка Redis Server
Сначала обновите индексы пакетов и обновите установленные пакеты:
sudo apt update
sudo apt upgradeЗатем установите пакет redis-server из официального репозитория Ubuntu:
sudo apt install redis-serverПосле установки служба Redis может показать сообщение об ошибке при первом запуске. Игнорируйте временное сообщение — мы отладим и запустим службу в следующем разделе.
Шаг 2 — Базовая конфигурация Redis
Конфигурационные файлы Redis находятся в каталоге /etc/redis. Откройте основной конфиг:
cd /etc/redis
sudo vim redis.conf- Настройка bind
Выберите IP‑адрес, на котором будет слушать Redis. Не рекомендуется открывать Redis на публичном интерфейсе.
Для одиночной инсталляции на одном сервере используйте локальный интерфейс:
bind 127.0.0.1Для внутренних сетей укажите приватный IP вашей сети (например 10.0.0.5).
- Система и supervision
Если система использует systemd (по умолчанию в Ubuntu 18.04), укажите supervision:
supervised systemdСохраните изменения и перезапустите службу, затем включите её в автозагрузку:
sudo systemctl restart redis-server
sudo systemctl enable redis-server
Проверьте статус службы:
sudo systemctl status redis-server
Проверьте, что Redis слушает порт 6379:
netstat -plntuПодключитесь проверочно через redis-cli:
redis-cli ping
redis-cli ping "Hello Redis"Вы должны получить PONG или тот текст, который вы передали после ping.

Если всё в порядке, базовая установка завершена.
Шаг 3 — Защита установки Redis
Здесь мы разберём три ключевых направления защиты: сетевая изоляция, аутентификация по паролю и отключение опасных команд.
1. Сетевая безопасность
Сетевая безопасность контролируется параметром bind в redis.conf. По возможности держите Redis в приватной сети и не выставляйте его на публичный интерфейс.
Откройте конфиг и замените bind на IP внутренней сети или на 127.0.0.1:
cd /etc/redis
sudo vim redis.conf
# Пример для внутренней сети
bind 10.0.0.5После изменения перезапустите службу:
sudo systemctl restart redis-server2. Аутентификация по паролю
Redis поддерживает простую аутентификацию паролем через директиву requirepass. Это не замена полноценной сети безопасности, но добавляет контроль доступа.
Откройте redis.conf и раскомментируйте/установите requirepass:
requirepass STr0ngP@ssw0rd!Замените STr0ngP@ssw0rd! на надёжный пароль из политики вашей организации. После этого требуется аутентификация для большинства команд через AUTH.
Перезапустите службу:
sudo systemctl restart redis-server3. Отключение опасных команд
Redis позволяет переименовывать или отключать команды с помощью rename-command. Это полезно для предотвращения исполнения команд, которые могут уничтожить данные или изменить конфигурацию.
В redis.conf добавьте строки вида:
# Переименование/отключение опасных команд
rename-command FLUSHALL "DELITALL"
rename-command CONFIG "MYSERVERCONF"
# Для полного отключения: rename-command DEBUG ""После этого перезапустите Redis:
sudo systemctl restart redis-server
Дополнительные меры: шифрование данных в транспорте (TLS) и шифрование на диске. Для TLS вам потребуется скомпилированный Redis с поддержкой TLS или прокси (stunnel/nginx). На уровне приложений следует избежать хранения секретов в коде и использовать менеджеры секретов.
Шаг 4 — Тестирование
Проверим корректность работы и защиту.
1. Подключение и аутентификация
Подключитесь к серверу Redis по IP и порту:
redis-cli -h 10.5.5.25 -p 6379Если для сервера включён requirepass, при попытке вызвать команды вы увидите ошибку до AUTH:
ping
ping "Hello Redis"Выполните аутентификацию:
AUTH STr0ngP@ssw0rd!После успешной аутентификации команды будут выполняться:
ping
ping "Hello Redis"

2. Тест переименованных команд
Попробуйте выполнить команды, которые вы переименовали или отключили:
FLUSHALL
CONFIGВы должны получить ошибку выполнения. Затем выполните переименованные команды:
SET Name "Hakase Labs"
SET Blog "Howtoforge.com"
KEYS *
DELITALL
MYSERVERCONF get bind
MYSERVERCONF get requirepass

Если всё работает как ожидалось, базовая защита и тесты пройдены.
Практические рекомендации: когда этой инструкции недостаточно
- Для кластеров Redis (cluster mode) потребуются отдельные настройки bind/ports и межнодовые правила сети.
- Если данные критичны, включите RDB/AOF бэкапы и настройте offsite‑хранилище.
- Для соответствия требованиям безопасности добавьте TLS и аудит соединений.
Важно: переименование команд — это обфускация, а не замена полноценной политики контроля доступа.
Дополнительные материалы и шаблоны
Быстрый чеклист администратора (роль: Администратор)
- Обновить систему: apt update && apt upgrade
- Установить redis-server
- Настроить bind на 127.0.0.1 или приватный IP
- Установить supervised systemd
- Включить requirepass с надёжным паролем
- Переименовать/отключить опасные команды
- Настроить резервное копирование (RDB/AOF)
- Настроить мониторинг и алерты (CPU, память, соединения)
- Настроить брандмауэр (ufw/iptables)
Чеклист разработчика (роль: Разработчик)
- Использовать библиотеку клиента с поддержкой AUTH
- Не хранить пароль в репозитории
- Использовать connection pooling
- Обрабатывать ошибки таймаутов и переподключений
- Тестировать поведение при потере связи с Redis
Критерии приёмки
- Redis слушает только на разрешённом интерфейсе
- AUTH работает: без пароля команды запрещены
- Переименованные команды возвращают ошибку
- Служба запускается автоматически после reboot
- Резервные копии создаются по расписанию
Мини‑методология развёртывания
- Подготовьте тестовую VM с Ubuntu 18.04.
- Установите Redis и выполните базовую настройку.
- Протестируйте локально и по сети (с приватного хоста).
- Включите бекёпы и мониторинг.
- Переведите изменения в production через CI/CD с этапом проверки.
Рекомендации по безопасности (hardening)
- Сетевой уровень: размещайте Redis в приватной подсети и используйте firewall.
- Аутентификация: включите requirepass и используйте секрет‑менеджер для хранения.
- Команды: переименуйте/отключите CONFIG, FLUSHDB, FLUSHALL, DEBUG.
- TLS: примените шифрование транспорта для публичных или смешанных сред.
- Логи и аудит: включите аудит доступа и централизованную запись логов.
Небольшая галерея исключительных случаев
- Если приложение зависит от CONFIG для динамической настройки, переименование CONFIG сломает рабочий процесс. Вместо этого ограничьте доступ на сетевом уровне.
- Если Redis находится за NAT и у вас активен election/replication, убедитесь, что внутренняя адресация и порты согласованы.
- При использовании AOF/RDB на перегруженных дисках следите за задержками записи и используйте тонкую стратегию fsync.
Диаграмма принятия решения для bind и аутентификации
flowchart TD
A[Начало] --> B{Redis в локальной машине?}
B -- Да --> C[bind 127.0.0.1]
B -- Нет --> D{Размещать в приватной сети?}
D -- Да --> E[bind PRIVATE_IP]
D -- Нет --> F[Немедленно переместить в приватную сеть]
C --> G[Включить requirepass]
E --> G
F --> G
G --> H[Переименовать опасные команды]
H --> I[Перезапустить и тестировать]Краткий словарь (1‑строка)
- Redis: памятьное хранилище ключ‑значение с дополнительными типами данных.
- requirepass: директива Redis для включения пароля.
- bind: IP‑адрес(а), на которых Redis слушает соединения.
- rename-command: директива для переименования или отключения команд Redis.
Тестовые случаи и приёмка
- Без AUTH: попытка SET/GET даёт ошибку.
- С AUTH: SET/GET работают.
- Выполнение FLUSHALL до переименования удаляет данные; после — возвращает ошибку.
- Перезапуск службы: systemctl restart redis-server — служба должна подняться без ошибок.
Итог и дальнейшие шаги
Вы установили Redis, настроили базовую конфигурацию и применили ключевые меры безопасности: сетевая изоляция, пароль и переименование опасных команд. Для продакшена рассмотрите:
- TLS для шифрования трафика
- Настройку репликации и кластеризации
- Централизованный менеджер секретов
- Политики резервного копирования и восстановления
Ссылки
- Официальная документация: https://redis.io/documentation
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента