Защита от F5. Настраиваем Apache правильно. — Технический блог

Защита от F5. Настраиваем Apache правильно. 4 мая 2015 GNU Linux – CentOS / Debian комментариев 5 18186 Яндекс.Директ Облачные VPS/VDS сервера в аренду! Узнать больше zomro.com 18+ Нажав клавишу F5 в окне браузера и удерживая ее в течении нескольких минут вы можете устроить легкую DDOS атаку на сайт. Функциональная клавиша F5 дает команду браузеру перезагрузить страницу. Если вы ее нажали и удерживаете длительное время, то ваш компьютер пытается загрузить ее (страницу) м

Источник: Защита от F5. Настраиваем Apache правильно. — Технический блог

 

Защита от F5. Настраиваем Apache правильно.

Нажав клавишу F5 в окне браузера и удерживая ее в течении нескольких минут вы можете устроить легкую DDOS атаку на сайт. Функциональная клавиша F5 дает команду браузеру перезагрузить страницу.

Если вы ее нажали и удерживаете длительное время, то ваш компьютер пытается загрузить ее (страницу) много и много раз, чем создает нагрузку на сервер в виде множественных запросов. А так как возможности любого сервера не безграничны, то от переизбытка «чувств» запросов он может перестать работать.

Зависнет сервер или нет зависит от технических характеристик и настроек самого сервера, сайта и используемой CMS. В этой статье я опишу как правильно настроить вэб-сервер Apache2 чтобы даже самый скромный сервер VDS с 512 МБ памяти справлялся с большим количеством запросов, в том числе вызванных клавишей F5.

Подготовка к настройке сервера

Определим какой модуль MPM использует Apache2. Для CentOS это выглядит так:

# httpd -V | grep MPM

Получаем ответ:

Server MPM:     Prefork
 -D APACHE_MPM_DIR="server/mpm/prefork"

Отлично, у нас Server MPM: Prefork

Настройка Apache, что бы не было проблем с жором памяти

В CentOS надо отредактировать файл /etc/httpd/conf/httpd.conf.

Который по-умолчанию может иметь следующее содержание:

<IfModule mpm_prefork_module>
    StartServers          8
    MinSpareServers       5
    MaxSpareServers      20
    ServerLimit         256
    MaxClients          200
    MaxRequestsPerChild 4000
</IfModule>

Краткое описание параметров модуля Apache MPM Prefork

  • StartServers — число дочерних процессов, создаваемых при запуске сервера.
  • MinSpareServers — минимальное число неиспользуемых (запасных) дочерних процессов сервера, ожидающих потенциальные запросы.
  • MaxSpareServers — максимальное число запасных процессов, ожидающих потенциальные запросы. Если это число будет превышено, лишние процессы будут убиты.
  • MaxClients — самый важный параметр модуля MPM prefork, устанавливает верхний предел количества одновременно активных процессов. Именно от него зависит потребление памяти. Его значение перекрывает значение предыдущих параметров.
  • ServerLimit обычно равен MaxClients.
  • MaxRequestsPerChild — как часто сервер перерабатывает процессы, убивая старые и начиная (запуская) новые. Полезен при утечках памяти Apache и его библиотек.
  • KeepAlive — обеспечивает долгоживущие сессии HTTP, позволяющие отправлять несколько запросов через одно и то же соединение. Полезно включить, если страницы содержат много изображений. Но если используете NGINX как проксисервер, то оставьте значение OFF.
Рекомендую прочесть:  Резервное копирование Linux сервера.

Самый важный параметр = MaxClients, он как раз и говорит о количестве одновременных процессов вебсервера Apache.

Как узнать значение MaxClients

Определить его значение не сложно. Расчет значения приведу для сервера с размером оперативной памяти 512 МБ. Решаем, что отдаем для ресурсов Apache 50% оперативной памяти, то есть в нашем случае 256 МБ.

Определяем сколько памяти отжирает один процесс:

# ps -ylC httpd | awk '{x += $8;y += 1} END {print "Average Proccess Size (MB): "x/((y-1)*1024)}'

Получаем следующие значения:

Average Proccess Size (MB): 21.5185

Получается, что в среднем один процесс Apache потребляет 21 МБ. Соответственно в отведенном объеме 256 МБ мы можем запустить 12 процессов.

Исправим файл конфигурации под новое значение:

<IfModule mpm_prefork_module>
    StartServers          3
    MinSpareServers       3
    MaxSpareServers       9
    ServerLimit         256
    MaxClients           12
    MaxRequestsPerChild 3000
</IfModule>

Остальные параметры поправил исходя из рекомендаций в интернете для сервера с ОЗУ 512 МБ.

После внесения изменений в файл конфигурации не забудьте перезагрузить Appache:

# service httpd restart

Благодарности

При написании статьи были использованы следующие источники:

  1. https://talk.pr-cy.ru/topic/12001-guide-kak-bystro-nastroit-vps-v-kachestve-web-servera/
  2. http://www.o-nix.com/pages/reshenija-dlja-xostinga/apache-mpm.php
  3. http://blog.amet13.name/2014/06/apache2.html
  4. http://www.xela.ru/2009/03/nastrojka-httpdconf-na-vps-pod-unix-apache/

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *