Когда Apache или nginx обслуживает статические файлы, он переходит по символьным ссылкам, даже если та или иная ссылка указывает на файл, принадлежащий другому системному пользователю (например, соответствующему другой подписке). Это позволяет злоумышленнику, имеющему доступ к подписке, читать файлы из другой подписки, в частности, файлы, содержащие пароли и настройки WordPress или других CMS.

Снижение уязвимости

Права файловой системы

Если вы используете WordPress Toolkit, самый простой способ снизить уязвимость ваших установок WordPress заключается в использовании возможностей самого Toolkit:

  1. Перейдите в WordPress Toolkit.
  2. Выберите все установки WordPress и нажмите Проверить безопасность.
  3. Проверьте, что пункт «Права доступа к файлам и папкам» отмечен как «OK».
  4. В противном случае нажмите Защитить.

Если вы не используете WordPress Toolkit или хотите защитить какую-либо CMS, отличную от WordPress, вам необходимо вручную изменить права на все файлы, которые вы хотите защитить, отменив все права на группу «Другие». Для этого запустите следующую команду:

chmod o-rwx <file_name>

Примечание: Не существует единого «универсального» списка файлов для защиты, который подходил бы к любому веб-приложению или CMS. Конкретный список файлов, права на которые необходимо изменить, зависит от самого приложения.

Конфигурация Apache

Такой способ снижения уязвимости подходит для подписок, которые в качестве веб-сервера используют Apache (подписка использует Apache, если в разделе Хостинг и DNS > Настройки Apache и nginx установлен флажок «Режим прокси»).

Чтобы снизить уязвимость, сделайте следующее:

  1. Перейдите в раздел Тарифные планы > ваш план > вкладка «Веб-сервер» (или в вашу подписку > Сайты и домены > Хостинг и DNS > Настройки Apache и nginx).
  2. Установите флажок «Запретить открывать символьные ссылки».

Если вы установите эту настройку для тарифного плана, вы тем самым защитите все подписки на основе этого тарифного плана (то есть, если злоумышленник получит доступ к одной подписке, он не сможет атаковать остальные подписки). Но если вы установите эту настройку для подписки, вы снизите уязвимость только для этой конкретной подписки.

Примечание: Сайт, который использует символьные ссылки на свои собственные файлы, продолжит работать, если он не использует опцию “FollowSymLinks” в файле .htaccess, так как опция “SymLinksIfOwnerMatch” включена по умолчанию. Если такой сайт использует опцию “FollowSymLinks” в файле .htaccess, он прекратит работу.

Осторожно: Это решение не избавит вас от уязвимости в отношении состояния гонки «время проверки к времени использования», связанного с опцией Apache “SymLinksIfOwnerMatch”. Чтобы снизить эту уязвимость, вы можете применить к Apache следующий патч (этот патч не тестировался Plesk, применяйте его на свой собственный риск) или использовать одну из опций защиты от символьных ссылок на основе ядра, описанных далее в этой главе.

Конфигурация Nginx

Этот способ снижения уязвимости подойдет для подписок, которые используют nginx для обслуживания статических файлов напрямую (подписка использует nginx, если опция «Режим прокси» выключена или если опция «Режим прокси» включена и при этом опция «Обрабатывать статические файлы с помощью nginx» в разделе Хостинг и DNS > Настройки Apache и nginx также включена).

Чтобы снизить уязвимость, сделайте следующее:

  1. Перейдите в раздел Тарифные планы > ваш план > «Веб-сервер» (или в вашу подписку > Сайты и домены > Хостинг и DNS > Настройки Apache и nginx).
  2. Установите флажок «Запретить открывать символьные ссылки».

Если вы установите эту настройку для тарифного плана, вы тем самым защитите все подписки на основе этого тарифного плана (то есть, если злоумышленник получит доступ к одной подписке, он не сможет атаковать остальные подписки). Но если вы установите эту настройку для подписки, вы снизите уязвимость только для этой конкретной подписки.

Примечание: Эта опция не применима к компьютерам на базе ядра Linux версии 2.6.39 или ниже (в частности, эту версию ядра используют CentOS 6, Red Hat Enterprise Linux 6 или CloudLinux 6). Чтобы снизить уязвимость на таких компьютерах, мы рекомендуем вам либо обновить операционную систему до последней стабильной версии, либо использовать один из описанных ниже механизмов защиты от символьных ссылок на основе ядра.

SecureLinks в mod_hostinglimits для CloudLinux

На компьютерах с CloudLinux вы можете снизить уязвимость, включив механизм защиты соответствия владельца символьных ссылок, который доступен как часть модуля HostingLimits для Apache. Более подробную информацию можно найти в документации CloudLinux.

Набор патчей KernelCare Symlink Protection для CentOS 6 и 7 (доступен бесплатно)

На компьютерах с CentOS 6 или CentOS 7 вы можете снизить уязвимость, установив бесплатный набор патчей Symlink Protection от CloudLinux. Более подробную информацию можно найти в документации CloudLinux.

Grsecurity (набор патчей для ядра Linux для повышения безопасности, требует платной подписки)

Если вам не подходит ни одна из перечисленных выше опций для снижения уязвимости, вы можете установить набор патчей для повышения безопасности ядра Linux grsecurity, а затем настроить функцию GRKERNSEC_SYMLINKOWN. Имейте в виду, что использование grsecurity не бесплатно и требует покупки годовой подписки.