6.17 Встановлення та налаштування Redis

Банер

Redis (Remote Dictionary Server) є потужною системою управління базами даних типу “ключ-значення”, яка набула широкого розповсюдження серед розробників завдяки своїй високій продуктивності та універсальності. Ця технологія виступає не просто сховищем даних, а й слугує ефективним інструментом кешування, черг повідомлень та реалізації складних структур даних у реальному часі.

Унікальність Redis полягає в її здатності зберігати різноманітні типи даних — від простих рядків до складних структур, таких як списки, множини, хеш-таблиці та інші. Завдяки підтримці операцій in-memory та можливості збереження даних на диск, Redis забезпечує неперевершену швидкість роботи з даними при збереженні надійності.

Важливо: перед встановленням Redis переконайтеся, що Ваша система відповідає мінімальним системним вимогам та має актуальні системні оновлення.

Важливо мати рівень доступу root. Налаштування вийде реалізувати на наших послугах віртуальних та виділених серверів.

Підготовка системи

Оновлення системи

Для Debian/Ubuntu:
  1. sudo apt update
  2. sudo apt upgrade -y
Для CentOS/AlmaLinux/RockyLinux:
  1. sudo dnf update -y

Встановлення Redis

Debian/Ubuntu:
  1. # Завантажуємо та додаємо ключ для репозиторію Redis
  2. curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
  3. # Додаємо репозиторій Redis до списку джерел APT
  4. echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
  5. # Встановлюємо Redis
  6. sudo apt install redis -y
CentOS/AlmaLinux/RockyLinux:
  1. sudo dnf install -y epel-release
  2. sudo dnf install -y redis

Базова конфігурація Redis

  1. Редагування конфігураційного файлу:
  1. sudo nano /etc/redis/redis.conf
  1. Ключові налаштування безпеки:
# Обмеження прослуховування тільки для локального доступу
bind 127.0.0.1 ::1

# Встановлення надійного паролю
requirepass StrongRedisPassword2024!

# Обмеження використання пам'яті
maxmemory 2gb
maxmemory-policy allkeys-lru

# Відключення команд, які можуть використовуватися для потенційного зловживання
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command SHUTDOWN ""
rename-command DEBUG ""
  1. Збереження та перезапуск служби:
  1. sudo systemctl restart redis-server
  1. Увімкнення автозапуска служби:
  1. sudo systemctl enable redis
  1. Перевірка чи автозапуск активний:
  1. systemctl is-enabled redis

Якщо команда поверне enabled, це означає що автозапуск увімкнений.

Може бути повернутий результат alias, це означає, що сервіс redis працює через символьне посилання (alias) на інший сервіс. Зазвичай, це трапляється, якщо у Вашій системі redis налаштований як “псевдонім” до іншого сервісу, наприклад, redis-server.

Налаштування файрволів

Інформуємо: для зручності введеня великої кількості послідовних команд, Вам буде надано приклад з використанням Heredoc. Розглянемо що це таке.

Heredoc (скорочено від “here document”) є зручним механізмом у bash-скриптингу, який дозволяє передавати багаторядковий текст або послідовність команд безпосередньо в команду або інтерпретатор. Синтаксис heredoc використовує оператори << з довільним роздільником (найчастіше EOF), що створює унікальний спосіб групування та виконання команд.

Механізм heredoc працює наступним чином:

  • Інтерпретатор bash створює тимчасовий текстовий потік.
  • Всі команди між маркерами <<EOF та EOF виконуються послідовно.
  • Дозволяє групувати складні послідовності команд без створення тимчасових файлів.
  • Забезпечує контрольовану передачу даних між командами.

Основна перевага — можливість виконання блоку команд з підвищеними правами (через sudo) без необхідності створення окремого скрипта.

Налаштування iptables:
  1. sudo bash << EOF
  2. # Повна конфігурація iptables для Redis
  3. iptables -F
  4. iptables -X
  5. # Базові політики
  6. iptables -P INPUT DROP
  7. iptables -P FORWARD DROP
  8. iptables -P OUTPUT ACCEPT
  9. # Дозвіл локальних з'єднань
  10. iptables -A INPUT -i lo -j ACCEPT
  11. # Дозвіл встановлених з'єднань
  12. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  13. # Дозвіл SSH
  14. iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  15. # Дозвіл Redis з локальної мережі
  16. iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 6379 -j ACCEPT
  17. # Закриття порту Redis для зовнішніх підключень
  18. iptables -A INPUT -p tcp --dport 6379 -j LOG --log-prefix "Redis Connection Attempt: "
  19. iptables -A INPUT -p tcp --dport 6379 -j DROP
  20. EOF

Збереження правил:

  1. sudo apt install -y iptables-persistent
  2. netfilter-persistent save
Налаштування firewalld:
  1. sudo bash << EOF
  2. # Встановлення та налаштування firewalld
  3. dnf install -y firewalld
  4. # Запуск та активація служби
  5. systemctl enable firewalld
  6. systemctl start firewalld
  7. # Додавання правил для Redis
  8. firewall-cmd --permanent --add-port=6379/tcp
  9. firewall-cmd --permanent --add-rich-rule='
  10. rule family="ipv4"
  11. source address="192.168.0.0/24"
  12. port protocol="tcp" port="6379"
  13. accept'
  14. # Застосування змін
  15. firewall-cmd --reload
  16. EOF
Налаштування UFW:
  1. sudo bash << EOF
  2. # Встановлення та базове налаштування UFW
  3. apt install -y ufw
  4. # Базові політики
  5. ufw default deny incoming
  6. ufw default allow outgoing
  7. # Дозвіл SSH
  8. ufw allow ssh
  9. # Дозвіл Redis з локальної мережі
  10. ufw allow from 192.168.0.0/24 to any port 6379
  11. # Активація UFW
  12. ufw enable
  13. EOF

Перевірка статусу служби Redis

1. Перевірка статусу системної служби Redis.

Щоб дізнатися, чи працює служба Redis, виконайте команду:

  1. sudo systemctl status redis

Ви побачите інформацію про стан служби, включаючи активність та можливі помилки.

2. Перевірка роботи Redis через redis-cli.

Для швидкої перевірки, чи відповідає Redis:

  1. redis-cli ping

У відповідь має бути PONG, що вказує на коректну роботу.

3. Перевірка, чи служба прослуховує порт 6379 (порт за замовчуванням).

Використовуйте netstat або ss, щоб перевірити, чи Redis прослуховує потрібний порт:

  1. sudo netstat -tuln | grep 6379

Або за допомогою ss:

  1. sudo ss -tuln | grep 6379

Якщо порт прослуховується, це підтверджує, що Redis працює.

4. Додаткова перевірка конфігурації Redis.

Щоб дізнатися активні параметри Redis, підключіться до нього за допомогою клієнта:

  1. redis-cli

І введіть команду:

  1. CONFIG GET *

Це дозволить побачити всі параметри конфігурації, включаючи порт, режим роботи та інші налаштування.