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

Встановіть розширення Memcached PHP:

[root@test ~]# yum install php-pecl-memcache

Встановіть Memcached Perl Library:
[root@test ~]# yum install perl-Cache-Memcached

Встановіть Memcached Python Library:
[root@test ~]# yum install python-memcached

Перезапустіть сервіс Apache або Nginx, щоб відобразити зміни.

[root@test ~]# systemctl restart httpd
[root@test ~]# systemctl restart nginx

От якось так.