ModSecurity для белого списка URL-адресов

Я хочу написать правило, которое может разрешить только определенный URL-адрес. У меня есть только два URL-адреса 1: abc.com/configuration/ 2: abc.com/update/

SecRule REQUEST_URI "!@beginsWith/configuration" \ "id:700003, фаза:1,log,deny, msg:'Доступ к другому URL'"

SecRule REQUEST_URI "@beginsWith /update" \ "id:700004, фаза:1,log,pass, msg:"Обновить URI доступа""

Как я могу объединить эти два правила, чтобы одно могло переопределить другое?

Спасибо


person user2670674    schedule 25.04.2017    source источник
comment
Я не понимаю вашего вопроса.   -  person Barry Pollard    schedule 25.04.2017
comment
Я хочу разрешить только остальные URL-адреса, которые я хочу, чтобы modsecurity блокировал.   -  person user2670674    schedule 26.04.2017


Ответы (1)


Здесь можно сделать несколько вещей.

По умолчанию в ModSecurity используется регулярное выражение, поэтому вы можете написать одно правило для охвата обоих URI и блокировки, если они не совпадают:

SecRule REQUEST_URI "!\/(configuration|update)\/" "phase:1,id:700003,block

Вы можете сделать то же самое, используя @pm:

SecRule REQUEST_URI "!@pm \/configuration\/ \/update\/" "phase:1,id:700003,block

В качестве альтернативы вы можете использовать skipAfter, что позволит вам отображать URL-адреса в разные правила, а затем иметь одно правило блокировки, которое пропускается, если какое-либо из предыдущих правил совпадает:

SecMarker BEGIN_VALID_URL_CHECK
SecRule REQUEST_URI "!@beginsWith /configuration" \ "id:700003, phase:1,log,skipAfter:END_VALID_URL_CHECK,msg:'Different URL Accessed'"
SecRule REQUEST_URI "@beginsWith /update" \ "id:700004, phase:1,log,skipAfter:END_VALID_URL_CHECK,msg:'Update URI accessed'"
SecRule REQUEST_URI "." \ "id:700005, phase:1,log,block,msg:'Another URI accessed - blocking'"
SecMarker END_VALID_URL_CHECK

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

SecRule REQUEST_URI "!@beginsWith /configuration" \ "id:700003, phase:1,log,allow,msg:'Different URL Accessed'"
SecRule REQUEST_URI "@beginsWith /update" \ "id:700004, phase:1,log,allow, msg:'Update URI accessed'"
SecRule REQUEST_URI "." \ "id:700005, phase:1,log,block, msg:'Another URI accessed - blocking'"
person Barry Pollard    schedule 26.04.2017