Установка и защита Memcached на Ubuntu 18.04

Обсудить
Установка и защита Memcached на Ubuntu 18.04

Введение

Кэширование - важная часть любого веб-проекта, потому что это напрямую влияет на время отклика сервера. Memcached - это утилита, которая позволяет кэшировать, хранить в оперативной памяти различные данные. Фактически это большая хэш-таблица, доступная по сетевому протоколу. Использование Memcached позволяет значительно увеличить скорость загрузки информации.

В этом руководстве будет рассказано о том, как установить и как защитить сервер с Memcached.

Требования

Перед тем, как приступить к выполнению дальнейших действий, убедитесь, что на вашем сервере установлена ОС Ubuntu 18.04 с файерволом, а также есть пользователь, который может выполнять команды sudo.

Шаг 1: установка Memcached из официальных репозиториев

Memcached можно установить из официальных репозиториев Ubuntu. Для этого сначала обновите локальный индекс пакетов:

$ sudo apt update

А потом установите Memcached:

$ sudo apt install memcached

Можно сразу установить библиотеку libmemcached-tools, в которой есть несколько полезных инструментов для работы с сервером:

$ sudo apt install libmemcached-tools

Установка Memcached выполнена, и теперь надо перейти к безопасности.

Шаг 2: защита настроек Memcached

Сначала надо проверить настройки в конфигурационном файле, который находится в /etc/memcached.conf. Откройте его в nano или другом редакторе:

$ sudo nano /etc/memcached.conf

Найдите вот эту строчку:

. . .

-l 127.0.0.1

. . .

Это настройка по умолчанию, которую менять не нужно. Однако из соображений безопасности в конце файла можно добавить строчку, отключающую протокол UDP (но не влияющую на работу протокола TCP):

-U 0

После этого сохраните и закройте файл.

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

$ sudo systemctl restart memcached

Убедиться в том, что Memcached слушает локальный интерфейс и TCP соединения, можно командой:

$ sudo netstat -plunt

Вывод должен быть таким:

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address  State    PID/Program name

. . .

tcp     0   0 127.0.0.1:11211      0.0.0.0:*            LISTEN   2279/memcached

. . .

Шаг 3: добавление авторизованных пользователей

Для добавления авторизованных пользователей в Memcached можно использовать SASL (расшифровывается как Simple Authentication and Security Layer - простой уровень аутентификации и безопасности). Этот фреймворк позволяет разделить механизмы аутентификации от прикладных протоколов. К тому же он предоставляет слой защиты данных. Более подробно о нем можно прочитать в Википедии.

Настройка поддержки SASL

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

Введите команду:

$ memcstat --servers="127.0.0.1"

Вы должны увидеть вот такой вывод:

Server: 127.0.0.1 (11211)

      pid: 2279

      uptime: 65

      time: 1546620611

      version: 1.5.6

. . .

Теперь нужно открыть конфигурационный файл:

$ sudo nano /etc/memcached.conf

В конце файла добавьте -S для того, чтобы включить SASL:

. . .

-S

И раскомментируйте строку -vv:

. . .

-vv

Это нужно для того, чтобы в /var/log/memcached формировался подробный отчет с предупреждениями, ошибками и другой важной информацией.

После этого сохраните и закройте файл.

Снова перезапустите Memcached:

$ sudo systemctl restart memcached

Посмотрите логи, чтобы проверить, включен ли SASL:

$ sudo journalctl -u memcached

Вы должны увидеть такую строку:

. . .

Jan 31 15:34:28 memcached systemd-memcached-wrapper[2310]: Initialized SASL.

. . .

Еще раз введите команду:

$ memcstat --servers="127.0.0.1"

Так как теперь включен SASL, команда не будет выполнена без аутентификации.

Добавление аутентификации пользователя

Далее нужно загрузить пакет sasl2-bin, в нем есть программы администрирования базы данных пользователей SASL.

$ sudo apt install sasl2-bin

Теперь создайте директорию и файл с настройками SASL для Memcached:

$ sudo mkdir /etc/sasl2

$ sudo nano /etc/sasl2/memcached.conf

Добавьте в этот файл следующее:

mech_list: plain

log_level: 5

sasldb_path: /etc/sasl2/memcached-sasldb2

Если в mech_list, то есть в списке механизмов прописан plain, это значит, что cервер будет проверять идентификатор аутентификации и пароль на соответствие своей базе и наличие у данного идентификатора аутентификации права на идентификатор авторизации. Это аутентификация посредством открытого текстового пароля; путь к файлу будет указан позже. Сохраните и закройте этот файл.

Следующий шаг - создание базы данных SASL с данными вашего пользователя. Команда saslpasswd2 используется для занесения паролей в БД; ключ -c используется для создания записи для указанного идентификатора, если она не существовала ранее. Ключ -f позволяет указать путь к базе данных.

$ sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 имя_пользователя

Теперь нужно изменить права:

$ sudo chown memcache:memcache /etc/sasl2/memcached-sasldb2

И перезапустить Memcached:

$ sudo systemctl restart memcached

Снова введите команду memcstat, но на этот раз с указанными до этого данными:

$ memcstat --servers="127.0.0.1" --username=имя_пользователя --password=пароль

Вы должны увидеть вывод:

Server: 127.0.0.1 (11211)

      pid: 2772

      uptime: 31

      time: 1546621072

      version: 1.5.6 Ubuntu

. . .

Если вы его увидели, значит, Memcached и SASL работают корректно.

Серверы Timeweb

Комментарии