[Грешка "412 Precondition Failed" - използване на mod\_security2](/bg/kb/view/938_greshka_412_precondition_failed_izpolzvane_na_mod_security2 "Грешка \"412 Precondition Failed\" - използване на mod_security2")

 Mod\_security2 е модул на Apache 2, известен още като защитна стена за уеб приложения, който блокира определени заявки до уеб сървъра, като се ползва списък от предварително зададени правила. Тези правила включват блокиране на заявки, свързани с популярни атаки срещу сървъри, както и блокиране на заявки към уязвим софтуер. Тази допълнителна мярка за сигурност е активирана по подразбиране на нашите сървъри, тъй като се стремим да защитим максимално сайтовете на нашите клиенти от хакерски атаки. Възможно е определени легитимни заявки към сървъра също да бъдат блокирани, ако съвпаднат с определено правило. Когато това се случи, посетителят вижда грешката 412 Request Blocked (precondition failed).
Деактивиране на mod\_security2 за XML-RPC файлове
Протоколът XML-RPC се използва от някои модули на WordPress, за да комуникира с външни ресурси. Най-популярните примери за това са разширението Jetpack и официалните мобилни приложения на WordPress. Всички IP адреси, използвани от Jetpack, са добавени към списък с разрешени адреси, така че всички заявки от тях към xmlrpc.php файлове няма да бъдат блокирани от mod\_security2. За повече информация как да разрешите достъпа до този файл от секцията WordPress в Контролния панел, разгледайте нашата статия Разрешаване на достъп до XML-RPC.
Ако сайтът Ви използва xmlrpc.php файл, но не е базиран на WordPress, Вие можете да деактивирате mod\_security2 чрез добавяне на следното съдържание в .htaccess файла на Вашия сайт: &lt;IfModule security2\_module&gt;SecRuleRemoveById 114 &lt;/IfModule&gt;Ако Вашият сайт няма .htaccess файл, можете лесно да го създадете чрез раздел Файлове на Контролния панел. Имайте предвид, че зададените настройки ще важат само за директорията, в която се намира .htaccess файла, както и нейните поддиректории.
Откриване на mod\_security2 правило, което генерира грешка 412
Ако виждате грешка 412 на определена страница от Вашия сайт, можете много лесно да откриете кое mod\_security2 правило я предизвиква. Всичко, което трябва да направите, е да прегледате сървърните логове за грешки за Вашия сайт, следвайки тези стъпки:

Отворете хостинг Контролния панел &gt; раздел "Логове" &gt; подраздел "HTTP логове в реално време".
Изчакайте една минута, за да започнат да се показват логовете в реално време в подраздел "HTTP логове в реално време".
Отворете страницата на Вашия сайт, където се показва грешката 412.
Проверете екрана "Логове за грешки" в подраздел "HTTP логове в реално време", където трябва да видите съобщение за грешка, подобно на следното:example.com [Fri Aug 13 14:46:30 2021] [error] [pid 9179] apache2\_util.c(273): [client YOUR\_IP\_ADDRESS:59893] [client YOUR\_IP\_ADDRESS] ModSecurity: Access denied with code 412 (phase 2). Match of "ipMatchFromFile /apache/conf/includes/mod-security-jetpack-ip-whitelist.txt" against "REMOTE\_ADDR" required. [file "/apache/conf/includes/mod\_security2.conf"] [line "42"] [id "114"] [hostname "example.com"] [uri "/xmlrpc.php"] [unique\_id "YRZblp0P33pV7fcztwccfAAAAQE"]

Конкретното mod\_security2 правило и файлът, които генерират грешката, ще бъдат показани в полетата id и uri на съобщението за грешка. В "Match" частта от mod\_security2 съобщението, ще откриете обяснение на конкретното правило. В дадения по-горе пример достъпът до xmlrpc.php файлът е блокиран от mod\_security2 правилото с идентификационен номер (id) 114, защото достъпът до файла е позволен само от IP адресите на Jetpack.
Деактириване на отделно правило
По подразбиране, някои възможно зловредни ботове са блокирани на нашите сървъри с mod\_security2 правила. Това е списъкът с някои блокирани ботове, както и техните идентификационни номера (ID):
"Havij" id:350 "^BOT/0.1" id:354 "^Mozilla\/4\.0 \(compatible; MSIE 6\.0; Windows NT 5\.1;?( SV1)?;?\)$" id:373 "^Mozilla\/3\.0 \(compatible; Indy Library\)$" id:392 "sqlmap" id:398 "DatabaseDriverMysql" "id:401" "BUbiNG" id:406 "MauiBot" id:407 "MJ12bot" id:408 "BLEXBot" id:409 "DotBot" id:410 "MegaIndex" id:412
Ако желаете да разрешите достъпа до сайта Ви от някой от тези ботове, можете да деактивирате съответното mod\_security2 правило в .htaccess файл в главната директория на Вашия сайт. Трябва да използвате директивата SecRuleRemoveById, последвана от идентификационния номер (ID) за съответното правило. Например, за да позволите достъп до сайта Ви от бота DotBot (който е блокиран с mod\_security2 правило с идентификационен номер 410), трябва да добавите следния код към .htaccess файла на Вашия сайт:
&lt;IfModule security2\_module&gt;SecRuleRemoveById 410&lt;/IfModule&gt;
Деактивиране на mod\_security2





Деактивирането на модула mod\_security2 ще намали драстично сигурността на сайта Ви, затова не Ви препоръчваме да го правите. Вместо това, следвайки горните стъпки, разберете кой точно филтър на mod\_security2 пречи на изпълнението на Вашия скрипт, след което забранете само конкретното правило.




Като алтернатива можете да спрете функциите на mod\_security2 само в директорията, в която се намира скриптът, чието изпълнение предизвиква грешка. За да деактивирате mod\_security2, създайте .htaccess файл в съответната директория със следното съдържание:&lt;IfModule security2\_module&gt;SecRuleEngine OffSecRequestBodyAccess Off&lt;/IfModule&gt;
 