Pregunta
¿Cómo se utilizan expresiones regulares (regex) con grep para buscar registros?
Entorno
Dispositivo de seguridad web de Cisco
Dispositivo de seguridad Cisco Email Security
Dispositivo de administración de seguridad de Cisco
Solución
Las expresiones regulares (regex) pueden ser una potente herramienta cuando se utiliza con el comando "grep" para buscar en los registros disponibles en el dispositivo, como registros de acceso, registros de proxy y otros. Podemos buscar los registros en función del sitio web, o de cualquier parte de la URL, o nombres de usuario, por nombrar algunos, cuando se utiliza el comando CLI "grep".
A continuación se muestran algunos escenarios comunes en los que puede utilizar regex con grep para ayudar con la resolución de problemas.
Escenario 1: Búsqueda de un sitio web concreto en los registros de acceso
El escenario más común es intentar encontrar solicitudes que se realizan a un sitio web en los registros de acceso de Cisco Web Security Appliance (WSA).
Por ejemplo:
Conéctese al dispositivo mediante SSH. Una vez que tenga el mensaje, podemos escribir el comando "grep" para enumerar los registros disponibles.
CLI> grep |
Introduzca el número del registro que desea "grep". []> 1 (Elija el nº para los registros de acceso aquí) |
Introduzca la expresión regular en "grep". []> sitio web\.com |
Escenario 2: Intento de encontrar una extensión de archivo determinada o un dominio de nivel superior
Podemos utilizar el comando "grep" para encontrar una extensión de archivo determinada (.doc, .pptx) en una dirección URL o un dominio de nivel superior (.com, .org).
Por ejemplo:
Para encontrar todas las URL que terminan con .crl, podríamos utilizar el siguiente regex: \.crl$
Para buscar todas las URL que contienen la extensión de archivo .pptx, podríamos utilizar el siguiente regex: \.pptx
Escenario 3: Intento de encontrar un bloque determinado para un sitio web
Cuando buscamos un sitio web determinado, es posible que también estemos buscando una respuesta HTTP determinada.
Por ejemplo:
Si queríamos buscar todos los mensajes TCP_DENIED/403 para domain.com, podríamos utilizar el siguiente regex: tcp_denied/403.*domain\.com
Escenario 4: Búsqueda de un nombre de equipo en los registros de acceso
Al utilizar el esquema de autenticación NTLMSSP, es posible que se encuentre una instancia en la que un agente de usuario (Microsoft NCSI es el más común) enviará incorrectamente las credenciales del equipo en lugar de las credenciales del usuario al autenticarse. Para rastrear la URL/User Agent que lo causa, podemos usar regex con "grep" para aislar la solicitud realizada cuando se produjo la autenticación.
Si no tenemos el nombre de la máquina que se utilizó, podemos usar "grep" y buscar todos los nombres de máquinas que se usaron como nombres de usuario al autenticar usando el siguiente regex: \$@
Una vez que tenemos la línea donde ocurre esto, podemos "grep" para el nombre específico de la máquina que se usó usando el siguiente regex: nombre de máquina\$
La primera entrada que aparece debe ser la solicitud que se realizó cuando el usuario se autenticó con el nombre del equipo en lugar del nombre de usuario.
Escenario 5: Búsqueda de un Período de Tiempo Específico en los Registros de Acceso
De forma predeterminada, las suscripciones a registros de acceso no incluirán el campo que muestra la fecha/hora legible por personas. Si queremos verificar los registros de acceso durante un período de tiempo determinado, podemos seguir los pasos siguientes:
Busque la marca de tiempo UNIX desde un sitio como http://www.onlineconversion.com/unix_time.htm. Una vez que tenga la marca de tiempo, puede buscar una hora específica en los registros de acceso.
Por ejemplo:
Una marca de tiempo Unix de 1325419200 es equivalente a 01/01/2012 12:00:00.
Podemos usar la siguiente entrada regex para buscar los registros de acceso alrededor de las 12:00 del 1 de enero 10 de 2012: 13254192
Escenario 6: Búsqueda de mensajes críticos o de advertencia
Podemos buscar mensajes críticos o de advertencia en cualquier registro disponible, como registros de proxy o registros del sistema, mediante expresiones regulares.
Por ejemplo:
Para buscar mensajes de advertencia en los registros de proxy, podemos introducir el siguiente regex:
- CLI> grep
- Introduzca el número del registro que desea "grep".
[]> 17 (Elija el nº para los registros de proxy aquí)
- Introduzca la expresión regular en "grep".
[]> advertencia
Otros enlaces útiles:
Expresiones regulares - Guía del usuario