Modsecurity предотвращение доступа к WSDL

Я установил mod_security с набором правила OWASP и это теперь блокирует мою способность назвать веб-сервис с помощью WSDL. Когда мой код пытается выполнить вызов веб-сервиса, я вижу ниже в ультрасовременном контрольном журнале секунды (домены, и имена файлов IP были затенены для защиты). wsdl файл находится на моем локальном сервере, таким образом, мой вопрос: существует ли способ позволить просто этот WSDL или что-то вроде этого? Я действительно не хочу полностью отключать mod_security.

Спасибо!

--76a2f126-A--
[05/Aug/2014:02:57:12 +0000] U@BICH8AAAEAAAkVDPwAAAAH x.x.x.x 45488 x.x.x.x 443
--76a2f126-B--
GET /WebService.wsdl HTTP/1.1
Host: demo.example.com
Connection: close

--76a2f126-F--
HTTP/1.1 403 Forbidden
Content-Length: 333
Connection: close
Content-Type: text/html; charset=iso-8859-1

--76a2f126-E--
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /WebService.wsdl
on this server.</p>
<p>Additionally, a 404 Not Found
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body></html>

--76a2f126-H--
Message: Access denied with code 403 (phase 2). Operator EQ matched 0 at REQUEST_HEADERS. [file "/etc/httpd/modsecurity-crs/base_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "47"] [id "960015"] [rev "1"] [msg "Request Missing an Accept Header"] [severity "NOTICE"] [ver "OWASP_CRS/2.2.9"] [maturity "9"] [accuracy "9"] [tag "OWASP_CRS/PROTOCOL_VIOLATION/MISSING_HEADER_ACCEPT"] [tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] [tag "PCI/6.5.10"]
Stopwatch: 1407207432020557 41964 (- - -)
Stopwatch2: 1407207432020557 41964; combined=190, p1=116, p2=44, p3=0, p4=0, p5=30, sr=28, sw=0, l=0, gc=0
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.8.0 (http://www.modsecurity.org/); OWASP_CRS/2.2.9.
Server: Apache
Engine-Mode: "ENABLED"
0
задан 19 April 2017 в 16:01
2 ответа

Вы можете отключить mod_security для этого каталога

Изменить свой флаг с помощью

<Directory /path/to/dir>
  SecRuleEngine Off
</Directory>

Вы также можете внести свой IP в белый список, добавив это в файл modsec conf

SecRule REMOTE_ADDR "^XX.XX.XX.XX" phase:1,nolog,allow,id:999999999,ctl:ruleEngine=off
0
ответ дан 5 December 2019 в 13:36

Что имеет смысл для вас, будет зависеть от ваших требований. Указание ModSecurity вообще не проверять этот каталог может сэкономить вам несколько вычислительных циклов, если вы уверены, что он не требует дополнительной защиты, и для GET в статическом файле это, вероятно, нормально. В моем случае WSDL (и другие вещи) являются динамическими, и я столкнулся с теми же нарушениями правил при попытке вызвать службу, но хотел сохранить ModSecurity на месте для вызовов службы, поэтому я пошел другим путем. Правила, которые запускались для меня, оказались вызваны тем, что клиент (которым был WCF) не предоставлял все стандартные заголовки HTTP, и, поскольку он не предоставлял их при нормальном использовании, я пошел дальше и подавил только те правила (в частности, требования к заголовкам accept и user agent), например:

SecRule REQUEST_URI "@beginsWith /path/to/service" "id:ruleidhere,t:none,nolog,pass, \
  ctl:ruleRemoveByTag=OWASP_CRS/PROTOCOL_VIOLATION/MISSING_HEADER_ACCEPT, \
  ctl:ruleRemoveByTag=OWASP_CRS/PROTOCOL_VIOLATION/MISSING_HEADER_UA"

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

0
ответ дан 5 December 2019 в 13:36

Теги

Похожие вопросы