Conteúdo
Esta seção mostra todas as configurações disponíveis para o conjunto de regras atual do WAF organizadas em três guias, Global, Regras, e Fazendas. Lembre-se de que as alterações nesta seção devem ser aplicadas clicando no botão ENVIE botão.
Conjunto de regras do WAF de configurações globais
Essa configuração gerencia o comportamento de todas as regras contidas no conjunto.
Nome: deve ser autoexplicado para ser facilmente encontrado e reconhecível. O valor deste campo é configurado quando o conjunto é criado e não é modificável.
Verifique o corpo da solicitação: é um sinalizador para definir se o corpo das solicitações HTTP será analisado. Se esse sinalizador estiver desativado, o corpo será ignorado e as correspondências de regra com os parâmetros do corpo da solicitação não serão processados.
Solicitar Limite do Corpo: é o número máximo de bytes do corpo da solicitação salvo para inspecionar a solicitação do corpo. Se este parâmetro tiver o valor 0, o WAF salvará o tamanho do tamanho do conteúdo completamente. Recomenda-se definir qualquer valor limite.
Verifique o corpo da solicitação: é um sinalizador para definir se o corpo da resposta HTTP será analisado. Se esse sinalizador estiver desativado, o corpo será ignorado e as correspondências de regras nos parâmetros do corpo de resposta não serão processadas. A resposta maior que 524288 (512KB) será ignorada.
Ação padrão: Esta caixa de seleção é usada como resolução padrão quando nenhuma resolução é especificada em uma regra e todas as correspondências da regra são bem-sucedidas. As ações possíveis são:
- Permitir. Nenhuma outra regra será avaliada (para a transação HTTP atual) se uma regra com essa ação corresponder.
- Passar. O WAF continuará avaliando a próxima regra, sem cortar a transação HTTP.
- Denegar. Conclua a transação HTTP atual. Não avalie mais regras. Se a regra corresponder na fase 1 ou 2 (analisando a solicitação), a solicitação não será entregue ao back-end. Se a regra corresponder na fase 3 ou 4 (analisando a resposta), a resposta não será entregue ao cliente.
- Redirecionar. A transação HTTP será interrompida e um redirecionamento HTTP será enviado ao cliente.
URL de redirecionamento: É a URL enviada ao cliente quando uma regra corresponde e tem a resolução de redirecionamento configurada.
Fase padrão: Esta caixa de seleção é usada como a fase padrão quando nenhuma fase é especificada em uma regra. Uma fase é um passo HTTP onde é possível ligar uma regra WAF. As fases definidas são:
- Cabeçalhos de solicitação são recebidos. A regra será executada quando todos os cabeçalhos de solicitação do cliente forem lidos pelo balanceador de carga.
- O corpo da solicitação é recebido. A regra será executada quando o corpo completo da solicitação do cliente estiver em buffer no balanceador de carga.
- Leitores de resposta são recebidos. A regra será executada quando todos os cabeçalhos de resposta do servidor forem lidos pelo balanceador de carga.
- Corpo de resposta é recebido. A regra será executada quando o corpo da resposta completa do servidor for lido pelo balanceador de carga.
- Antes do que logar. A regra é executada quando o processo do WAF conclui a tarefa de registro.
Log padrão: É uma ação padrão de log. Esse valor é usado se nenhuma ação sobre logs for especificada nas configurações da regra.
Apenas log: Se esta caixa de seleção estiver ativada, o parâmetro de resolução das regras no conjunto nunca será executado. Este modo de trabalho só está disponível quando o conjunto está em execução.
Desativar Regras
Essas tabelas permitem desabilitar regras do conjunto sem modificá-las.
Ativar regras. É a lista de regras ativadas atualmente no conjunto. As regras são identificadas por seus ID da regra ea sua descrição parâmetros.
Ativar regras. É a lista de regras atualmente desativadas no conjunto.
Lista de Regras do WAF
O Regras seção permite criar e modificar regras WAF que detectam e protegem contra ataques HTTP.
Essas regras são diretivas que são avaliadas seqüencialmente, na mesma ordem mostrada nessa tela. Se for necessário ordenar as regras, ative o botão tipo e arraste e solte na posição solicitada.
Os parâmetros possíveis das regras são:
IDENTIDADE: É um identificador para identificar a regra dentro do conjunto de regras. Este identificador corresponde à posição da regra no conjunto.
ID da regra: É um identificador exclusivo da regra. Não é possível vincular a um farm ao conjunto waf que contenha duas regras com o mesmo ID de regra.
Descrição: É uma mensagem descritiva para identificar a regra. Esta mensagem será registrada em uma partida bem sucedida.
Registro: Se este parâmetro estiver habilitado, a regra será registrada quando a primeira condição de correspondência for alcançada.
Estágio: A fase representa a etapa da solicitação HTTP em que uma regra será executada. As fases possíveis são:
- Cabeçalhos de solicitação são recebidos. A regra será executada quando todos os cabeçalhos de solicitação do cliente forem lidos pelo balanceador de carga.
- O corpo da solicitação é recebido. A regra será executada quando o corpo completo da solicitação do cliente estiver em buffer no balanceador de carga.
- Leitores de resposta são recebidos. A regra será executada quando todos os cabeçalhos de resposta do servidor forem lidos pelo balanceador de carga.
- Corpo de resposta é recebido. A regra será executada quando o corpo da resposta completa do servidor for lido pelo balanceador de carga.
- Antes do que logar. A regra é executada quando o processo do WAF conclui a tarefa de registro.
URL de redirecionamento: É a URL em que o cliente será redirecionado caso a regra execute um redirecionamento. Este parâmetro aparecerá quando um redirecionamento for escolhido no campo de resolução.
Resolução: Esta caixa de seleção é a ação escolhida para executar se todas as condições dos jogos forem alcançadas.
- Permitir. Nenhuma outra regra será avaliada (para a transação HTTP atual) se uma regra com essa ação corresponder.
- Passar. O WAF continuará avaliando a próxima regra, sem cortar a transação HTTP.
- Denegar. Conclua a transação HTTP atual. Não avalie mais regras. Se a regra corresponder na fase 1 ou 2 (analisando a solicitação), a solicitação não será entregue ao back-end. Se a regra corresponder na fase 3 ou 4 (analisando a resposta), a resposta não será entregue ao cliente.
- Redirecionar. A transação HTTP será interrompida e um redirecionamento HTTP será enviado ao cliente.
Pular: Se todas as correspondências forem atingidas, a regra ignorará o número de regras especificado neste campo.
Pular depois: Se todas as correspondências forem obtidas, a regra irá pular para outra posição de firewall. A regra pode saltar para uma 'marca' ou para outro ID de regra. O ID da regra é executado após um salto, estará na mesma fase que a regra atual.
Execução: É o caminho para um script LUA. O script precisa ser carregado anteriormente no balanceador de carga. Será executado quando a primeira condição de jogo for alcançada.
Editando uma regra do WAF em bruto
Se o formulário de regra não for suficiente para parametrizar a regra de WAF e o administrador estiver familiarizado com a sintaxe SecLang, é possível criar regras ou lotes de regras através da opção de edição. Este campo aceita qualquer diretiva se a diretiva e o parâmetro forem suportados pela sintaxe SecLang. o SecLang Parâmetros que não são expressos no formulário, eles não serão mostrados nele, mas serão mostrados no formulário de edição e processados no tempo de execução.
Criando uma regra do WAF
Quando uma nova regra é adicionada, ela será adicionada ao acréscimo das outras regras dos conjuntos. Para criar uma nova regra, existem três maneiras de criar uma nova regra.
Marca: Define uma marca de firewall. Essas marcas são úteis para pular uma vez que uma condição de correspondência é alcançada. O parâmetro esperado é o nome para identificar a marca.
Ação: Isso criará uma regra básica usando um formulário. Os parâmetros do formulário são os mesmos explicados no Lista de Regras do WAF seção. Se a execução da regra deve ser condicional, clique no ADICIONAR CONDIÇÃO botão para definir as condições de execução.
Personalizadas: Este formulário aceita regras (e um lote de regras) da sintaxe SecLang. Para mais informações sobre a sintaxe SecLang, visite o site documentação do projeto libmodsecurity.
Lista de condições
Esta tabela mostra uma lista de condições que o pacote analisado por HTTP deve corresponder à regra que será aplicada. Todas essas correspondências serão executadas na fase definida na regra. As correspondências serão verificadas sequencialmente e a regra será aplicada se todas forem realizadas com sucesso.
Para avaliar a correspondência, o WAF executará uma operação (operador de parâmetros e operação) contra uma lista de variáveis. Se algumas variáveis da lista obedecerem à operação, a correspondência será considerada bem-sucedida. Por exemplo, na imagem a seguir, o cabeçalho IMAGES é procurado na lista de cabeçalhos de solicitação enviada pelo cliente. Primeiro, ele decodifica em 64 bases cada cabeçalho e, em seguida, converte os cabeçalhos em caracteres minúsculos. Quando a transformação sobre as variáveis é concluída, uma expressão regular é aplicada, procurando a string “imagens” na lista de variáveis transformadas. o multi mach A opção tentará uma correspondência para cada operação de transformação (após a decodificação 64 de base e após a conversão de maiúsculas e minúsculas).
Criando Condições
A partida cria uma condição que precisa ser obtida para executar a regra do WAF. Para avaliar a correspondência, o WAF executará uma operação (operador de parâmetros e operação) em relação a uma lista de variáveis. Se existir alguma correspondência entre a operação e as variáveis da lista, a correspondência é considerada bem-sucedida. Por exemplo, para procurar host local (127.0.0.1) Na lista de cabeçalhos de solicitação e no campo HTTP do host virtual, ele pode ser avaliado com a seguinte configuração.
O parâmetro de configuração para definir em uma condição é:
Variáveis: É contra qual parte da transação HTTP a regra tentará a correspondência. Os valores possíveis estão neste mesa. Várias variáveis podem ser adicionadas, a correspondência será considerada válida se algumas delas coincidirem. Um menu de criação irá aparecer muito mais é clicado. Informações sobre a configuração da variável podem ser encontradas no Criando variáveis seção.
Transformações: A transformação é uma lista de modificações para aplicar às variáveis antes do que aplicá-las ao operador e à operação. Transformações são aplicadas sequencialmente, na mesma ordem mostrada no campo, e é possível tentar uma correspondência para cada transformação aplicada usando a opção multimach. A transformação não modifica nenhuma informação da transação HTTP, ela é salva em contextos de temporalidade e removida assim que a operação é concluída. Aqui, há uma lista da transformação. Este parâmetro é útil para remover técnicas anti-evitar ou para remover dados de codificação.
Operador: É como a regra tenta a partida. Este parâmetro é usado combinado com operação. Aqui, há uma lista de operadores.
Operativo: É o que as regras tentam no jogo. O parâmetro é usado combinado com o operador. O tipo de valor esperado deve estar de acordo com o operador.
Multi-Match: Este parâmetro é usado quando mais de uma transformação é configurada. A regra tentará uma correspondência das variáveis, o operador e o funcionamento de cada valor de transformações. Os valores possíveis são: true, permite multi-match; ou false desativa o recurso de várias correspondências.
Não combina: Se esta caixa de seleção estiver habilitada, o resultado da partida será negado, convirgindo verdadeiro quando o resultado será falso ou convirgindo falso quando o resultado será verdadeiro.
Criando variáveis
As variáveis são um parâmetro obrigatório em uma condição de correspondência, ele seleciona a parte da solicitação / resposta HTTP onde procurar as informações.
Variáveis: Este parâmetro especifica o campo do pedido / resposta HTTP da informação (hora, servidor…) da transação onde se procura a informação.
Argumento da variável: Quando uma variável é selecionada, às vezes é necessário especificar um elemento dela. Por exemplo, na imagem é mostrado como o cabeçalho da solicitação hospedeiro está selecionado marcado.
Contar elementos de variáveis: Esta caixa de seleção conta o número de elementos na variável. Esse recurso é útil quando a variável é uma lista.
Ignore esta variável para o jogo: Se esta caixa de seleção estiver ativada, a variável não será verificada na correspondência. Esse recurso é útil quando uma variável que contém uma lista de valores será verificada, mas é necessário excluir um deles.
Tabela de Variáveis
Variável | Descrição |
---|---|
ARGS | É uma coleção com os valores de argumentos em uma solicitação. |
ARGS_JSON | É uma coleção com os valores de argumentos em uma solicitação JSON. Esta variável estará disponível no caso de o WAF analisar os argumentos JSON, para isso, o conjunto de regras REQUEST-901-INITIALIZATION deve ser ativado. |
ARGS_COMBINED_SIZE | tamanho total dos parâmetros da solicitação. Os arquivos são excluídos. |
ARGS_NAMES | É uma coleção com os nomes dos argumentos em uma solicitação. |
ARQUIVOS | Ele contém os nomes dos arquivos no arquivo do usuário. Somente quando os dados são multipartes / dados de formulário. |
FILES_COMBINED_SIZE | É o tamanho total dos arquivos em uma solicitação. Somente quando os dados são multipartes / dados de formulário. |
FILES_NAMES | É uma lista de nomes de arquivos usados para carregar os arquivos. Somente quando os dados são multipartes / dados de formulário. |
FILES_SIZES | Ele contém uma lista de tamanhos de arquivos individuais. Somente quando os dados são multipartes / dados de formulário. |
REQBODY_ERROR | Essa variável é 1 se o formato do corpo da solicitação não estiver correto para um JSON ou XML, caso contrário, ele terá o valor 0. |
REQUEST_BODY | É o pedido de corpo bruto. Se a solicitação não tiver o cabeçalho "application / x-www-form-urlencoded", será necessário usar "ctl: forceRequestBodyVariable" na fase REQUEST_HEADER. |
REQUEST_BODY_LENGTH | É o número de bytes do corpo da solicitação. |
REQUEST_COOKIES | É uma lista com todos os valores de cookies de solicitação. |
REQUEST_COOKIES_NAMES | É uma lista com todos os nomes de cookies de solicitação. |
REQUEST_HEADERS | Essa variável tem todos os cabeçalhos de solicitação. |
REQUEST_HEADERS_NAMES | Essa variável possui uma lista com os nomes dos cabeçalhos da solicitação. |
REQUEST_METHOD | É o método de solicitação. |
REQUEST_PROTOCOL | Essa variável contém o protocolo de versão HTTP da solicitação. |
REQUEST_URI | É o caminho da solicitação de URI. O host virtual é excluído. |
PATH_INFO | É a informação anterior ao caminho do URI. |
FULL_REQUEST | É o pedido completo. |
FULL_REQUEST_LENGTH | É o número de bytes que a solicitação completa pode ter. |
RESPONSE_BODY | É a resposta do corpo cru. |
RESPONSE_CONTENT_LENGTH | É o número de bytes do corpo da resposta. |
RESPONSE_HEADERS | Esta variável tem todos os cabeçalhos de resposta. |
RESPONSE_HEADERS_NAMES | Essa variável possui uma lista com os nomes dos cabeçalhos de resposta. |
RESPONSE_PROTOCOL | Esta variável contém o protocolo da versão HTTP de resposta. |
RESPONSE_STATUS | É o código HTTP de resposta. |
REMOTE_ADDR | É o endereço IP do cliente. |
REMOTE_PORT | É a porta em que o cliente inicializa a conexão. |
REMOTE_USER | É o nome do usuário autenticado. |
TIME | É a hora do servidor. O formato é horas: minutos: segundos. |
DURAÇÃO | É o número de milissegundos desde o início da transação atual. |
MULTIPART_FILENAME | É o nome do arquivo de campo em uma solicitação multipartes. |
MULTIPART_NAME | É o nome do campo em uma solicitação multipartes. |
MATCHED_VAR | É o valor correspondente na última operação de correspondência. Esse valor não precisa da opção de captura, mas é substituído em cada operação de correspondência. |
MATCHED_VARS | É uma lista de todos os valores correspondentes. |
SERVER_ADDR | É o endereço IP do servidor. |
SERVER_NAME | É o host virtual, ele recebe do URI da solicitação. |
ENV | São as variáveis de ambiente do WAF. |
TX | É uma coleção de variáveis para a transação atual. Essas variáveis serão removidas quando a transação terminar. As variáveis TX: 0-TX: 9 salva os valores capturados com os operadores strRegex ou strPhrases. |
Tabela de Operadores
Os operadores podem ter diferentes contextos. Este contexto é indicado por um prefixo, como int para inteiro, IP para operações IP, str para strings ou validar para validar dados.
Variável | Descrição |
---|---|
strBegins | A regra corresponderá se qualquer uma das variáveis começar com o valor de operação. |
strContains | A regra corresponderá se alguma das variáveis contiver o valor de operação. |
strContainsWord | A regra corresponderá se alguma das variáveis contiver a palavra do valor de operação. |
strEnds | A regra corresponderá se qualquer uma das variáveis terminar com o valor de operação. |
strWithin | A regra corresponderá se qualquer uma das variáveis começar com o valor de operação. |
strMatch | A regra corresponderá se qualquer uma das variáveis corresponder ao valor de operação. Essa operação pode ser uma lista de strings divididas pelo caractere | |
strEq | A regra corresponderá se qualquer uma das variáveis for idêntica ao valor de operação. |
strRegex | A regra corresponderá se qualquer uma das variáveis corresponder à expressão regular usada na operação. |
strPhrases | A regra corresponderá se qualquer uma das variáveis corresponder em qualquer um dos valores da lista em operação. |
strPhrasesFromFile | É o mesmo que o operador strPhrases mas o operacional é um arquivo onde é definida uma lista de frases. |
intEQ | A regra corresponderá se alguma das variáveis for igual ao número usado na operação. |
intGE | A regra corresponderá se qualquer uma das variáveis for maior ou igual ao número usado na operação. |
intGT | A regra corresponderá se alguma das variáveis for maior que o número usado na operação. |
intLE | A regra corresponderá se qualquer uma das variáveis for menor ou igual ao número usado na operação. |
intLT | A regra corresponderá se alguma das variáveis for menor que o número usado na operação. |
detectSQLi | Aplica a detecção de injeção SQL à lista de variáveis. Este operador não espera nenhum funcionamento. |
detetarXSS | Aplica a detecção de injeção de XSS à lista de variáveis. Este operador não espera nenhum funcionamento. |
ipMatch | Tente combinar os segmentos de rede ou IP da operação com a lista de variáveis. |
ipMatchFromFile | É o mesmo que o operador ipMatch, mas isso tenta a correspondência das variáveis em um arquivo com uma lista de IPs e segmentos de rede. |
validateByteRange | Ele verifica se o número de bytes das variáveis está em um dos valores operacionais. Um exemplo de operação é “10, 13, 32-126”. |
validateUrlEncoding | Valida dados codificados. Esse operador deve ser usado apenas para dados que não codificam dados comumente ou para dados codificados várias vezes. |
validateUtf8Encoding | Valide que as variáveis são UTF-8. Este operador não espera nenhum funcionamento. |
verifyCreditCard | Ele verifica se as variáveis são um número de cartão de crédito. Esse parâmetro aceita uma expressão regular como operacional, se corresponder a ele, aplica o cartão de crédito verificado. |
verifySSN | Ele verifica se as variáveis são um número do seguro social dos EUA. Este parâmetro aceita uma expressão regular como operacional, se corresponder, aplica a verificação do SSN. |
correspondência | Ele retorna verdadeiro sempre, forçando um jogo. |
matchNever | Ele retorna sempre falso, forçando um não-jogo. |
Tabela de Transformação
Transformação | Descrição |
---|---|
base64Decode | Decodifica uma string codificada em Base64. |
base64DecodeExt | Decodifica uma string codificada em Base64, ignorando caracteres inválidos. |
sqlHexDecode | Decodifica dados hexadecimais SQL. |
base64Encode | Codifica usando a codificação Base64. |
cmdLine | Evita o problema relacionado à linha de comando de escape. |
compressWhitespace | Converte qualquer um dos caracteres de espaço em branco (0x20, \ f, \ t, \ r, \ v, 0xa0) em espaços (ASCII 0x20), compactando vários caracteres de espaço consecutivos em um. |
cssDecode | Decodifica caracteres codificados usando as regras de escape CSS 2.x. Essa função usa apenas até dois bytes no processo de decodificação, o que significa que é útil descobrir caracteres ASCII codificados usando a codificação CSS (que normalmente não seria codificada) ou evitar a evasão, que é uma combinação de uma barra invertida e não caracteres hexadecimais (por exemplo, ja \ vascript é equivalente a javascript). |
escapeSeqDecode | Decodifica sequências de escape ANSI C: \ a, \ b, \ f, \ n, \ r, \ t, \ v, \\, \ ?, \ ', \ ”, \ xHH (hexadecimal), \ 0OOO (octal) . Codificações inválidas são deixadas na saída. |
hexDecode | Decodifica uma string que foi codificada usando o mesmo algoritmo usado em hexEncode (veja a entrada seguinte). |
hexEncode | Codifica cadeia (possivelmente contendo caracteres binários) substituindo cada byte de entrada por dois caracteres hexadecimais. Por exemplo, xyz é codificado como 78797a. |
htmlEntityDecode | Decodifica os caracteres codificados como entidades HTML. |
jsDecode | Decodifica seqüências de escape do JavaScript. |
comprimento | Procura o comprimento da string de entrada em bytes, colocando-a (como string) na saída. |
minúsculas | Converte todos os caracteres em minúsculas usando a localidade C atual. |
md5 | Calcula um hash MD5 dos dados na entrada. O hash calculado está em formato binário bruto e pode precisar ser codificado no texto a ser impresso (ou registrado). Funções de hash são comumente usadas em combinação com hexEncode. |
Nenhum | Não é uma função de transformação real, mas uma instrução para remover funções de transformação anteriores associadas à regra atual. |
normalizePath | Remove várias barras, auto-referências de diretório e referências anteriores de diretório (exceto quando no início da entrada) da cadeia de entrada. |
normalizePathWin | O mesmo que normalizePath, mas primeiro converte os caracteres de barra invertida em barras. |
parityEven7bit | Calcula a paridade par dos dados 7-bit, substituindo o bit 8 de cada byte alvo pelo bit de paridade calculado. |
parityOdd7bit | Calcula a paridade ímpar de dados 7-bit, substituindo o 8th bit de cada byte de destino pelo bit de paridade calculado. |
parityZero7bit | Calcula a paridade zero de dados 7-bit, substituindo o bit 8 de cada byte de destino por um bit de paridade zero, que permite a inspeção de dados 7-bit de paridade par / ímpar como dados ASCII7. |
removeNulls | Remove todos os bytes NUL da entrada. |
removeWhitespace | Remove todos os caracteres de espaço em branco da entrada. |
substituirComentários | Substitui cada ocorrência de um comentário no estilo C (/ *… * /) por um único espaço (várias ocorrências consecutivas das quais não serão compactadas). Comentários não terminados também serão substituídos por espaço (ASCII 0x20). No entanto, uma rescisão autônoma de um comentário (* /) não será acionada. |
removerCommentsChar | Remove caracteres de comentários comuns (/ *, * /, -, #). |
substituirNulls | Substitui os bytes NUL na entrada por caracteres de espaço (ASCII 0x20). |
urlDecode | Decodifica uma string de entrada codificada por URL. Codificações inválidas (ou seja, aquelas que usam caracteres não hexadecimais, ou aquelas que estão no final da cadeia e têm um ou dois bytes ausentes) não são convertidas, mas nenhum erro é gerado. |
maiúsculas | Converte todos os caracteres em maiúsculas usando a localidade C atual. |
urlDecodeUni | Como o urlDecode, mas com suporte para a codificação% u específica da Microsoft. |
urlEncode | Codifica a string de entrada usando a codificação de URL. |
utf8toUnicode | Converte todas as seqüências de caracteres UTF-8 em Unicode. Isso ajuda a normalizar a entrada, especialmente para idiomas não ingleses, minimizando falsos positivos e falsos negativos. |
sha1 | Calcula um hash SHA1 da string de entrada. O hash calculado está em formato binário bruto e pode precisar ser codificado no texto a ser impresso (ou registrado). Funções de hash são comumente usadas em combinação com hexEncode. |
trimLeft | Remove espaços em branco do lado esquerdo da string de entrada. |
trimRight | Remove espaços em branco do lado direito da string de entrada. |
aparar | Remove o espaço em branco dos lados esquerdo e direito da string de entrada. |
Configurações do Farms WAF
Esta seção permite atribuir o conjunto de regras WAF atual aos farms HTTP (s).
Nesta seção, será possível selecionar um ou mais de um farms (mantendo pressionado o botão shift do teclado) e atribuir o conjunto de regras do WAF a eles ou removê-los. Também é possível atribuir ou removê-lo de todos os farms disponíveis com os botões de seta dupla.