Sintaxe:
SecRule $Variavel(is) “$Operador” “$Ações, $TFNS”
Exemplos de regra:
1- Criando regra para bloquear requisições que utilizam o Cookie quem contém as palavras alfa_canruncmd e alfacgiapi_mode
SecRule REQUEST_HEADERS:Cookie "@contains alfa_canruncmd" "chain,phase:1,id:'1001',deny,block,msg:'Dropando Requisições'"
SecRule REQUEST_HEADERS:Cookie "@contains alfacgiapi_mode" "t:none,ctl:ruleRemoveById=960015"
2- Regra referente a bloqueio de conexão para caso a tenha a string alfav4.1-tesla.php na URI
SecRule REQUEST_URI "alfav4.1-tesla.php" "phase:1,id:99017,deny,block,t:none,t:lowercase,t:urlDecode"
Variáveis
REQUEST_HEADER: Contém dados http request header
REQUEST_BODY: Contém dados http request body
RESPONSE_HEADER: Contém dados http response header
RESPONSE_BODY: Contém dados http response body
ARGS:Coleção de argumentos. É possível acessar apenar um único argumento ex: ARGS:foo
ARGS_NAMES: Similar a ARGS, mas contém apenas os nomes do argumentos
ARGS_GET: Similar a ARGS, mas contém apenas valores dos argumentos enviados via GET
ARGS_GET_NAMES: Similiar a ARGS, mas contém apenas os nomes do argumentos enviados via GET
ARGS_POST:Similar a ARGS, mas contém apenas valores dos argumentos enviados via POST
ARGS_POST_NAMES: Similiar a ARGS, mas contém apenas os nomes do argumentos enviados via POST
QUERY_STRING: Contém a query string
STREAM_INPUT_BODY: Similar a RESPONSE_BODY. Utilizado para operadores que transformam dados da transação ex @rsub
REMOTE_HOST: Contém o hostname remoto
REMOTE_ADDR: Contém o endereço IP do host remoto
TX: Coleção de variaveis geralmente utilizadas para armazenar dados durante uma determinada transação pelos operadores
Operadores
beginsWith: Detecta se os dados em analise começam com “string”
contains: Detecta se “string” está contida nos dados em análise
eq,gt,ge,lt,le: Operadores igual, maior que, maior igual, menor que, menor igual
geoLookup: Realiza geo lookup
rbl: Realiza inspeção em uma black list
gsbLookup: Realiza operação de lookup na base google safe browsing
rx: Similar a contains, mas permite utilização de uma regex
rsub <s/regex/string/[id]: Realiza operação de substituição de dados. Utilizando apenas com as variáveis STREAM_*
pm: Similar a contains, mas pode-se utilizar vários strings
pmf: Similar a pm, entretanto as strings não carregadas de um arquivo
streq: Similar a contains, mas a string e a totalidade dos dados em análise devem ser exatamente iguais
verifyCC: Verifica a presença de números de cartões de crédito
VerifyCPF: Verifica a presença de números de CPF
Ações
allow: Para o processamento das regras em caso de match e permite a transação
append: Adiciona um texto no fim do response body
auditlog: Indica que a regra deverá ser registrada no audit log
noauditlog: Indica que a regra não devrá ser registrada no audit log
capture: Alguns operadores quando utilizado com essa ação salvam os resultados da operação de string/regex match em variaveis tx
chain: Indica que a regra pertence a uma cadeia de regras. A última regra da cadeia não deve conter essa ação
ctl: Permite modificar algumas diretivas em tempo de transação
- AuditEngine
- AuditLogParts
- debugLogLevel
- RuleEngine
- ruleEngine
- ruleRemoveById
- ruleUpdateTargetById
deny: Para o processo das regras e intercepta a transação
id: Numero de identificação da regra
log: Indica que a regra deverá ser regitrada em audit e error log
nolog: Indica que a regra não deverá ser registrada em audit e error log
msg: Define a mensagem que será salva nos arquivos de log para a regra ou chain
pass: Continua a processar as regras mesmo em caso de match
prepend: Adiciona um texto no inicio do response body
redirect: Redireciona o usuário para outra URL qualquer
skip: Modifica o fluxo de execução do arquivo de regras para depois de N regras
skipafter: Modifica o fluxo de execução do arquivo de regras para depois de uma SecMarker
sanitizeMacthedBytes, sanitizeArgs,sanitizeRequestHeaders,sanitizeMatched: Permite sanitizar os dados que estão sendo registrados em log
TFNs (transformações)
base64Decode, base64Encode, base64DecodeEx: Funções para encode e decode de dados em base64
hexDecode, hexEncode: Funções para encode e decode de dados em hexadecimal
jsDecode: Função para decodificação de dados javascript em formato \uHHHH
Lowercase: Função utilizada para normalizar todos os dados para minúsculo.
Md5: Realiza operação de hash md5 para os dados da variável em questão
Sha1: Realiza operação de hash sha1 para os dados da variável em questão
urlDecodeUni: Função para decodificar dados em unicode.
removeNulls: Função para remoção de null bytes.
replaceComments: Substitui caracteres de comentário como /* */ por espaço (0x20).