Centos 7 memcached настройка
Дело в том, что установить memcached стандартным образом на CentOS 7 сейчас нельзя, потому что с этой ОС идет PHP 5.6, а в репозитарии лежит уже новая версия memcached 3, которая требует PHP 7 и выше.
Выполняем установку memcached:
Убедитесь, что в данном файле конфигурации имеются следующие строки:
- PORT 11211 является портом прослушивания по умолчанию для Memcached.
- USER — это пользователь memcached от которого будет запущен демон.
- MAXCONN — максимальные количество возможных соединений.
- CACHESIZE — это количество мегабайт (64 MB) для использования, если у вас есть много трафика, это хорошо для большинства малых/средних сайтов. Для загруженного сервера вы можете увеличить его на 512 или 1 Гб (1024 MB).
- OPTIONS=»-l 127.0.0.1″ — это означает что memcached будет слушать только на localhost-е, избегая каких-либо внешних подключений. По умолчанию он установлен в INADDR_ANY.
запуск Memcached выполняется:
Установка PHP расширений и библиотек с Memcached.
Также, для успешного компилирования pecl потребуется установить два дополнительных пакета, которые являются пререквизитами компиляции:
Далее в файл php.ini (e меня он лежит в /usr/local/php/php.ini) необходимо добавить строчки, которые инициализируют расширения:
Запустится установка и компиляции PHP. Установка спросит, где найти библиотеки zlib (если не сможет её найти), raphf и propro. Необходимо указать путь:
Далее ставим еще одну библиотеку-расширение:
yum install php-pecl-memcached.x86_64
И наконец, может скомпилировать PHP с Memcached 2 версии:
pecl install memcached-2.2.0
Во время установки pecl попросит уточнить, расположение библиотеки libmemcached (файл memcached.h).
Не надо указывать полный путь к ней! Дело в том, что в скрипте ./configure проверяется такой путь:
Таким образом, вам надо указать лишь часть пути:
/usr
В конце в файл php.ini добавляем строчку инициализации:
Вообще, при компилации должен создаться файл /etc/php.d/50-memcached.ini , который уже содержит в себе строчку инициализации, но для верности лучше это добавить в основной файл (по крайней мере так рекомендует установщик).
Проверяем, что модуль PHP запущен:
php -m | grep memcached
В данной инструкции рассмотрим процесс установки memcached + php-memcached под различные версии операционной системы CentOS.
CentOS 8
Первым этапом мы установим и настроим сервис memcached. Вторым — модуль php-memcached.
Сервис memcached
Выполняем установку пакетов:
dnf install memcached libmemcached
Создаем или открываем на редактирование конфигурационный файл для запуска сервиса:
Приводим его к виду:
* где PORT указываем на каком порту будет слушать сервис кэширования; USER — пользователь, под которым должен запускаться сервис; MAXCONN — максимальное число одновременных подключений; CACHESIZE — размер под кэш в мегабайтах; OPTIONS — параметры запуска (в данном примере наш сервис будет принимать запросы только с адреса локальной петли).
После разрешаем автозапуск и запускаем сервис кэширования:
systemctl enable memcached --now
Модуль для php
Устанавливаем пакеты, необходимые для сборки php-pecl-memcached:
dnf install php-devel php-pear zlib-devel make php-pear
dnf --enablerepo=PowerTools install libmemcached-devel
Запускаем компиляцию и сборку php-расширения:
pecl install memcached
Создаем конфигурационной файл для подключения расширения:
После установки модуля перезапускаем .
systemctl restart php-fpm
CentOS 7
Установка сервиса и модуля php выполняется из репозитория одной командой:
yum install memcached php-pecl-memcached
Разрешаем автозапуск сервиса:
systemctl enable memcached
И запускаем его:
systemctl start memcached
systemctl restart php-fpm
На этом все! Memcached с настройками по умолчанию ускорит работу веб-сервера.
Чтобы убедиться в этом, вводим следующую команду:
php -r "phpinfo();" | grep memcache
* в данном примере веб-сервер использует интерпретатор для PHP.
Системы кэширования объектов памяти, такие как Memcached, могут оптимизировать производительность базы данных, временно сохраняя часто запрашиваемые или недавно извлеченные записи в памяти. Таким образом, они уменьшают количество прямых запросов к базам данных.
Поскольку такие системы, как Memcached, при неправильной настройке подвергают сервер dos-атакам, важно заранее обеспечить безопасность серверов Memcached. В этом руководстве вы узнаете, как защитить сервер Memcached, привязав установку к локальному или частному сетевому интерфейсу и создав авторизованного пользователя для экземпляра Memcached.
Требования
Для работы вам понадобится:
- Сервер CentOS 7, настроенный по этому мануалу.
- FirewallD, настроенный по мануалу Настройка брандмауэра FirewallD в CentOS 7.
Установка Memcached из официального репозитория
Если система Memcached еще не установлена на сервере, вы можете установить ее из официальных репозиториев CentOS. Во-первых, обновите локальный индекс пакетов:
sudo yum update
Затем установите официальный пакет:
sudo yum install memcached
Также можно установить libmemcached-tools, библиотеку, которая предоставляет несколько инструментов для работы с сервером Memcached:
sudo yum install libmemcached
Теперь Memcached установлен как сервис, а еще на сервере есть инструменты, которые позволят вам проверить его возможности подключения. Можно перейти к конфигурации.
Защита Memcached
Чтобы убедиться, что экземпляр Memcached прослушивает локальный интерфейс 127.0.0.1, нужно проверить настройку по умолчанию в конфигурационном файле /etc/sysconfig/memcached, а также отключить прослушиватель UDP. Эти действия защитят сервер от атак типа «отказ в обслуживании».
Откройте файл /etc/sysconfig/memcached:
sudo vi /etc/sysconfig/memcached
Найдите переменную OPTIONS:
Подключение к локальному сетевому интерфейсу ограничит трафик клиентами одной машины. Для этого нужно добавить -l 127.0.0.1 в переменную OPTIONS. Это ограничение может быть слишком строгим для определенных сред, но это будет хорошим началом в настройке безопасности.
Поскольку протокол UDP используется в dos атаках намного эффективнее, чем TCP, также можно отключить прослушиватель UDP. Для этого добавьте параметр -U 0 в переменную OPTIONS. В результате файл должен выглядеть следующим образом:
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1 -U 0"
Сохраните и закройте файл.
Перезапустите сервис Memcached:
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 2383/memcached
. . .
Это подтверждает, что memcached привязан к адресу 127.0.0.1 и использует только TCP.
Добавление авторизованных пользователей
Чтобы добавить авторизованных пользователей в Memcached, можно использовать Simple Authentication and Security Layer (SASL), структуру, которая изолирует процедуру аутентификации из протоколов приложений. Включите SASL в конфигурационном файле Memcached, а затем добавьте пользователя с учетными данными для аутентификации.
Поддержка SASL
Сначала нужно проверить подключение экземпляра Memcached с помощью команды memcstat. Это поможет подтвердить, что SASL и аутентификация пользователей включены после внесения изменений в конфигурации.
Чтобы убедиться, что Memcached запущен и работает, введите следующее:
memstat --servers="127.0.0.1"
Server: 127.0.0.1 (11211)
pid: 3831
uptime: 9
time: 1520028517
version: 1.4.25
. . .
Теперь можно включить SASL. Во-первых, нужно добавить параметр -S в переменную OPTIONS в /etc/sysconfig/memcached.conf. Откройте файл еще раз:
sudo vi /etc/sysconfig/memcached
Добавьте в переменную OPTIONS параметры -S и –vv. Последний предоставит подробный вывод в /var/log/memcached, что пригодится при устранении неполадок.
Строка должна выглядеть так:
. . .
OPTIONS="-l 127.0.0.1 -U 0 -S -vv"
Сохраните и закройте файл.
Перезапустите сервис Memcached:
sudo systemctl restart memcached
Затем нужно взглянуть на логи, чтобы убедиться, что поддержка SASL включена:
sudo journalctl -u memcached
Вы должны увидеть следующую строку, которая подтверждает поддержку SASL:
. . .
Mar 05 18:16:11 memcached-server memcached[3846]: Initialized SASL.
. . .
Теперь можно снова проверить подключение, но после включения поддержки SASL эта команда должна вернуть ошибку без аутентификации:
Эта команда не показывает результат на экране. Введите следующее, чтобы проверить ее статус:
$? всегда будет возвращать код вывода последней завершенной команды. Как правило, любой ответ, кроме 0, указывает на сбой процесса. В этом случае вы должны увидеть статус выхода 1, что значит, что команда memcstat была выполнена неправильно.
Создание пользователя
Теперь нужно загрузить два пакета, которые обеспечивают работу с Cyrus SASL Library и механизмами аутентификации, включая плагины, поддерживающие схемы аутентификации PLAIN. Пакеты cyrus-sasl-devel и cyrus-sasl-plain позволят вам создать пользователя и пройти аутентификацию. Установите пакеты:
sudo yum install cyrus-sasl-devel cyrus-sasl-plain
Затем нужно создать каталог и файл, где Memcached будет проверять параметры конфигурации SASL.
sudo mkdir -p /etc/sasl2
sudo vi /etc/sasl2/memcached.conf
Добавьте следующее в файл:
mech_list: plain
log_level: 5
sasldb_path: /etc/sasl2/memcached-sasldb2
Кроме уровня логирования здесь нужно указать параметр mech_list и присвоить ему значение plain, благодаря чему Memcached сможет использовать свой собственный файл паролей и проверять пароли в виде простого текста. Также нужно указать путь к файлу базы данных пользователя, который будет создан далее. Сохраните и закройте файл.
Теперь нужно создать базу данных SASL с учетными данными пользователя. Используйте команду saslpasswd2, чтобы сделать новую запись для пользователя в базе данных с помощью опции -c. Здесь пользователь условно называется 8host, но вы можете заменить это имя. Используя опцию -f, можно указать путь к базе данных (путь, который вы указали в каталоге /etc/sasl2/memcached.conf):
sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 8host
Теперь передайте пользователю memcache права на БД SASL.
sudo chown memcached:memcached /etc/sasl2/memcached-sasldb2
Перезапустите сервис Memcached:
sudo systemctl restart memcached
Команда memcstat снова подтвердит, сработал ли процесс аутентификации. На этот раз запустите команду с учетными данными:
memstat --servers="127.0.0.1" --username=8host --password=your_password
Вы получите результат:
Server: 127.0.0.1 (11211)
pid: 3831
uptime: 9
time: 1520028517
version: 1.4.25
. . .
Теперь сервис Memcached поддерживает SASL и аутентификацию пользователей.
Настройка доступа по частной сети
Теперь вы знаете, как настроить Memcached для прослушивания локального интерфейса, что может предотвратить атаки типа отказ в обслуживании и защитить интерфейс Memcached от воздействия внешних сторон. Однако в некоторых случаях есть необходимость разрешить доступ к Memcached другим серверам. Для этого можно привязать Memcached к интерфейсу частной сети.
Ограничение доступа по IP-адресу в брандмауэре
Прежде чем приступить к конфигурации, рекомендуется настроить правила брандмауэра, чтобы ограничить доступ к серверу Memcached. Если вы выполнили мануал по установке и настройке FirewallD и не планируете подключаться к Memcached с другого хоста, вам не нужно менять правила брандмауэра. Ваш автономный экземпляр Memcached должен прослушивать 127.0.0.1 благодаря переменной OPTIONS, которую вы определили ранее, и поэтому беспокоиться о входящем трафике не нужно. Однако если вы планируете разрешить доступ к вашему серверу Memcached с других хостов, вам нужно будет внести изменения в настройки брандмауэра с помощью команды firewall-cmd.
Для начала добавьте выделенную зону Memcached в политику firewalld:
sudo firewall-cmd --permanent --new-zone=memcached
Затем укажите порт, который нужно открыть. По умолчанию Memcached использует 11211.
sudo firewall-cmd --permanent --zone=memcached --add-port=11211/tcp
Затем укажите внутренние IP-адреса клиентов, которые должны иметь доступ к Memcached.
sudo firewall-cmd --permanent --zone=memcached --add-source=client_server_private_IP
Чтобы обновить правила, перезапустите брандмауэр:
sudo firewall-cmd --reload
Пакеты, поступающие с IP-адреса клиента, теперь должны обрабатываться в соответствии с правилами в выделенной зоне Memcached. Все остальные соединения будут обрабатываться в зоне по умолчанию public.
После этого можно привязать Memcached к интерфейсу частной сети.
Настройка Memcached для поддержки интерфейса частной сети
Теперь, когда брандмауэр готов, вы можете привязать Memcached к частному интерфейсу сервера вместо 127.0.0.1, отредактировав переменную OPTIONS.
sudo vi /etc/sysconfig/memcached
Внутри найдите переменную OPTIONS. Теперь нужно изменить -l 127.0.0.1 и указать внутренний IP-адрес сервера Memcached:
. . .
OPTIONS="-l memcached_servers_private_IP -U 0 -S -vv"
Сохраните и закройте файл.
sudo systemctl restart memcached
Убедитесь, что все работает правильно, с помощью команды netstat:
sudo netstat -plunt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
. . .
tcp 0 0 memcached_servers_private_IP:11211 0.0.0.0:* LISTEN 2383/memcached
. . .
Проверьте подключение с внешнего клиента, чтобы убедиться, что вы все еще можете получить доступ к сервису. Рекомендуется также проверить доступ с неавторизованного клиента, чтобы убедиться, что брандмауэр не пропустит соединение.
Заключение
Теперь вы умеете устанавливать Memcached и обеспечивать безопасность этого сервиса.
Memcached также используется для кэширования целых таблиц базы данных и запросов для повышения производительности базы данных.
Это единственная система кеширования, доступная бесплатно и используемая многими крупными сайтами, такими как YouTube, Facebook, Twitter, Reddit, Drupal, Zynga и т. д.
Memcached может зафиксировать атаки отказа в обслуживании, если он не настроен правильно.
В этой статье мы расскажем, как установить и защитить ваш сервер Memcached в дистрибутиве CentOS 7 Linux.
Эти данные инструкции также работают на RHEL и Fedora Linux.
Установка Memcached в CentOS 7
Сначала обновите систему, а затем установите Memcached из официальных репозиториев CentOS, используя следующие команды yum.
Memcached теперь должен быть установлен в вашей системе CentOS как сервис вместе с инструментами, которые требуют от вас для проверки его подключения.
Теперь мы можем перейти к настройке параметров конфигурации.
Защита настроек конфигурации Memcached
Чтобы убедиться, что установленная служба Memcached прослушивает локальный интерфейс 127.0.0.1, мы изменим переменную OPTIONS в файле конфигурации /etc/sysconfig/memcached.
Дополнительно, чтобы защитить его параметры конфигурации.
Найдите переменную OPTIONS и добавьте -l 127.0.0.1 -U 0 к переменной OPTIONS.
Эти параметры конфигурации защитят наш сервер от атак типа «отказ в обслуживании».
Давайте обсудим каждый из вышеперечисленных параметров в деталях.
- PORT: порт, используемый Memcached для запуска.
- USER демон запуска службы Memcached.
- MAXCONN: значение, используемое для установки максимального количества одновременных подключений на 1024. Для загруженных веб-серверов вы можете увеличить любое число в зависимости от ваших требований.
- CACHESIZE: установите размер кэш-памяти на 2048. Для загруженных серверов вы можете увеличить до 4 ГБ.
- OPTIONS: Установите IP-адрес сервера, чтобы к нему могли подключаться веб-серверы Apache или Nginx.
Перезапустите и включите службу Memcached, чтобы применить изменения конфигурации.
После запуска вы можете подтвердить, что ваша служба Memcached связана с локальным интерфейсом и прослушивает только TCP-соединения, используя следующую команду netstat.
Вы также можете проверить статистику сервера, используя memcached-tool, как показано на рисунке.
Теперь убедитесь, что вы разрешили доступ к серверу Memcached, открыв порт 11211 на брандмауэре, как показано на рисунке.
Прежде чем продолжить этот, убедитесь, что вы вошли в систему как пользователь с привилегиями sudo .
Установка Memcached
Пакеты Memcached включены в стандартные репозитории CentOS 7. Установка довольно проста, просто введите следующую команду:
libmemcached Пакет содержит предоставляет несколько инструментов командной строки для управления Memcached сервером.
После завершения установки запустите и включите службу Memcached
Вот и все, на данный момент Memcached установлен и работает на вашем сервере CentOS 7.
Настройка Memcached
Memcached можно настроить, отредактировав /etc/sysconfig/memcached файл. По умолчанию Memcached настроен на прослушивание на всех интерфейсах. В следующих разделах мы покажем вам, как настроить службу для локального и удаленного доступа.
При неправильной настройке Memcached можно использовать для выполнения атаки распределенного отказа в обслуживании (DDoS).
Только локальный доступ
Если клиент, подключающийся к серверу, также работает на том же хосте, рекомендуется настроить службу Memcached для прослушивания только localhost.
Для этого откройте memcached файл конфигурации в текстовом редакторе :
В OPTIONS параметре добавь -l 127.0.0.1 . Это инструктирует Memcached связываться только с указанным интерфейсом.
/ И т.д. / sysconfig / Memcached
Перезапустите сервис Memcached, чтобы изменения вступили в силу:
Удаленный доступ
Если приложение, которое будет подключаться к Memcached, размещено на удаленном сервере, вам необходимо настроить брандмауэр и разрешить доступ к порту Memcached 11211 только с IP-адреса клиента.
В следующем примере предполагается, что вы хотите подключиться к серверу Memcached через частную сеть. 192.168.100.20 IP-адрес сервера Memcached и IP-адрес клиента 192.168.100.30
CentOS поставляется с инструментом настройки брандмауэра FirewallD . Команды ниже создадут новую зону с именем memcached , откроют порт 11211 и разрешат доступ только с IP-адреса клиента.
После настройки брандмауэра следующим шагом является редактирование конфигурации Memcached и настройка службы на прослушивание интерфейса частной сети сервера:
Откройте memcached файл конфигурации:
В OPTIONS параметре добавьте IP-адрес сервера -l 192.168.100.20 :
Сохраните файл и перезапустите сервис Memcached:
Подключение к Memcached
Чтобы подключиться к серверу Memcached, вам нужно использовать клиент для конкретного языка.
Чтобы использовать Memcached в качестве кэширующей базы данных для вашего сайта, такого как WordPress , Drupal или Magento, Вам необходимо установить php-pecl-memcached расширение:
Python
Существует несколько библиотек Python для взаимодействия с memcache. Вы можете установить предпочитаемую библиотеку, используя pip :
Вывод
Вы узнали, как установить Memcached на вашем сервере CentOS 7. Для получения дополнительной информации по этой теме Вы можете обратится к Memcached Wiki .
Читайте также: