Memcached - по. которое отвечает за кэширование данных в ОЗУ на основе хэш таблиц и доступна для можества серверов. С его помощью оптимизируют производительность базы данных, ПО временно сохраняет часто запрашиваемые или недавно извлеченные записи в памяти. Уменьшает количество прямых запросов к базам данных. Поскольку такие системы, как Memcached, при неправильной настройке подвергают сервер dos-атакам, важно заранее обеспечить безопасность серверов Memcached. Расскажу, как защитить сервер Memcached, привязав установку к локальному сетевому интерфейсу.
И так нам понадобится виртуалка или комп с установленной centos 7. Подключаемся к ней с помощью PUTTY (как смотрим тут). Сначала надо проверить может уже установлен memcached, для этого выполните команду:
[root@test ~]# netstat -plunt
Если вывод говорит , что команда неизвестна вам потребуется установить net-tools выполнив команду:
[root@test ~]# yum install net-tools
Теперь снова повторяем команду netstat , вывод должен быть примерно таким (при условии , что memcached установлен):
[root@test ~]# netstat -plunt
....
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 26537/memcached
....
Если в выводе нет подобной записи, ставим memcached из официальных репозиториев CentOS. Обновляем локальный индекс пакетов:
[root@test ~]# yum update
Теперь сам пакет, ну и если надо библиотеку инструментов (я ставлю):
[root@test ~]# yum install memcached libmemcached
Запускаем и включаем в автозагрузку:
[root@test ~]# systemctl start memcached
[root@test ~]# systemctl enable memcached
ОК, переходим к настройке:
Проверим настройку в конфигурационном файле /etc/sysconfig/memcached, а также отключим прослушиватель UDP. Эти действия защитят сервер от атак. Открываем файл:
[root@test ~]# nano /etc/sysconfig/memcached
Находим переменную OPTIONS:
. . .
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"
Сохраняем и закрываем файл ctrl+O,ctrl+X.
Перезапускаем сервис Memcached:
[root@test ~]# systemctl restart memcached
Убедитесь, что Memcached привязан к локальному интерфейсу и прослушивает только TCP-соединения:
[root@test ~]# netstat -plunt
. . .
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 2383/memcached
. . .
Должна быть только запись TCP, что подтверждает, что memcached привязан к адресу 127.0.0.1 и использует только протокол TCP.
Теперь убедитесь, что вы разрешили доступ к серверу Memcached, открыв порт 11211 в брандмауэре:
[root@test ~]# firewall-cmd --permanent --zone=public --add-port=11211/tcp
[root@test ~]# firewall-cmd --reload
Установите расширения и библиотеки Memcached для PHP, Perl, Python:
[root@test ~]# yum install php-pecl-memcache perl-Cache-Memcached python-memcached
Перезапустите сервис Apache или Nginx, чтобы отразить изменения.
[root@test ~]# systemctl restart httpd
[root@test ~]# systemctl restart nginx
Вот, както так.