Установка и настройка Redis на Debian 9

access_time 2020-04-17 17:42:10

Немного о том, что такое Redis

Redis — резидентная система управления базами данных класса NoSQL с открытым исходным кодом, работающая со структурами данных типа «ключ — значение». Используется как для баз данных, так и для реализации кэшей, брокеров сообщений, очередей.

Как работает Redis?

Все данные в Redis хранятся в памяти, а не на дисках или твердотельных накопителях, как в других базах данных. Поскольку Redis, как и другие хранилища данных в памяти, не нуждается в доступе к диску, это исключает задержки, связанные с поиском, и обеспечивает доступ к данным за микросекунды. В число возможностей Redis входит поддержка разнообразных структур данных, обеспечение высокой доступности, работа с геопространственными данными, создание скриптов Lua, проведение транзакций, постоянное хранение данных на диске и поддержка кластеров. Все это упрощает создание приложений, работающих в режиме реального времени.

Более подробно и интересно можно прочитать например тут.

Установка и настройка

Устанавливаем

apt-get install redis-server

Проверяем

netstat -plunt | grep -i redis

В результате выполнения видим

tcp        0      0 127.0.0.1:6379  0.0.0.0:*  LISTEN   18984/redis-server

Это значит, что все хорошо, Redis работает и слушает 6379 порт.

Теперь перейдём к безопасности - в некоторых дистрибутивах Linux после установки Redis принимает запросы на всех интерфейсах, что недопустимо из соображений безопасности, т.к. по-умолчанию доступ к Redis не защищен паролем.

Следовательно проверяем в файле конфига /etc/redis/redis.conf , наличие этой строчки:

bind 127.0.0.1

Если параметр bind отсутствует или установлен иначе, выставляйте как указано выше, так как мы запускаем redis-server только на localhost.

Что бы изменения применились, перезапускаем Redis

/etc/init.d/redis-server restart

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

redis-cli info

По этому необходимо задать пароль.

Создаём пароль

echo "YOUPASSWD" | sha256sum

Задаем пароль в файле конфига /etc/redis/redis.conf:

requirepass  03f15ed996a553641a1b0ae08ffd381ba142b7918fc66fd036bb801fc73dd694

Перезапускаем Redis

И проверяем

redis-cli
127.0.0.1:6379> info
NOAUTH Authentication required.
127.0.0.1:6379> AUTH 03f15ed996a553641a1b0ae08ffd381ba142b7918fc66fd036bb801fc73dd694
OK

Пароль установлен!

ВНИМАНИЕ! Запуская redis-cli и вводя в нем команды, включая AUTH с паролем история этих команд сохраняется в файле ~/.rediscli_history
Если злоумышленник получит к нему доступ, то и сможет узнать пароль.
Конечно ~/.rediscli_history доступен только текущему пользователю, например root и никто другой его не прочитает, но об этом лучше знать.
Так же пароль хранится в файле /etc/redis/redis.conf и по-умолчанию этот файл доступен на чтение всем пользователям сервера, что совершенно неправильно и это мы исправим далее.

По рекомендациям безопасности, переименовываем и отключаем особо важные команды, это FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME и DEBUG

Для этого в файле кофига /etc/redis/redis.conf пишем:

rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""
rename-command SHUTDOWN SHUTDOWN_SECRETCMD
rename-command CONFIG CONFIG_SECRETCMD

 

Перезапускаем Redis

/etc/init.d/redis-server restart

Меняем права на директорию с базой и файл конфигурации

Смотрим права по-умолчанию на директорию с базой:

ls -ld /var/lib/redis
drwxr-xr-x 2 redis redis 4096 Sep 9 10:14 redis

Меняем

chmod 700 /var/lib/redis

Смотрим права по-умолчанию на файл конфигурации

ls -l /etc/redis/redis.conf
-rw-r--r-- 1 root root 33004 Sep 9 10:15 /etc/redis/redis.conf

Меняем

chown redis:root /etc/redis/redis.conf
chmod 600 /etc/redis/redis.conf

Далее, если все сделали, то перезапускаем Redis:

/etc/init.d/redis-server restart

Базовая настройка Redis закончена.

Оставить комментарий

Комментарии:

{{ item.user_name }}
access_time 2018-11-01 20:15:22

{{ item.text }}