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

Установка и защита Redis на CentOS 8

• 5 min read • Базы данных • Обновлено 28 Nov 2025
Redis на CentOS 8 — установка и защита
Redis на CentOS 8 — установка и защита

Сервер Redis: логотип и схема использования на CentOS 8

  • Кратко: инструкция по установке, базовой настройке кеша и защите Redis на CentOS 8. Описаны запуск, проверка, настройка maxmemory, включение пароля, переименование опасных команд и дополнительные меры безопасности.
  • Для кого: системные администраторы и разработчики, которые хотят надёжно запустить Redis в локальной или серверной среде CentOS 8.

Что это в одну строку: Redis — быстрый in-memory key-value store, подходящий как кеш, брокер сообщений и лёгкая БД.

Требования

  • Сервер с установленной CentOS 8.
  • Доступ root или пользователь с sudo.

Установка Redis

Пакет Redis доступен в репозитории CentOS 8. Установите командой:

dnf install redis -y

После установки запустите сервис и включите автозапуск при загрузке:

systemctl start redis
systemctl enable redis

Проверьте статус сервиса:

systemctl status redis

Пример ожидаемого вывода:

   Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/redis.service.d
           ??limit.conf
   Active: active (running) since Tue 2020-09-15 04:52:54 EDT; 6s ago
 Main PID: 3076 (redis-server)
    Tasks: 4 (limit: 12527)
   Memory: 6.6M
   CGroup: /system.slice/redis.service
           ??3076 /usr/bin/redis-server 127.0.0.1:6379

Sep 15 04:52:54 centos8 systemd[1]: Starting Redis persistent key-value database...
Sep 15 04:52:54 centos8 systemd[1]: Started Redis persistent key-value database.

По умолчанию Redis слушает порт 6379. Проверка порта:

ss -ant | grep 6379

Ожидаемый вывод:

LISTEN     0        128             127.0.0.1:6379              0.0.0.0:*

Тест подключения с помощью клиента redis-cli:

redis-cli

Вы увидите приглашение:

127.0.0.1:6379>

Проверка отклика:

127.0.0.1:6379> ping

Ожидаемый ответ:

PONG

Настройка Redis как кеша

Откройте конфигурационный файл:

nano /etc/redis.conf

Добавьте в конец файла (или измените существующие значения):

maxmemory 128mb
maxmemory-policy allkeys-lru

Сохраните файл и перезапустите сервис:

systemctl restart redis

Примечание: задайте maxmemory исходя из объёма оперативной памяти и требований приложений. Стратегия allkeys-lru удаляет наименее недавно использованные ключи из всех ключей.

Базовая защита: пароль для redis-cli

По умолчанию любая локальная сессия redis-cli может выполнять команды, поэтому стоит включить аутентификацию.

  1. Откройте конфигурацию:
nano /etc/redis.conf
  1. Найдите строку (может быть закомментирована):
# requirepass foobared
  1. Замените её на безопасную строку пароля (пример в оригинале):
requirepass A	D3Fs4%#df
  1. Перезапустите сервис:
systemctl restart redis
  1. Попробуйте подключиться и выполнить INFO без аутентификации:
redis-cli
127.0.0.1:6379> INFO server

Вы получите ошибку:

NOAUTH Authentication required.
  1. Аутентификация:
127.0.0.1:6379> AUTH A	D3Fs4%#df

Ожидаемый ответ:

OK
  1. После AUTH команда INFO вернёт данные сервера, например часть вывода:
# Server
redis_version:5.0.3
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:28849dbea6f07cc8
redis_mode:standalone
os:Linux 4.18.0-193.14.2.el8_2.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
executable:/usr/bin/redis-server
config_file:/etc/redis.conf

Важно: пароль хранится в конфигурационном файле в открытом виде — ограничьте права доступа к этому файлу и рассмотрите использование системных секрет-менеджеров для продакшн-сред.

Переименование опасных команд

Некоторые команды, например CONFIG, могут раскрыть конфигурацию и пароль. Лучше переименовать их.

  1. Откройте /etc/redis.conf:
nano /etc/redis.conf
  1. Найдите строку (возможно закомментированную):
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
  1. Замените на уникальное имя, недоступное злоумышленнику, например:
rename-command CONFIG hitredis
  1. Перезапустите сервис:
systemctl restart redis
  1. Попробуйте вызвать старую команду после аутентификации:
redis-cli
127.0.0.1:6379> AUTH A	D3Fs4%#df
127.0.0.1:6379> config get requirepass

Ожидаемая ошибка:

(error) ERR unknown command `config`, with args beginning with: `get`, `requirepass`,
  1. Выполнение переименованной команды:
127.0.0.1:6379> hitredis get requirepass

Вернёт пароль (если пользователь авторизован):

1) "requirepass"
2) "A	D3Fs4%#df"

Примечание: переименование команд помогает уменьшить риск автоматических эксплойтов, но не заменяет сетевых и аутентификационных мер.

Дополнительные меры безопасности и эксплуатация

  • Привязка к интерфейсу: в /etc/redis.conf укажите bind 127.0.0.1 или конкретный приватный IP, чтобы запретить доступ снаружи.
  • protected-mode: держите protected-mode yes для неаутентифицированных инстансов.
  • Защита файлы: chmod 640 /etc/redis.conf; владелец root.
  • Firewall: откройте порт 6379 только для доверенных хостов (firewalld или iptables):
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="6379" accept'
firewall-cmd --reload
  • Persistence: решите стратегию RDB (snapshot) или AOF (append-only file) в зависимости от требований устойчивости и восстановления.
  • Бэкапы: регулярно копируйте dump.rdb и/или appendonly.aof на внешний хранилище.
  • Мониторинг: используйте INFO, slowlog, Redis Exporter + Prometheus и алерты по росту памяти и latency.
  • Логи: пересмотрите systemd-журнал и лог Redis по проблемам.

Технические подсказки и примеры конфигурации

Фрагменты, которые часто меняют в /etc/redis.conf:

# Бинд на localhost
bind 127.0.0.1

# Включить защищённый режим
protected-mode yes

# Ограничение памяти
maxmemory 128mb
maxmemory-policy allkeys-lru

# Аутентификация
requirepass A	D3Fs4%#df

# Переименование опасной команды
rename-command CONFIG hitredis

Критерии приёмки

  • Redis установлен и сервис active (systemctl status redis).
  • redis-cli отвечает PONG на ping.
  • maxmemory и политика применены (проверить через CONFIG GET maxmemory и maxmemory-policy или INFO).
  • requirepass задан и AUTH возвращает OK; до AUTH команды INFO вызывают NOAUTH.
  • Переименованная команда CONFIG недоступна по старому имени.

Роль‑ориентированные контрольные списки

Sysadmin:

  • Установить пакет, запустить и включить сервис.
  • Настроить firewall и права на файл конфигурации.
  • Настроить бэкапы и мониторинг.

Разработчик:

  • Настроить клиентскую библиотеку на использование пароля.
  • Тестировать поведение кеша при низкой памяти (eviction).
  • Обработать ошибки подключения и таймауты.

DevSecOps:

  • Проанализировать открытые порты и конфигурацию привязки.
  • Рассмотреть использование TLS (stunnel/обёртки) и секрет‑менеджера.

Отказоустойчивость и откат (runbook)

Если после изменения конфигурации Redis перестаёт стартовать:

  1. Проверить journalctl -u redis -b для ошибок синтаксиса конфигурации.
  2. Вернуть рабочую копию /etc/redis.conf из бэкапа.
  3. systemctl restart redis и проверить статус.
  4. Если данные повреждены, восстановить dump.rdb из бэкапа.

Тестовые сценарии и приёмка

  • Функциональный: подключение, AUTH, PING, SET/GET ключа.
  • Нагрузочный: симулировать рост ключей и проверить поведение maxmemory-policy.
  • Безопасность: попытаться выполнить CONFIG без AUTH и по старому имени команды.

Частые ошибки и способы устранения

  • “NOAUTH Authentication required.” — нужно выполнить AUTH с правильным паролем.
  • Сервер слушает только на 127.0.0.1 — проверьте bind и firewall.
  • Данные исчезают при нехватке памяти — проверьте maxmemory-policy и логи eviction.

Короткая методология включения Redis в проект

  1. Развернуть инстанс в изолированной сети.
  2. Включить requirepass и bind на приватный интерфейс.
  3. Настроить maxmemory и политику eviction.
  4. Настроить мониторинг и бэкапы.
  5. Тестировать и документировать поведение приложений при отказах.

Заключение

Вы успешно установили Redis на CentOS 8, настроили его как кеш, включили базовую защиту паролем и переименовали потенциально опасную команду. Дополните инструкцию шифрованием трафика (TLS) и централизованным хранением секретов для продакшн‑развёртывания.

Важно: не храните секреты в системах с публичным доступом и регулярно пересматривайте политику доступа.

Ключевые команды для быстрого копирования

dnf install redis -y
systemctl start redis
systemctl enable redis
systemctl restart redis
redis-cli
ss -ant | grep 6379
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="6379" accept'
firewall-cmd --reload

Если хотите, могу помочь: подобрать параметры maxmemory для конкретного объёма RAM, автоматизировать развёртывание через Ansible или подготовить конфиг с 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 быстро