Гид по технологиям

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

• 6 min read • DevOps • Обновлено 24 Nov 2025
Установка и защита Redis на Ubuntu 18.04
Установка и защита Redis на Ubuntu 18.04

Схема Redis

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
  1. Настройка bind

Выберите IP‑адрес, на котором будет слушать Redis. Не рекомендуется открывать Redis на публичном интерфейсе.

Для одиночной инсталляции на одном сервере используйте локальный интерфейс:

bind 127.0.0.1

Для внутренних сетей укажите приватный IP вашей сети (например 10.0.0.5).

  1. Система и supervision

Если система использует systemd (по умолчанию в Ubuntu 18.04), укажите supervision:

supervised systemd

Сохраните изменения и перезапустите службу, затем включите её в автозагрузку:

sudo systemctl restart redis-server
sudo systemctl enable redis-server

Enable Redis service

Проверьте статус службы:

sudo systemctl status redis-server

Start Redis server

Проверьте, что Redis слушает порт 6379:

netstat -plntu

Подключитесь проверочно через redis-cli:

redis-cli ping
redis-cli ping "Hello Redis"

Вы должны получить PONG или тот текст, который вы передали после ping.

Ping Redis server to test it

Если всё в порядке, базовая установка завершена.

Шаг 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-server

2. Аутентификация по паролю

Redis поддерживает простую аутентификацию паролем через директиву requirepass. Это не замена полноценной сети безопасности, но добавляет контроль доступа.

Откройте redis.conf и раскомментируйте/установите requirepass:

requirepass STr0ngP@ssw0rd!

Замените STr0ngP@ssw0rd! на надёжный пароль из политики вашей организации. После этого требуется аутентификация для большинства команд через AUTH.

Перезапустите службу:

sudo systemctl restart redis-server

3. Отключение опасных команд

Redis позволяет переименовывать или отключать команды с помощью rename-command. Это полезно для предотвращения исполнения команд, которые могут уничтожить данные или изменить конфигурацию.

В redis.conf добавьте строки вида:

# Переименование/отключение опасных команд
rename-command FLUSHALL "DELITALL"
rename-command CONFIG "MYSERVERCONF"
# Для полного отключения: rename-command DEBUG ""

После этого перезапустите Redis:

sudo systemctl restart redis-server

Edit Redis configuration

Дополнительные меры: шифрование данных в транспорте (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"

Testing Redis

Redis response

2. Тест переименованных команд

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

FLUSHALL
CONFIG

Вы должны получить ошибку выполнения. Затем выполните переименованные команды:

SET Name "Hakase Labs"
SET Blog "Howtoforge.com"
KEYS *

DELITALL

MYSERVERCONF get bind
MYSERVERCONF get requirepass

Test renamed command

Get Redis config

Если всё работает как ожидалось, базовая защита и тесты пройдены.

Практические рекомендации: когда этой инструкции недостаточно

  • Для кластеров 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
  • Резервные копии создаются по расписанию

Мини‑методология развёртывания

  1. Подготовьте тестовую VM с Ubuntu 18.04.
  2. Установите Redis и выполните базовую настройку.
  3. Протестируйте локально и по сети (с приватного хоста).
  4. Включите бекёпы и мониторинг.
  5. Переведите изменения в 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 для шифрования трафика
  • Настройку репликации и кластеризации
  • Централизованный менеджер секретов
  • Политики резервного копирования и восстановления

Ссылки

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро