12 марта 2019 года WordPress объявил о техническом выпуске для версии 5.1.1. В этой новой версии появилось 10 исправлений и улучшений, которые включают обновления безопасности, которые описывают, как комментарии фильтруются и хранятся в базе данных. До этого обновления, если комментарии WordPress создавались злонамеренно, злоумышленник, не прошедший проверку подлинности, мог получить доступ к сайту пользователя, что привело к уязвимости межсайтового скриптинга.
Чтобы избежать каких-либо эксплойтов из-за уязвимостей системы безопасности, пользователям настоятельно рекомендуется обновить свой WordPress до версии 5.1.1 как можно скорее. Эти уязвимости безопасности затрагивают каждую версию WordPress до 5.1.1. В противном случае пользователям рекомендуется отключить параметр комментариев, пока их версия WordPress не будет обновлена.
WordPress версии 5.1.1 доступен для загрузки или обновления непосредственно через панель управления WordPress, чтобы воспользоваться всеми функциями и исправлениями ошибок.
Иногда, необходимо знать какая версия пакета (программы) находится в репозиториях. Например, вы хотите установить какую-либо программу и нужно для себя узнать: или качать с официального сайта эту программу, или можно спокойно установить из репозиторев Ubuntu.
Такая возможность есть.
Для начала, найдем нужную программу в репозиториях, например Mozilla Firefox:
sudo apt-cache search firefox
На этот запрос мы получим огромный перечень пакетов, в которых встречается слово firefox. Т.е. пакет такой есть, а теперь узнаем версию пакета:
sudo apt-cache show firefox | grep -i version
Система ответит, что у нее есть пакеты firefox версии 65.0.1 и 59.0.2:
Ключевыми характеристиками любого веб-сервера являются производительность и безопасность. Также немаловажно и потребление ресурсов. Однако если при сравнительно небольшом его увеличении повышаются ключевые характеристики, то это является оправданным. Мультипроцессинг является основным способом, позволяющим добиться впечатляющей производительности веб-сервера. Да ещё при этом существенно повысить безопасность и надёжность его работы.
Зачем нужен мультипроцессинг для веб-сервера?
Поскольку к веб-серверу одновременно может быть направлено множество запросов. То естественно, необходимо некоторую часть из них принять в обработку. А оставшиеся запросы поместить в очередь ожидания. После того, как занятый обработкой запроса процесс освободится. Он получит следующий, находившийся в очереди запрос. И так далее. Сколько должно одновременно обрабатываться запросов, сколько должно находиться в очереди, а также стратегия распределения задач между процессами — определяется системной конфигурацией веб-сервера. Эти параметры настраиваются в ходе оптимизации и тестирования программно-аппартной платформы. На которой предполагается работа веб-сервера. Исходя из прогнозируемых нагрузок и специфики выполняемых задач.
Но дело ещё и в том, чтобы не просто обеспечить максимальную производительность веб-сервера за счёт тонкой и сбалансированной настройки мультипроцессинговой обработки, но также обеспечить выполнение каждого процесса в «индивидуальном» порядке. Это подразумевает выполнение каждого процесса от имени конкретного пользователя. Такой подход обеспечивает максимальную безопасность без потери производительности. При условии, что имеют место достаточное количество аппаратных ресурсов. А также грамотная оптимизация работы соответствующего программного обеспечения (ПО).
Как это работает?
Для организации выполнения процессов (точнее экземпляров) Apache от разных пользователей существуют различные модули. Одним из таких является модуль mpm-itk. Для дистрибутивов Ubuntu этот модуль доступен в стандартном репозитории в виде отдельного пакета под именем libapache2-mpm-itk.
Разные виртуальные хосты (соответствующие каталоги и их содержимое) могут принадлежать разным пользователям. По-умолчанию Apache для мультипроцессинговой обработки HTTP-запросов для виртуальных хостов использует определённое количество процессов-экземпляров самого себя, которые запускаются от имени одного (обычно это пользователь www-data, apache или http) пользователя. Такимы образом, по-умолчанию с конфигурацией «из коробки» Apache от имени одного пользователя обслуживает виртуальные хосты, принадлежащие разным пользователям. Это потенциальная дыра в безопасности. Частично проблема решается добавлением верифицированных пользователей-владельцев виртуальных хостов в группу Apache. Но, во-первых, это полностью не решает проблему с безопасностью, во-вторых, это очень неудобно. Как самим пользователям, так и администраторам.
Модуль mpm-itk позволяет запускать отдельные экземпляры Apache от имени того пользователя, к виртуальному хосту которого поступил HTTP-запрос. Таким образом, каждый виртуальный хост обслуживается процессом веб-сервера, запущенным от имени самого этого пользователя — владельца виртуального хоста. Данный подход снимает все противоречия в модели распределения доступа к ресурсам виртуальных хостов. Всё, что нужно — это указать веб-серверу, что тот или иной хост нужно обрабатывать от имени его владельца. Это делается путём указания соответствующих директив в конфигурационном файле виртуального хоста.
Установка mpm-itk в Linux
Поскольку в большинстве дистрибутивов Linux в стандартном репозитории уже доступны многие модули Apache, в том числе и mpm-itk, то лучше воспользоваться менеджером пакетов (или системой управления пакетами СУП) используемого дистрибутива для его (модуля) установки. Например, для Ubuntu нужно установит пакет libapache2-mpm-itk:
$ sudo apt install libapache2-mpm-itk
После этого можно перезапустить Apache:
$ sudo systemctl restart apache2
Но вообще, скрипт установки модуля должен перезапустить веб-сервер автоматически.
Если используемый дистрибутив не предоставляет готовых пакетов для модуля mpm-itk, то установку можно произвести вручную. Исчерпывающие инструкции для этого приведены на официальном сайте разработчиков модуля: http://mpm-itk.sesse.net.
Базовая настройка mpm-itk
Как уже говорилось ранее, для связывания виртуального хоста с конкретным пользователем в системе необходимо в конфигурационном файле хоста определить специальную директиву
Apache – AssignUserId user group:
<IfModule mpm_itk_module>
AssignUserId john john
</IfModule>
Как можно видеть, директива AssignUserId определяет пользователя и группу (именно в таком порядке), указывая веб-серверу, что к данному виртуальному хосту может получить доступ процесс, принадлежащий только указанным пользователю и группе. В данном случае это пользователь john и его одноимённая группа.
Инструкция предназначена для задействования директивы AssignUserId только тогда, когда подключен соответствующий модуль, т. е. mpm-itk. Фраза «mpm_itk_module» формируется из двух составляющих: имени модуля, под которым он был подключен (в данном случае mpm_itk), а также классификатора объекта Apache – module, поскольку это подключаемый модуль. Просмотреть подключенные модули Apache (и их имена) можно в каталоге /etc/apache2/mods-enabled. А все доступные модули должны храниться в каталоге /etc/apache2/mods-available. Например, модулю mpm-itk соответствует файл mpm_itk.load.
Если теперь понаблюдать за процессами Apache, то можно убедиться, что во время обращения к пользовательскому виртуальному хосту (для которого определена директива AssignUserId) создаётся экземпляр Apache, запущенный от соответствующего пользователя.
Заключение
В заключение необходимо отметить, что модуль mpm-itk применяется в тех системах, где безопасность важнее производительности. Поскольку при использовании этого модуля процессы каждый раз при обработке виртуального хоста создаются заново и полностью уничтожаются при отсутствии к нему запросов, то ясно, что производительность от этого не увеличится. Чаще всего подобная схема используется на хостинг-площадках.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.