Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

213
Views
¿Hay alguna función en ModSecurity para establecer una expresión regular de parámetros relevantes como la opción SecAuditLogRelevantStatus?

Estoy usando ModSecuity con mi servidor Apache y quiero configurarlo para que no registre solicitudes que tengan un parámetro determinado en la cadena de consulta.

En mod_secuirty.conf, tengo las siguientes configuraciones:

 SecAuditEngine RelevantOnly SecAuditLogRelevantStatus "^(?:5|4(?!04))"

Y quiero configurar algo como SecAuditLogRelevantParameter "?! (prueba)" (para registrar cualquier solicitud que no tenga el parámetro de prueba ).

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

mod_security2 para Apache admite ctl:auditLogParts y ctl:auditLogEngine (nota: libmodsecurity3 no admite auditLogEngine para ctl ). Por lo tanto, puede crear una regla que apague el motor de auditoría o modificar las partes del registro. Creo que desea desactivarlo, por lo que, según su solicitud, necesita algo como esto:

 SecAction "id:111001,\ phase:1,\ nolog,\ pass,\ t:none,\ setvar:tx.args_contains_test=0" SecRule ARGS_NAMES "@rx test" \ "id:111002,\ phase:2,\ pass,\ nolog,\ t:lowercase, setvar:'tx.args_contains_test=1'" SecRule TX:args_contains_tests "@lt 1" "id:111003,\ phase:2,\ pass,\ nolog,\ ctl:auditLogEngine=Off"

Coloque estas reglas al principio de su conjunto de reglas; si usa CRS, entonces REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf es una buena opción.

¿Cómo funciona esta exclusión?

Como escribió anteriormente, la condición es "cualquier solicitud que no tenga el parámetro de prueba" . Esto no es tan trivial, porque debe verificar que algo no exista , por lo tanto, debe inspeccionar todos los argumentos.

En ModSecurity, puede hacerlo solo de esta manera: primero, debe configurar una variable de transacción, que almacena la información, la solicitud contiene cualquier argumento con nombre de test o no. Esa es la primera (y única) SecAction .

@rx test es un operador ModSecurity y su argumento, que verifica la colección ARGS_NAMES . Esta colección contiene todos los argumentos de la solicitud. La regla 111002 verifica todos los nombres de los argumentos y, si hay alguna variable con un nombre como test (coincidencias de expresiones regulares), cambia la variable TX.

La regla 111003 comprueba la variable TX y, si es 1, desactiva el motor auditLog para la transacción actual . Eso es todo.

Tenga en cuenta que el operador @rx entre mayúsculas y minúsculas , por eso está ahí la t:lowercase .

También tenga en cuenta que los dos SecRule ejecutaron en phase:2 . Si desea verificar el parámetro GET, debe mover esta regla a la phase:1 . Si desea verificar todas las variables posibles, debe duplicar esta regla: una para la phase:1 y la otra para la phase:2 , ¡con una identificación única!

Si desea desactivar auditLogEngine con un parámetro QUERY_STRING, p. http://example.com/form.cgi?test=1 , entonces la solución es más simple, pero cualquiera puede apagar de esta manera:

 SecRule REQUEST_URI "@endsWith test=1" \ "id:111001,\ phase:1,\ pass,\ nolog,\ t:lowercase,\ ctl:auditLogEngine=Off"
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!