Pergunta
Como você usa expressões regulares (regex) com grep para pesquisar logs?
Ambiente
Cisco Web Security Appliance
Cisco Email Security Appliance
Cisco Security Management Appliance
Solução
As expressões regulares (regex) podem ser uma ferramenta poderosa quando usadas com o comando "grep" para pesquisar por logs disponíveis no dispositivo, como logs de acesso, logs de proxy e outros. Podemos pesquisar os logs com base no site, em qualquer parte da URL ou nos nomes de usuário, para nomear alguns, ao usar o comando CLI "grep".
Abaixo estão alguns cenários comuns em que você pode usar regex com grep para ajudar na solução de problemas.
Cenário 1: Localizando um site específico nos registros de acesso
O cenário mais comum é tentar localizar solicitações feitas a um site nos registros de acesso do Cisco Web Security Appliance (WSA).
Por exemplo:
Conecte-se ao dispositivo via SSH. Quando você tiver o prompt, poderemos digitar o comando "grep" para listar os registros disponíveis.
CLI> grep |
Digite o número do log que deseja "grep". []> 1 (Escolha o # para os registros de acesso aqui) |
Digite a expressão regular para "grep". []> site\.com |
Cenário 2: Tentando localizar uma extensão de arquivo específica ou um domínio de nível superior
Podemos usar o comando "grep" para encontrar uma extensão de arquivo específica (.doc, .pptx) em um URL ou um domínio de nível superior (.com, .org).
Por exemplo:
Para encontrar todos os URLs que terminam com o .crl, podemos usar o seguinte regex: \.crl$
Para encontrar todos os URLs que contêm a extensão de arquivo .pptx, podemos usar o seguinte regex: \.pptx
Cenário 3: Tentando encontrar um bloco específico para um site
Ao pesquisar um site específico, também podemos procurar uma resposta HTTP específica.
Por exemplo:
Se quiséssemos pesquisar todas as mensagens TCP_DENIED/403 para domain.com, poderíamos usar o seguinte regex: tcp_dended/403.*domínio\.com
Cenário 4 : Localizando um nome de máquina nos registros de acesso
Ao usar o esquema de autenticação NTLMSSP, podemos encontrar uma instância em que um Agente de Usuário (o Microsoft NCSI é o mais comum) enviará incorretamente credenciais da máquina em vez de credenciais de usuário ao autenticar. Para rastrear o URL/Agente de usuário que causa isso, podemos usar regex com "grep" para isolar a solicitação feita quando a autenticação ocorreu.
Se não tivermos o nome da máquina que foi usado, podemos usar "grep" e encontrar todos os nomes de máquina que foram usados como nomes de usuário ao autenticar usando o seguinte regex: \$@
Quando tivermos a linha onde isso ocorre, poderemos "limpar" o nome específico da máquina que foi usado usando o seguinte regex: nome do computador\$
A primeira entrada que aparece deve ser a solicitação feita quando o usuário autenticou com o nome da máquina em vez do nome do usuário.
Cenário 5 : Localizando um período específico nos registros de acesso
Por padrão, as assinaturas do log de acesso não incluirão o campo que mostra a data/hora legível por humanos. Se quisermos verificar os registros de acesso por um período específico, podemos seguir as etapas abaixo:
Procure o timestamp UNIX de um site como http://www.onlineconversion.com/unix_time.htm. Depois de ter o carimbo de data e hora, você pode procurar uma hora específica nos Logs de acesso.
Por exemplo:
Um timestamp Unix de 1325419200 é equivalente a 01/01/2012 12:00:00.
Podemos usar a seguinte entrada regex para pesquisar os registros de acesso por volta das 12:00 de 1 de janeiro de 2012: 13254192
Cenário 6 : Procurando mensagens críticas ou de aviso
Podemos pesquisar mensagens críticas ou de aviso em qualquer registro disponível, como logs de proxy ou de sistema, usando expressões regulares.
Por exemplo:
Para pesquisar mensagens de aviso nos logs de proxy, podemos inserir o seguinte regex:
- CLI> grep
- Digite o número do log que deseja "grep".
[]> 17 (Escolha o # para os logs de proxy aqui)
- Digite a expressão regular para "grep".
[]> aviso
Outros links úteis:
Expressões regulares - Guia do usuário