Назад в блог

Как установить и защитить Redis на Ubuntu 18.04

Как установить и защитить Redis на Ubuntu 18.04

Redis — это мощное хранилище типа «ключ-значение» в оперативной памяти, которое можно использовать в качестве сервера баз данных, кэша и брокера сообщений. Оно широко известно своей высокой производительностью, гибкостью и поддержкой широкого спектра языков программирования. Это бесплатное программное обеспечение с открытым исходным кодом, написанное на языке программирования C. В этом руководстве мы рассмотрим, как установить и защитить Redis на Ubuntu 18.04.

Предварительные требования

Чтобы следовать этому руководству, вам нужно будет заранее подготовить несколько вещей. Вам понадобится сервер Ubuntu 18.04, который вы можете легко установить, следуя нашему руководству. Кроме того, у вас должен быть пользователь без прав root с привилегиями sudo и настроенный базовый брандмауэр. Вы можете настроить это, следуя нашим руководствам по настройке файла sudoers в Linux и настройке UFW на облачном сервере Ubuntu и Debian.

А теперь начнем!

Установка Redis

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

Установка Redis из репозитория Ubuntu

Сначала обновите локальный кэш пакетов APT:

Затем установите Redis с помощью следующей команды:

Установка Redis из исходного кода

В Ubuntu по умолчанию нет инструментов сборки и необходимых библиотек. Следующая команда установит все необходимые инструменты для сборки Redis:

Для сборки Redis требуются две дополнительные зависимости. Эти зависимости необходимы для компиляции Redis с дополнительными функциями, например, поддержкой TLS, интеграцией с systemd и т. д. Чтобы скомпилировать Redis с поддержкой TLS, установите пакет «libssl-dev». Чтобы скомпилировать Redis с поддержкой systemd, установите пакет «libsystemd-dev»:

Исходный код Redis доступен на GitHub. Посетите страницу Redis на GitHub. Затем скачайте исходный код:

Redis GitHub page

Перейдите в каталог с исходным кодом Redis:

После этого запустите утилиту make, чтобы начать компиляцию. Она скомпилирует Redis без каких-либо дополнительных элементов:

Чтобы включить поддержку TLS (при условии, что пакет «libssl-dev» установлен), используйте следующую команду:

Чтобы включить поддержку systemd (при условии, что пакет «libsystemd-dev» установлен), используйте следующую команду:

Затем проверьте, прошла ли компиляция успешно. Обратите внимание, что для запуска теста может потребоваться дополнительный пакет «tcl-dev» и связанные с ним зависимости:

Наконец, установите Redis, выполнив следующую команду:

Если Redis был собран с использованием TLS, то запуск сервера должен выполняться следующим образом:

Настройка Redis

После завершения установки пришло время настроить Redis. Откройте конфигурационный файл Redis в текстовом редакторе и прокрутите вниз до раздела «supervised»:

secure redis 1

Измените значение параметра «supervised» на «systemd». Это гарантирует, что служба Redis будет управляться systemd. Чтобы изменения вступили в силу, перезапустите службу Redis:

Тестирование Redis

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

Здесь Redis уже запущен. По умолчанию служба Redis будет запускаться при загрузке. Если службу Redis необходимо запускать вручную, отключите ее:

Следующий тест — проверка с помощью консоли Redis. Запустите клиент командной строки Redis:

Выполните команду «ping»:

Вывод подтверждает, что соединение с сервером все еще активно. Следующий тест — проверить, позволяет ли он устанавливать ключи. Создайте ключ «temp» со значением «hello world»:

Получите значение с помощью команды «get»:

Если до этого момента все работает нормально, Redis должен без проблем вернуть значение ключа. Закройте клиент командной строки Redis:

Redis command-line

Финальный тест — проверить, может ли Redis сохранять данные даже после остановки или перезапуска. Перезапустите службу Redis:

Если при выполнении указанной выше команды возникнет ошибка, используйте команду “systemctl enable redis-server”:

Запустите клиент командной строки Redis и получите значение ключа «temp», который мы создали ранее:

На этом тестирование Redis завершено. Ваш сервер Redis готов к использованию по назначению.

Обеспечение безопасности Redis

На данный момент Redis полностью работоспособен. Однако некоторые из его настроек по умолчанию не обеспечивают наилучшую безопасность. Если их не обновить, любой злоумышленник может воспользоваться возможностью получить доступ к серверу и его данным. В этом разделе будет показано, как устранить эти уязвимости. Хотя эти шаги являются необязательными, настоятельно рекомендуется выполнить их для повышения безопасности системы.

Привязка к localhost

По умолчанию Redis доступен только с localhost. Однако, если Redis был настроен на удаленном сервере, конфигурацию необходимо обновить, чтобы разрешить подключение откуда угодно. Тем не менее, это может быть не так безопасно, как привязка к localhost. Чтобы повторно привязать Redis к localhost, откройте конфигурационный файл Redis в текстовом редакторе:

Прокрутите вниз и найдите следующую строку. Убедитесь, что она не закомментирована:

Binding to localhost

Сохраните и закройте файл. Затем перезапустите службу Redis, чтобы изменения вступили в силу немедленно:

Убедитесь, что изменения применились успешно:

Если вы получите ошибку вида ‘netstat: command not found’, используйте команду для установки net-tools “sudo apt-get install net-tools”. Вывод подтверждает, что «redis-server» успешно привязан к localhost (127.0.0.1), отражая недавно внесенные изменения. Если там указан любой другой IP-адрес (например, 0.0.0.0), перепроверьте конфигурационный файл и снова перезапустите сервер Redis.

Настройка пароля Redis

Настройка пароля позволяет использовать встроенную функцию безопасности Redis – команду «AUTH». Она требует от клиентов прохождения аутентификации для доступа к базе данных. По умолчанию в Redis пароль не настроен. Пароль должен быть объявлен в конфигурационном файле Redis. Откройте конфигурационный файл в текстовом редакторе:

Затем прокрутите вниз до следующей строки и раскомментируйте ее:

После раскомментирования паролем по умолчанию станет «foobared». Измените его на пароль по вашему выбору. Когда дело касается Redis, надежность пароля имеет огромное значение. Поскольку Redis — это высокопроизводительный сервер, его потенциально легче взломать с помощью атак методом перебора (brute-force). Вот почему конфигурационный файл напрямую содержит следующее предупреждение. Вот быстрый пример генерации очень надежного случайного пароля. Мы будем использовать команду OpenSSL для генерации случайной строки:

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

Пришло время проверить, успешно ли применился пароль. Запустите консоль командной строки Redis:

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

Redis отклонит запрос, так как для этого действия требуется аутентификация. Чтобы выполнить любое действие на сервере, пользователь должен сначала пройти авторизацию. Авторизуйте пользователя с помощью следующей команды:

Если пароль верный, Redis подтвердит действие. Теперь Redis разрешит доступ к функциям своего сервера:

На этом наша работа с консолью Redis завершена. Вы можете закрыть консоль:

Переименование опасных команд

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

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

Чтобы переименовать или отключить команду, ее необходимо объявить в конфигурационном файле Redis. Откройте конфигурационный файл Redis и добавьте следующие строки. Здесь «rename-command» используется для переименования команд в пустую строку. Добавьте столько записей, сколько необходимо:

Аналогично, команды также можно переименовать в другие названия. В определенных ситуациях это может обеспечить большую гибкость:

rename-command

Сохраните файл и выйдите из редактора. Чтобы изменения вступили в силу, перезапустите службу Redis:

Проверьте изменения. Затем запустите консоль Redis и пройдите аутентификацию:

Предположим, что команда «CONFIG» была отключена или переименована. Попробуйте использовать следующую команду «CONFIG». Она завершится ошибкой:

Если команда была отключена, доступ к ней будет невозможен, пока она не будет включена снова. Однако, если она была переименована, используйте новый псевдоним:

command_4

Заключение

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

Приятной работы!

author

Hark Labs

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.