Быстрая установка и защита Redis в Ubuntu 20.04
Quickstart, Ubuntu | Комментировать запись
Redis – это хранилище типа «ключ-значение», популярное благодаря своей гибкости, производительности и широкой поддержке языков. Этот мануал поможет вам установить, настроить и защитить Redis на сервере Ubuntu 20.04.
Требования
Для работы вам понадобится сервер Ubuntu 20.04, настроенный по этому мануалу. Чтобы приступить к установке Redis, войдите в сессию вашего пользователя sudo.
Примечание: Расширенную версию этого мануала вы найдете здесь.
1: Установка и настройка Redis
Обновите индекс пакетов:
sudo apt update
Установите Redis:
sudo apt install redis-server
Откройте конфигурационный файл Redis:
sudo nano /etc/redis/redis.conf
Найдите директиву supervised, которая задает систему инициализации для управления сервисом Redis, предоставляя вам больше контроля над ним. По умолчанию директива supervised имеет значение no. Поскольку вы используете систему инициализации systemd, укажите здесь ее:
. . .
# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
# supervised no - no supervision interaction
# supervised upstart - signal upstart by putting Redis into SIGSTOP mode
# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
# supervised auto - detect upstart or systemd method based on
# UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
# They do not enable continuous liveness pings back to your supervisor.
supervised systemd
. . .
Сохраните и закройте файл.
Перезапустите сервис Redis, чтобы обновить настройки.
sudo systemctl restart redis.service
Чтобы убедиться, что Redis работает правильно, запустите клиент командной строки redis-cli:
redis-cli
Затем в командную строку введите эту команду, чтобы проверить соединение:
ping
PONG
Вывод PONG значит, что программа правильно отвечает на запросы. Теперь убедитесь, что можете добавлять ключи:
set test "It's working!"
OK
Попробуйте извлечь значение ключа:
get test
Команда должна ответить:
"It's working!"
Убедившись, что вы можете извлекать значения, выйдите из командной строки Redis, чтобы вернуться в оболочку системы:
exit
2: Настройка парольной аутентификации Redis
Пароль настраивается непосредственно в конфигурационном файле Redis, /etc/redis/redis.conf. Снова откройте этот файл с помощью редактора:
sudo nano /etc/redis/redis.conf
Найдите раздел SECURITY, а в нем – директиву requirepass.
. . .
# requirepass foobared
. . .
Раскомментируйте эту строку, удалив #, а вместо foobared укажите надежный пароль.
. . .
requirepass your_redis_password
. . .
Указав надежный пароль, сохраните и закройте файл, а затем перезапустите Redis:
sudo systemctl restart redis.service
Чтобы убедиться, что парольная аутентификация настроена правильно, откройте командную строку Redis:
redis-cli
Для проверки пароля Redis используйте такую последовательность команд. Первая команда попытается добавить ключ без пароля:
set key1 10
Redis должен вернуть ошибку:
(error) NOAUTH Authentication required.
Следующая команда пройдет аутентификацию:
auth your_redis_password
OK
После того как Redis принял пароль, попробуйте снова добавить ключ:
set key1 10
OK
Напоследок запросите свой новый ключ:
get key1
"10"
Убедившись, что после аутентификации вы можете запускать команды Redis, вы можете выйти из redis-cli:
quit
3: Переименование команд
Еще одна встроенная функция безопасности Redis позволяет вам переименовывать или совсем отключать определенные команды, которые считаются опасными и могут навредить серверу. Вот краткий список опасных команд:
- FLUSHDB
- FLUSHALL
- KEYS
- PEXPIRE
- DEL
- CONFIG
- SHUTDOWN
- BGREWRITEAOF
- BGSAVE
- SAVE
- SPOP
- SREM
- RENAME
- DEBUG
Это не полный список, но для начала достаточно будет переименовать или отключить эти команды.
Откройте файл /etc/redis/redis.conf:
sudo nano /etc/redis/redis.conf
Важно! Далее в мануале приведены общие примеры. Вы должны отключить или переименовать те команды, которые важны в вашей конкретной ситуации. Вы можете узнать больше о вредоносном использовании команд на redis.io/commands.
Чтобы отключить команду, просто переименуйте ее в пустую строку:
. . .
# It is also possible to completely kill a command by renaming it into
# an empty string:
#
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""
. . .
Чтобы переименовать команду, присвойте ей другое имя, как в приведенных ниже примерах. Переименованные команды другим пользователям должно быть трудно угадать, а вам – легко запомнить.
. . .
# rename-command CONFIG ""
rename-command SHUTDOWN SHUTDOWN_MENOT
rename-command CONFIG ASC12_CONFIG
. . .
Сохраните и закройте файл. Перезапустите Redis:
sudo systemctl restart redis.service
Чтобы проверить новую команду, откройте командную строку Redis:
redis-cli
Пройдите аутентификацию, используя пароль, который вы установили ранее:
auth your_redis_password
OK
Предположим, вы переименовали команду CONFIG в ASC12_CONFIG; в таком случае попытка запустить команду config должна завершиться ошибкой.
config get requirepass
(error) ERR unknown command `config`, with args beginning with:
Теперь сработает только переименованная команда:
asc12_config get requirepass
1) "requirepass"
2) "your_redis_password"
Заключение
Теперь вы умеете устанавливать Redis, тестировать свою установку и использовать встроенные функции безопасности, чтобы защитить сервер от злоумышленников.
Tags: Redis, Ubuntu 20.04