Domanda

Sto usando Mod_Security 2.6.3 e vorrei poter eseguire uno script di shell in base a un livello di seguinza della regola. Sto usando il set di regole di base (CRS), che imposta il livello di gravità su 2 (per "critico") quando viene rilevato un attacco.

Vorrei eseguire il mio script ogni volta che la gravità è abbastanza alta.

Ho provato a usare il SecDefaultAction impostazione, come:

SecDefaultAction "phase:2,log,deny,status:403,exec:/path/to/my/script"

Ma poiché l'azione "Exec" è "non disturbante", viene sempre eseguita, sia che una regola critica o una regola non critica sia trigretta.

Potrei passare attraverso ogni critico SecRule E aggiungi "Exec" accanto ad esso, ma sarebbe noioso (e ripetitivo e brutto).

Pensavo di poter fare qualcosa di simile:

SecRule ENV:SEVERITY "@lt 4" "exec:/path/to/my/script"

Ma in qualche modo non viene mai eseguito, probabilmente perché le regole critiche hanno un blocco o negano un'affermazione che interrompe l'elaborazione delle regole (da quando considerata dirompente).

Ho anche provato a utilizzare la funzione CRS Anomaly Score, in questo modo:

SecRule TX:ANOMALY_SCORE "@ge 4" "exec:/path/to/my/script"

Ma non viene ancora elaborato. Qualche idea su come potrei farlo?

È stato utile?

Soluzione

Potresti usare il Più alto_severity variabile per testarlo, come ad esempio:

SecRule HIGHEST_SEVERITY "@le 5" "nolog,pass,exec:/path/to/your/script"

Notare la nolog,pass Parametri aggiuntivi che preserveranno il messaggio di registro originale dalla regola che ha modificato il livello di gravità.

Inoltre, ti suggerisco di posizionare questa condizione all'inizio del tuo file .conf (ad esempio subito dopo il tuo SecDefaultAction linea) per assicurarsi che venga incluso in tutti i contesti.

Un altro modo di farlo sarebbe quello di utilizzare un codice di stato di risposta HTTP personalizzato nella tua SecDefaultAction (ad esempio, 418 "Sono una teiera") e attivare la tua condizione in base a esso, nella fase di registrazione (una volta che l'azione predefinita è stata elaborato):

# On error, log then deny request with "418 I'm a teapot":
SecDefaultAction "phase:2,log,deny,status:418"

# On HTTP response status code 418, execute your script:
SecRule RESPONSE_STATUS "^418$" "phase:5,nolog,pass,exec:/path/to/your/script"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top