Назад | Перейти на главную страницу

Неработающие URL-адреса после включения mod_security

Например, этот pdf перестал работать после включения мода, выдает ошибку 403.

[Wed May 30 18:47:19 2012] [error] [client xxxxxxxxxxx] ModSecurity: Warning. 
Match of "within %{tx.allowed_http_versions}" against "REQUEST_PROTOCOL" 
required. [file "base_rules/modsecurity_crs_30_http_policy.conf"] 
[line "78"] [id "960034"] [msg "HTTP protocol version is not allowed by policy"] 
[data "HTTP/1.1"] [severity "CRITICAL"] [tag "POLICY/PROTOCOL_NOT_ALLOWED"] 
[tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A6"] [tag "PCI/6.5.10"] [hostname 
"somedomain.net"] [uri "/guide.pdf"] [unique_id "T8ZPFwoAARkAAA3sIQkAAAAG"] 

Строка 78,

SecRule REQUEST_PROTOCOL "!@within %{tx.allowed_http_versions}" 
"phase:2,t:none,block,msg:'HTTP protocol version is not allowed by policy',
 severity:'2',id:'960034',tag:'POLICY/PROTOCOL_NOT_ALLOWED',tag:'WASCTC/WASC-21',
tag:'OWASP_TOP_10/A6',tag:'PCI/6.5.10',logdata:'%{matched_var}',setvar:'tx.msg=%
{rule.msg}',setvar:tx.anomaly_score=+%      
{tx.warning_anomaly_score},setvar:tx.policy_score=+%{tx.warning_anomaly_score},
setvar:tx.%{rule.id}-POLICY/PROTOCOL_NOT_ALLOWED-%{matched_var_name}=%{matched_var}" 

Что делает это правило, что эти URL-адреса не работают?

У вас должен быть раздел в modsecurity_crs_10_config.conf это выглядит так:

#
# -=[ HTTP Policy Settings ]=-
#
# Set the following policy settings here and they will be propagated to the 30 rules
# file (modsecurity_crs_30_http_policy.conf) by using macro expansion.  
# If you run into false positves, you can adjust the settings here.
#
SecAction "phase:1,id:'981212',t:none,nolog,pass, \
setvar:'tx.allowed_methods=GET HEAD POST OPTIONS', \
setvar:'tx.allowed_request_content_type=application/x-www-form-urlencoded multipart/form-data text/xml application/xml application/x-amf', \
setvar:'tx.allowed_http_versions=HTTP/0.9 HTTP/1.0 HTTP/1.1', \
setvar:'tx.restricted_extensions=.asa/ .asax/ .ascx/ .axd/ .backup/ .bak/ .bat/ .cdx/ .cer/ .cfg/ .cmd/ .com/ .config/ .conf/ .cs/ .csproj/ .csr/ .dat/ .db/ .dbf/ .dll/ .dos/ .htr/ .htw/ .ida/ .idc/ .idq/ .inc/ .ini/ .key/ .licx/ .lnk/ .log/ .mdb/ .old/ .pass/ .pdb/ .pol/ .printer/ .pwd/ .resources/ .resx/ .sql/ .sys/ .vb/ .vbs/ .vbproj/ .vsdisco/ .webinfo/ .xsd/ .xsx/', \
setvar:'tx.restricted_headers=/Proxy-Connection/ /Lock-Token/ /Content-Range/ /Translate/ /via/ /if/'"

Не могли бы вы добавить строку с allowed_http_versions от твоего к твоему вопросу? А еще лучше - весь раздел?

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

Сообщение об ошибке содержит [data "HTTP/1.1"] что означает, что правило сработало, потому что HTTP/1.1 не является одной из разрешенных версий HTTP. Либо твой allowed_http_versions не содержит HTTP/1.1 или в этом наборе правил что-то не так, что означает, что переменная установлена ​​неправильно.