Ошибка Apache 500 при загрузке больших файлов (mod_security)

Насколько я пробовал, ни одно из обычных решений не работает для меня. Ну, моя проблема, я получаю ошибку 500 каждый раз, когда загружаю «большой файл» (~ 600 КБ), с меньшими изображениями все работает нормально. Итак... даже с этим (экстремальным) файлом .htaccess это происходит, и да, .htaccess активен:

upload_max_filesize = 100M
post_max_size = 100M
memory_limit = 128M
max_input_time = 6000
max_execution_time = 6000

Итак, я смотрю на журналы и нахожу это (всего одна строка, просто вставленная, чтобы ее было легко читать с переходами по строке):

[Mon Jul 27 17:09:28.<port> 2015] [:error] [pid 21423] [client <ip>]    
ModSecurity: Access denied with code 44 (phase 2). 
Match of "eq 0" against "MULTIPART_UNMATCHED_BOUNDARY" required. 
[file "/etc/httpd/conf.d/mod_security.conf"] 
[line "35"] [id "<another id>"] 
[msg "Multipart parser detected a possible unmatched boundary."] 
[hostname "<my host>"] [uri "<my script>"] [unique_id "<id (useless I think)"]

Но теперь я не могу найти, как отредактировать конфигурацию mod_security (у него конфигурация по умолчанию и пустые активированные_правила), чтобы (я думаю) разрешить загрузку этого «большого» файла. Я использую PHP 5.3 в Apache 2.4/CentOS 7.


person Octal    schedule 27.07.2015    source источник


Ответы (5)


Тот факт, что у вас есть ModSecurity alert, означает, что у вас не может быть пустой папки activated_rules или вы включаете правила каким-то другим способом.

Существуют известные проблемы с ModSecurity для этой ошибки, и она очень подвержена ложным срабатываниям.

Главный совет, когда я выдаю слишком много ложных срабатываний, — просто отключить это правило (я предполагаю, что срабатывает правило 200003, но при необходимости замените идентификатор):

SecRuleRemoveById 200003
person Barry Pollard    schedule 27.07.2015
comment
Добавил оба правила (применил 2 МБ), но продолжает возвращать 500. - person Octal; 27.07.2015
comment
Вы перезапустили Apache, чтобы эти изменения вступили в силу? Было ли это правило с идентификатором 960915, которое срабатывало? Вы добавили код удаления в конфигурацию ПОСЛЕ конфигурации, в которой было определено правило 970915, а не раньше? - person Barry Pollard; 27.07.2015
comment
Да, я каждый раз перезапускаю апач. Не знаю, где хранится правило 960915, я просто вставил строку в конце. - person Octal; 27.07.2015
comment
Хорошо, но вы удалили идентификатор, когда вставляли его, поэтому не уверены, что это 960915. Вам нужно просмотреть конфигурацию Apache и посмотреть, как и когда загружаются правила. - person Barry Pollard; 27.07.2015
comment
Хорошо, я нашел эту строку SecRule MULTIPART_STRICT_ERROR !@eq 0 \ id:'‹the id›',phase:2,t:none,log,deny,status:44,msg:'Составное тело запроса \ не прошла строгую проверку, и использовал ваш removeByID этого идентификатора, но он сохраняется. - person Octal; 27.07.2015
comment
Я не уверен, как это является принятым ответом на проблему с загрузкой OP. Разве это не должно быть SecRequestBodyLimit, которое должно быть обновлено для проблемы с загрузкой? По умолчанию 12,5 МБ. - person Byron70; 06.12.2019

попробуйте проверить параметр FcgidBusyTimeout в конфигурации fcgi

person Chandu9999    schedule 27.07.2015
comment
3600, но страница возвращает ошибку 500 почти через 700 мс. - person Octal; 27.07.2015

Я получил ту же ошибку:

ModSecurity: Access denied with code 44 (phase 2). Match of "eq 0" against "MULTIPART_UNMATCHED_BOUNDARY" required. [file "/etc/httpd/conf.d/mod_security.conf"] [line "34"] [id "200003"] [msg "Multipart parser detected a possible unmatched boundary."] 

Но ответ @nilpo был правильным. У меня возникла эта проблема из-за имени изображения, и после изменения имени проблема была решена.

Но это не то, чего я хочу, потому что я знаю решение, но мой клиент не знал, что им нужно изменить имя.

person naveen joshi    schedule 09.02.2021

Переименуйте файл, который вы пытаетесь загрузить. Эта ошибка указывает на то, что имя файла содержит символ, запрещенный mod_security. Переименуйте файл и повторите попытку загрузки. Отключив указанную строку в mod_security.conf, он с радостью пропустит эту проверку, но это сделает ваш сервер уязвимым.

person Nilpo    schedule 22.01.2016
comment
Этот ответ не относится к этому сообщению об ошибке. Имя файла не при чем. - person Ross Presser; 29.06.2016

все, что я нашел РЕШЕНИЕ!!!

UBUNTU 16.04 + Apache (МОЙ mod_secure РАБОТАЕТ И ЗАГРУЗИТЬ ОК)

<сильный>0. Заголовки apache a2enmod (активировать заголовки и .htaccess)

<сильный>1. ПРОВЕРЬТЕ .htaccess !!!!!

//в .htaccess

php_value upload_max_filesize 50M

php_value post_max_size 50M

//если вы хотите кастомный в .htaccess

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
  1. https://www.maketecheasier.com/securing-apache-ubuntu/ инструкция для команд

sudo nano /etc/apache2/mods-enabled/security2.conf - последние 2 строки я комментирую

sudo nano /etc/modsecurity/modsecurity.conf — настройка mod_secure проста

sudo nano /etc/apache2/apache2.conf — конфигурация apache CTRL+W

//вкл выкл

bash->a2dismod mod-security2 //off

or

bash->a2dismod security2 //off


bash->a2enmod mod-security2 //on
bash->a2enmod security2 //on
  1. Если вы хотите, вы можете удалить определенные правила:

http://www.inmotionhosting.com/support/website/modsecurity/find-and-disable-specific-modsecurity-rules

SecRuleRemoveById 950004 в modsecurity.conf

4. Byteconverter — http://whatsabyte.com/P1/byteconverter.htm

ЭТОГО ДОСТАТОЧНО!!!!

4 часа!!

person Dmitry Matrosov    schedule 18.10.2017