Page tree

Redis – хранилище для структур данных вида "ключ-значение". Данные в Redis сохраняются в оперативной памяти, благодаря чему он отличается быстродействием и высокой производительностью; однако также есть возможность сохранения данных на диск.

В инструкции ниже мы рассмотрим установку и базовую настройку Redis на сервере с Ubuntu 18.04.

Установка Redis

Для установки подключитесь к серверу по SSH и выполните команды:

sudo apt update
sudo apt install redis-server

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

Откройте его для редактирования:

sudo nano /etc/redis/redis.conf

Найдите строку  supervised no и замените ее на supervised systemd

Закройте редактор, сохранив изменения (в nano это комбинация Ctrl X -> Y -> Enter).

После перезапустите службу, чтобы изменения вступили в силу:

sudo systemctl restart redis.service

Проверка работы

Выполним базовую проверку функционирования Redis.

Подключитесь к оболочке Redis:

redis-cli

Задайте любой ключ для теста:

set ключ значение
 
# Например:
127.0.0.1:6379> set testkey timeweb

Запросите значение заданного ключа:

127.0.0.1:6379> get testkey

В выводе должно быть указанное вами значение.

Для выхода из консоли Redis можно использовать exit или quit:

127.0.0.1:6379> exit

Настройки безопасности

Хотя после установки Redis уже готов к работе, рекомендуется дополнительно выполнить несколько настроек, которые повысят его безопасность.

Привязка к localhost

Сначала нужно убедиться, что Redis доступен только с localhost. Для этого снова откройте конфигурационный файл:

sudo nano /etc/redis/redis.conf

Найдите в нем строку:

bind 127.0.0.1 ::1

Убедитесь, что эта запись присутствует и раскомментирована.

Если потребовалось внести изменения (добавить саму строку или убрать знак комментария), не забудьте после сохранить изменения (Ctrl X -> Y -> Enter) и перезапустить Redis:

sudo systemctl restart redis.service

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

Дополнительно обезопасить Redis можно, установив пароль. При этом очень важно использовать для Redis сложный и длинный пароль. Рекомендуется использовать для его генерации утилиту openssl.

Можно воспользоваться командой:

openssl rand 60 | openssl base64 -A

Будет сформирован пароль вида:

G0YX33FfbjxzeGD5YghLhBr3f1vaGsY173RJ21w2x3BbMUp57AnNQFedZXUcRIQGB3iH54QmGTve8QA 

Его необходимо прописать в конфигурационном файле.

Откройте файл:

sudo nano /etc/redis/redis.conf

Найдите в нем строку:

# requirepass foobared

Можно воспользоваться поиском в nano (сочетание клавиш Ctrl W) и найти нужный раздел по словам "requirepass foobared" или "Require clients to issue AUTH <PASSWORD>".

Раскомментируйте строку и укажите вместо foobared ваш пароль, полученный выше. Например:

requirepass G0YX33FfbjxzeGD5YghLhBr3f1vaGsY173RJ21w2x3BbMUp57AnNQFedZXUcRIQGB3iH54QmGTve8QA  

Сохраните изменения в файле, после чего перезапустите Redis:

sudo systemctl restart redis.service

Проверьте, что пароль успешно установлен. Для этого подключитесь к консоли Redis:

redis-cli info

И попробуйте установить любой ключ: 

127.0.0.1:6379> set key 1

Redis должен сообщить об ошибке и необходимости пройти аутентификацию: 

(error) NOAUTH Authentication required.

Выполните:

auth ваш_пароль

Если все корректно, будет выведено сообщение OK. Далее вы можете работать с Redis.

Переименование команд

Еще одна настройка безопасности, которую имеет смысл использовать - это переименование "опасных" команд, выполнение которых может привести к потере данных и другим нежелательным последствиям.

Как правило, рекомендуется переименовать следующие команды:

FLUSHDB
FLUSHALL
KEYS
PEXPIRE
DEL
CONFIG
SHUTDOWN
BGREWRITEAOF
BGSAVE
SAVE
SPOP
SREM RENAME DEBUG

Новое название команды должно быть таким, чтобы его сложно было угадать, но чтобы вы смогли легко его запомнить. Те из команд, которые вы не планируете использовать, вместо переименования можно отключить.

Переименование выполняется также в конфигурационном файле. Откройте его для редактирования:

sudo nano /etc/redis/redis.conf

Найдите соответствующий раздел, выполнив поиск (сочетание клавиш Ctrl W) по фразе "Command renaming".

Для переименования команды укажите ее новое название, например:

rename-command CONFIG CONFx312

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

rename-command FLUSHDB ""
rename-command FLUSHALL ""

Сохраните изменения в файле и перезапустите Redis.

Для проверки подключитесь к консоли redis-cli и попробуйте выполнить одну из отключенных или переименованных команд - должна быть выведена ошибка. При этом использование команды под ее новым заданным именем должно отрабатывать корректно.

  • No labels