Модифицированное для хостинга программное обеспечение
Пакет hosting-mod_fcgid
Это модифицированная версия пакета mod_fcgid-2.3.9
с исправленной проблемой «плавного» (graceful) перезапуска Apache.
На серверах c mod_fcgid, где часто вызывается команда sudo apachectl graceful
,
может возникать большое количество обработчиков Apache в состоянии G
, т.е. «плавной» перезагрузки.
Удаляются такие запросы только перезапуском Apache командой: sudo systemctl restart httpd
.
В данной версии модуля эта проблема исправлена, но время перезапуска Apache начинает
зависеть от параметров: FcgidIdleScanInterval
, FcgidErrorScanInterval
и FcgidBusyScanInterval
.
Выбирается минимальное значение от данных трех параметров, т.е. при перезапуске
Apache время перезапуска будет более min(FcgidIdleScanInterval, FcgidErrorScanInterval, FcgidBusyScanInterval)
.
Данный модуль устанавливается совместно с модулем mod_fcgid (требует наличие mod_fcgid).
Для отключения стандартного mod_fcgid выполните следующие действия.
В файле:
/etc/httpd/conf.modules.d/10-fcgid.conf
закомментируйте строкуLoadModule fcgid_module modules/mod_fcgid.so
. Закомментированная строка должна выглядеть следующим образом (с символом#
):#LoadModule fcgid_module modules/mod_fcgid.so
Раскомментируйте строку
#LoadModule fcgid_module modules/hosting-mod_fcgid.so
в файле/etc/httpd/conf.modules.d/10-hosting-fcgid.conf
. Раскомментированная строка должна выглядеть следующим образом (без символа#
):LoadModule fcgid_module modules/hosting-mod_fcgid.so
Перезапустите Apache следующей командой:
$ sudo systemctl restart httpd
Модифицированный программный комплекс «веб-сервер Apache»
Веб-сервер Apache модифицирован таким образом, чтобы предотвратить слишком частые «плавные» (graceful) перезапуски веб-сервера.
В Apache добавлен функционал «отложенный graceful-рестарт веб-сервера apache».
Утилита /usr/sbin/apachectl
и юнит-файл сервиса httpd
модифицированы таким образом, что если опция «отложенный рестарт» включена,
то «плавный» перезапуск Apache выполняется не при каждом запросе, а только один раз согласно планировщику задач cron.
Задача на перезапуск в cron выполняется один раз в 10 минут, при этом все запросы на перезапуск,
которые поступили за эти 10 минут, объединяются в один.
Если опция «отложенный рестарт» выключена, то используется стандартное поведение,
когда веб-сервер Apache перезапускается без задержки на каждый запуск команд systemctl reload httpd
или apachectl graceful
.
Для включения опции «отложенный рестарт» выполните следующую команду:
$ sudo touch /etc/httpd/enable.reload.by.cronjob
Для отключения опции «отложенный рестарт» выполните следующую команду:
$ sudo rm -f /etc/httpd/enable.reload.by.cronjob
Когда опция «отложенный рестарт» включена, все запросы на «плавный» перезапуск Apache записываются в /var/log/messages
.
Также есть возможность включить только запись запросов на «плавный» перезапуск, без включения опции «отложенный рестарт».
Для включения записи запросов на «плавный» перезапуск Apache в журнал событий без включения опции «отложенный рестарт» выполните следующую команду:
$ sudo touch /etc/httpd/debug.reload.by.cronjob
Для отключения записи запросов на «плавный» перезапуск Apache в журнал событий выполните следующую команду:
$ sudo rm -f /etc/httpd/debug.reload.by.cronjob
Файл задания cron для отложенного перезапуска веб-сервера Apache находится по пути /etc/cron.d/httpd-reload-cron
.
По умолчанию опция «отложенный рестарт веб-сервера apache», а также запись запросов на перезапуск, отключены.
Модифицированный программный комплекс «веб-сервер Apache» SymLink Protection
В хостинговую редакцию веб-сервера Apache были добавлены доработки,
позволяющие включить режим SymLink Protection
, когда директива FollowSymLinks
работает как SymLinksIfOwnerMatch
и не позволяет читать файлы других пользователей.
Также добавлен режим получения информации об обрабатываемом сервером файле и
сравнение владельца файла с владельцем DOCUMENT_ROOT
и пользователем, сохранённым в запросе,
что повышает надёжность механизма SymLink Protection
.
Что также исключает атаку, когда запрашиваемый файл на раннем этапе является корректным файлом, а к моменту открытия файла обработчиком, он, например, с помощью задания Cron, подменяется на символьную ссылку на другой файл, принадлежащий другому пользователю.
Активация первого режима происходит директивой Options FollowSymLinks
, а второй режим включается директивой SymlinkProtect On
.
Для добавления данной директивы в ispmanager необходимо создать файл /etc/httpd/conf.d/symlink.conf
и добавить в него директиву:
SymlinkProtect On
Затем перезапустить Apache.