🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónCuantificadores, grupos y alternancia
4 tareas · 40 min · Principiante
Mismo martes en Curtiembres del Atrato, ahora el cortafuegos perimetral. Sus líneas llevan direcciones, puertos y números de bytes: partes que se repiten con longitud variable y partes que a veces faltan. Un patrón que describe eso necesita decir cuántas veces se repite algo, agrupar trozos para tratarlos como una sola pieza y elegir entre dos alternativas. Aprendes los cuantificadores, los paréntesis y la barra, y los pruebas contra dieciséis líneas reales del cortafuegos, incluida la que no trae puertos. Todo es lectura de registros ya escritos.
Objetivo de la sala
Mismo martes en Curtiembres del Atrato, ahora el cortafuegos perimetral. Sus líneas llevan direcciones, puertos y números de bytes: partes que se repiten con longitud variable y partes que a veces faltan. Un patrón que describe eso necesita decir cuántas veces se repite algo, agrupar trozos para tratarlos como una sola pieza y elegir entre dos alternativas. Aprendes los cuantificadores, los paréntesis y la barra, y los pruebas contra dieciséis líneas reales del cortafuegos, incluida la que no trae puertos. Todo es lectura de registros ya escritos.Un cuantificador va detrás de una pieza y dice cuántas veces puede aparecer.
| Cuantificador | Significa |
|---|---|
? |
cero o una vez: la pieza es opcional |
* |
cero o más veces |
+ |
una o más veces |
{3} |
exactamente tres veces |
{1,3} |
de una a tres veces |
Con esto se describe un octeto de una dirección IPv4: \d{1,3}, de uno a tres dígitos. Una dirección completa es un octeto, seguido de tres veces «punto y octeto». Para repetir un trozo de varias piezas hay que agruparlo con paréntesis: (\.\d{1,3}){3} repite el conjunto «punto y de uno a tres dígitos» tres veces. Así, \d{1,3}(\.\d{1,3}){3} casa 10.67.5.9 y casa 198.51.100.7.
Cuidado: el patrón describe la forma, no el valor. 999.999.999.999 también la tiene.
Responde para continuar
¿Qué casa exactamente el trozo `(\.\d{1,3}){3}`?
Ver pista de ayuda
Los paréntesis agrupan; el {3} de fuera cuenta cuántas veces se repite el grupo entero.
La barra | es una alternancia: lo de la izquierda o lo de la derecha. Dentro de unos paréntesis queda acotada, y lo que está fuera se aplica a las dos opciones. (DROP|REJECT) TCP casa «DROP TCP» y también «REJECT TCP».
El índice fw guarda el cortafuegos del martes 6 de abril. Unos bloqueos hacia el acceso por escritorio remoto y por SSH llaman la atención; para verlos se acotan los puertos con una alternancia entre paréntesis.
index=fw | regex _raw="dport=(22|3389) "
El espacio del final del patrón es parte de él: obliga a que el número de puerto termine ahí.
Responde para continuar
Escribe la dirección de origen que aparece en todas las líneas hacia los puertos 22 y 3389.
Ver pista de ayuda
Ejecuta `index=fw | regex _raw="dport=(22|3389) "` y lee la columna src de las cuatro líneas.
Un patrón escrito para la línea típica falla en silencio con la rara. Este patrón exige todos los campos, con sus dos puertos:
index=fw | regex _raw="src=\S+ sport=\d+ dst=\S+ dport=\d+ bytes=\d+$"
\S+ es «una o más cosas que no son un espacio» y $ ancla el final. Casa quince líneas, y el cortafuegos escribió dieciséis. Para ver la que se queda fuera, cambia = por != en el comando regex: así deja justo las líneas que no casan. La cura está en el ? aplicado a un grupo: (sport=\d+ )? hace opcional el campo entero.
Responde para continuar
Escribe el protocolo de la línea que el patrón con todos los campos obligatorios deja fuera.
Ver pista de ayuda
Ejecuta `index=fw | regex _raw!="src=\S+ sport=\d+ dst=\S+ dport=\d+ bytes=\d+$"` y lee el protocolo de la única línea que sale.
Dónde se pone la barra importa. DROP|REJECT TCP src=10\.67\.20\.\d+ no dice «DROP o REJECT, y luego TCP y el origen». Dice «DROP», o bien «REJECT TCP src=10.67.20.NN»: la barra parte el patrón completo. Con paréntesis, (DROP|REJECT) TCP src=10\.67\.20\.\d+ limita la alternancia a la acción.
Ejecuta las dos en el SIEM y compara cuántas líneas devuelve cada una.
Responde para continuar
Quieres los paquetes TCP bloqueados o rechazados que vienen de la red de puestos 10.67.20. ¿Qué patrón escribes?
Ver pista de ayuda
Ejecuta `index=fw | regex _raw="DROP|REJECT TCP src=10\.67\.20\.\d+"` y `index=fw | regex _raw="(DROP|REJECT) TCP src=10\.67\.20\.\d+"` y compara las filas.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.