Redis — резидентная система управления базами данных класса NoSQL с открытым исходным кодом, работающая со структурами данных типа «ключ — значение». Используется как для баз данных, так и для реализации кэшей, брокеров сообщений, очередей.
Все данные в 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.text }}