правила mod_security2 для WordPress

Существуют ли стандартные (?!) правила mod_security2 для серверов с сайтами WordPress? Я хочу пояснить, что я не хочу отключать mod_security2 (он существует по уважительной причине). Я просто хочу немного облегчить себе жизнь при работе с установками WordPress.

Я прочитал это http://wpsecure.net/2012/01/using-mod_security-2-with-wordpress/, но было бы здорово услышать больше мнений от людей, уже использующих mod_security2 и WordPress.

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

<LocationMatch "/wp-admin/post.php">
  SecRuleRemoveById 300015 300016 300017 950907 950005 950006 960008 960011 960904 959006
  SecRuleRemoveById phpids-17
  SecRuleRemoveById phpids-20
  SecRuleRemoveById phpids-21
  SecRuleRemoveById phpids-30
  SecRuleRemoveById phpids-61
</LocationMatch>

<LocationMatch "/wp-admin/admin-ajax.php">
  SecRuleRemoveById 300015 300016 300017 950907 950005 950006 960008 960011 960904 959006
  SecRuleRemoveById phpids-17
  SecRuleRemoveById phpids-20
  SecRuleRemoveById phpids-21
  SecRuleRemoveById phpids-30
  SecRuleRemoveById phpids-61
</LocationMatch>

<LocationMatch "/wp-admin/page.php">
  SecRuleRemoveById 300015 300016 300017 950907 950005 950006 960008 960011 960904
  SecRuleRemoveById phpids-17
  SecRuleRemoveById phpids-20
  SecRuleRemoveById phpids-21
  SecRuleRemoveById phpids-30
  SecRuleRemoveById phpids-61
</LocationMatch>

<LocationMatch "/wp-admin/options.php">
  SecRuleRemoveById 300015 300016 300017 950907 950005 950006 960008 960011 960904 959006
  SecRuleRemoveById phpids-17
  SecRuleRemoveById phpids-20
  SecRuleRemoveById phpids-21
  SecRuleRemoveById phpids-30
  SecRuleRemoveById phpids-61
</LocationMatch>

<LocationMatch "/wp-admin/theme-editor.php">
  SecRuleRemoveById 300015 300016 300017 950907 950005 950006 960008 960011 960904 959006
  SecRuleRemoveById phpids-17
  SecRuleRemoveById phpids-20
  SecRuleRemoveById phpids-21
  SecRuleRemoveById phpids-30
  SecRuleRemoveById phpids-61
</LocationMatch>

<LocationMatch "/wp-content/plugins/">
  SecRuleRemoveById 300015 340151 1234234 340153 1234234 300016 300017 950907 950005 950006 960008 960011 960904 959006
  SecRuleRemoveById phpids-17
  SecRuleRemoveById phpids-20
  SecRuleRemoveById phpids-21
  SecRuleRemoveById phpids-30
  SecRuleRemoveById phpids-61
</LocationMatch>

<LocationMatch "/wp-includes/">
  SecRuleRemoveById 960010 960012 950006 959006
  SecRuleRemoveById phpids-17
  SecRuleRemoveById phpids-20
  SecRuleRemoveById phpids-21
  SecRuleRemoveById phpids-30
  SecRuleRemoveById phpids-61
</LocationMatch>

<LocationMatch "/wp-content/themes/">
  SecRuleRemoveById 340151 340153 1234234 950006 959006
  SecRuleRemoveById phpids-17
  SecRuleRemoveById phpids-20
  SecRuleRemoveById phpids-21
  SecRuleRemoveById phpids-30
  SecRuleRemoveById phpids-61
</LocationMatch>

<LocationMatch "/wp-cron.php">
  SecRuleRemoveById 960015
</LocationMatch>

<LocationMatch "/feed">
  SecRuleRemoveById 960015
</LocationMatch>

<LocationMatch "/category/feed">
  SecRuleRemoveById 960015
</LocationMatch>

Спасибо.


person kanenas    schedule 31.01.2014    source источник


Ответы (1)


Насколько я знаю, общедоступного/бесплатного набора правил, содержащего специальные наборы правил для Wordpress, не существует. Коммерческие наборы правил для wordpress доступны на сайтах Atomicorp и Trustwave, но на самом деле я их не использовал/не тестировал.

Опубликованная вами конфигурация предназначена для включения в конфигурацию вашего веб-сервера Apache2 или в конфигурацию каждого виртуального хоста, если вы не хотите включать конфигурацию глобально.

LocationMatch — это директива веб-сервера Apache2 — см.: http://httpd.apache.org/docs/2.2/en/mod/core.html#locationmatch

SecRuleRemoveById — это директива mod_security2 https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#wiki-SecRuleRemoveById, который отключает одно или несколько правил по их идентификатору.

Сочетая оба вместе, первые строки конфигурации удаляют правила mod_security2 с заданными идентификаторами для всех URL-адресов, соответствующих «/wp-admin/post.php» (это скрипт, который отвечает за управление сообщениями блога в бэкэнде Wordpress).

В общем, конфигурация отключает множество правил mod_security2/OWASP для нескольких скриптов Wordpress.

Мой опыт работы с текущими версиями mod_security2 и Wordpress таков:

Несколько месяцев я находился в такой же ситуации, как и вы сейчас. У меня уже был веб-сервер с Apache2 с mod_security2 и основным набором правил OWASP. На веб-сервере размещалось только несколько небольших сайтов Wordpress, и я был счастлив, что mod_security2 блокировал несколько автоматических атак против Wordpress.

Затем мне пришлось обновить mod_security2 до последней версии, что также потребовало обновления основного набора правил OWASP до последней версии. Новая версия основного набора правил OWASP привела ко многим ложным срабатываниям mod_security2 для Wordpress, поэтому я пришел к той же статье, о которой вы упомянули в своем вопросе. После нескольких часов отладки я пришел к выводу, что статья (от 2012 года) кажется устаревшей и что разработка как mod_security2, так и Wordpress зашла так далеко, что показанные правила исключения в статья не подходит для новых версий основных правил mod_security2/OWASP и Wordpress.

Я попытался создать свой собственный набор правил, но на самом деле сдался после многих часов работы, так как мне пришлось отключить слишком много правил, которые поставлялись с основным набором правил OWASP (например, отключить многие проверки SQL-инъекций из-за ложных срабатываний), которые фактически удалили множество преимуществ безопасности mod_security2 и основного набора правил OWASP.

person derhansen    schedule 03.02.2014
comment
спасибо, что поделились своим опытом. Итак ... если я правильно понял, вы предлагаете попробовать и поймать, прочитав журналы (mod_security). - person kanenas; 03.02.2014
comment
Да, настройте mod_security2 с набором правил (например, OWASP) и настройте mod_security2 так, чтобы он регистрировался в журнале аудита только с помощью параметра SecRuleEngine DetectionOnly. Затем поработайте с сайтами Wordpress как во внешнем, так и во внутреннем интерфейсе и проверьте журнал аудита, чтобы увидеть, какие правила приводят к ложным срабатываниям. В результате вы можете создавать свои собственные правила исключения, используя SecRuleRemoveById, как показано в статье. - person derhansen; 04.02.2014