Как отключить mod_security и mod_security2 в .htaccess

Я создал плагин Wordpress, который стал популярным, но я получаю много жалоб, что он не работает. После входа на многие пользовательские веб-сайты WP (после запроса пароля администратора) я заметил, что последняя проблема, которую я не могу легко решить, - это mod_security и mod_security2, блокирующие некоторые запросы AJAX или .htaccess, что вызывает ошибку 500 в некоторых конфигурациях.

Итак, прежде всего, почему этот фрагмент кода заставляет некоторые серверы возвращать ошибку 500?

<IfModule mod_security2.c>
  SecRuleRemoveById 300015
  SecRuleRemoveById 300016
  SecRuleRemoveById 300017
  SecRuleRemoveById 950907
  SecRuleRemoveById 950005
  SecRuleRemoveById 950006
  SecRuleRemoveById 960008
  SecRuleRemoveById 960011
  SecRuleRemoveById 960904
  SecRuleRemoveById phpids-17
  SecRuleRemoveById phpids-20
  SecRuleRemoveById phpids-21
  SecRuleRemoveById phpids-30
  SecRuleRemoveById phpids-61

на других серверах удаление правил по идентификатору таким образом вызывает ошибку 500:

<IfModule mod_security.c>
  SecRuleRemoveById 300015
  ...
  SecRuleRemoveById phpids-61
</IfModule>

так что на данный момент единственная рабочая вещь, которая не вызывает сбоев сервера, - это

<IfModule mod_security.c>
  SecFilterEngine Off
  SecFilterScanPOST Off
</IfModule>

но этого недостаточно для серверов с mod_security2!

Как написать кросс-серверный файл .htaccess и какие условия IF я должен добавить, чтобы отключить mod_security и mod_security2 в любом месте, где он применяется, и не вызывать 500 ошибок в других конфигурациях?

Изменить: не только в Apache. Везде, где используется .htaccess.


person Pawel    schedule 30.09.2013    source источник
comment
Если хостер использует mod_security в своей среде, я думаю, он делает это по какой-то причине - поэтому я сомневаюсь, что они позволят кому-либо отключить его или изменить его конфигурацию через htaccess.   -  person CBroe    schedule 30.09.2013
comment
@CBroe mod_security - это хорошо, но он установлен как общее правило для всего сервера, поэтому можно делать исключения с помощью htaccess. Он также содержит ошибки (иногда разрешает и запрещает доступ случайным образом) и прерывает запросы POST, сделанные с помощью AJAX. Это распространенная проблема в плагинах Wordpress, и большинство людей, использующих Wordpress, не знают, что такое mod_security, и винят разработчиков плагинов в их неисправных плагинах.   -  person Pawel    schedule 30.09.2013
comment
@Pawel: Не всегда можно решить коммуникативные и социальные проблемы с помощью технических измерений. Вместо этого составьте легкую для понимания статью, в которой описывается проблема, как пользователь может узнать, связана ли проблема с этой проблемой, как связаться с их хостерами и что их спросить. Затем предложите дополнительную индивидуальную поддержку в конце документа и ваших условий. Если пользователи плагинов выбирают такой хостинг, вы не обязаны его исправлять. То же самое относится и к Wordpress. И вашим пользователям нравится этот пэчворк, иначе они бы не выбрали WP.   -  person hakre    schedule 10.10.2013
comment
Так что лучше поговорите со своими потенциальными клиентами лицом к лицу и поймите, как они решают эти проблемы: если не знают лучше, просто стонут, но они не могут ничего изменить, и их понимание очень мало. Но не стоит их винить. Вместо того, чтобы протянуть руку помощи, он творит чудеса. Только подумайте, что вы оказываете им поддержку на первом уровне.   -  person hakre    schedule 10.10.2013
comment
@hakre Я не могу напрямую поддерживать такое количество пользователей. У плагина 100+ новых пользователей ежедневно. Это очень популярно, и это даже не моя работа (это просто хобби, и я подрядчик, и эта роль заставляет меня работать больше, чем штатный сотрудник), поэтому у меня нет времени решать повторяющуюся проблему.   -  person Pawel    schedule 11.10.2013
comment
Я не думаю, что ваша программа требует поддержки. Вместо этого есть четкий отказ от ответственности, который является частью GPL (или любой другой лицензии, которую вы используете). Я не говорил, что вы должны поддерживать этих пользователей и что это ваша работа. Эти 100+ новых ежедневных пользователей - популярное или нет - бесплатное решение использовать плагин КАК ЕСТЬ. Также вы должны предоставить ссылку на плагин, если автору может быть интересно попробовать его для какой-либо идеи решения.   -  person hakre    schedule 11.10.2013


Ответы (2)


Райан С. Барнетт, менеджер сообщества ModSecurity, заявил:

Поддержка файлов .htaccess была прекращена в версии 2.x, поскольку это вызывало слишком много проблем с безопасностью.

источник: http://article.gmane.org/gmane.comp.apache.mod-security.user/3065

Единственные возможные конфигурации, которые можно включить в htaccess, следующие (начиная с 2.7.3), но вам необходимо ./configure --enable-htaccess-config:

  • SecAction
  • SecRule

  • SecRuleRemoveByMsg

  • SecRuleRemoveByTag
  • SecRuleRemoveById

  • SecRuleUpdateActionById

  • SecRuleUpdateTargetById
  • SecRuleUpdateTargetByTag
  • SecRuleUpdateTargetByMsg

https://github.com/SpiderLabs/ModSecurity/blob/876d4f5f9558595c00f40af25ea6216386f15cd7/CHANGES#L69

person Kakawait    schedule 05.10.2013
comment
Может быть, по умолчанию htaccess отключен. НО в тех случаях, когда он включен, ТО страница вылетает. В противном случае это полностью игнорируется. Мой вопрос в том, как заставить этот .htaccess прекратить сбой любой конфигурации. - person Pawel; 11.10.2013

Последнее, что нужно сделать, - это отобразить сообщение, информирующее об обращении к администратору сервера. Прежде всего, я попробую одно из этих решений для автоматического создания конфигурации:

Создайте 2-3 изолированных конфигурационных файла .htaccess во вложенных папках.

  1. Во время активации плагина тестовые конфигурации по очереди с имитируемым удаленным тестом AJAX.
  2. Начните с лучшей подпапки конфигурации общих настроек
  3. Проверьте, есть ли в этой папке вызовы прокси-скриптов AJAX и доступ к файлам изображений, стилей и т. Д.
  4. После нахождения успешной (разблокировки и отсутствия сбоев) конфигурации сохраните выбранный файл .htaccess в папку, содержащую файл PHP прокси AJAX.
  5. Если ни одна из конфигураций (или встроенный скрипт AJAX wordpress - не очень надежный) не работает, отобразится сообщение об ошибке, сообщающее администратору сервера, чтобы разрешить htaccess для данной папки.

OR

  1. Проверить загруженные модули с помощью PHP
  2. добавьте идентификатор SecRuleRemoveById, только если присутствует mod_security2, чтобы предотвратить базовое сбой mod_security
person Pawel    schedule 11.10.2013