Tutorial de Búsqueda · Splunk Enterprise 10.2
Splunk Enterprise es una plataforma SIEM (Security Information and Event Management) que permite recopilar, indexar, buscar y visualizar grandes volúmenes de datos de máquina en tiempo real. En el contexto de la ciberseguridad, constituye una herramienta fundamental para la detección de amenazas, el análisis forense y el monitoreo continuo de infraestructuras tecnológicas.
Un SIEM centraliza logs de múltiples fuentes (servidores web, firewalls, sistemas operativos, aplicaciones) y permite correlacionar eventos para identificar patrones sospechosos que podrían indicar un incidente de seguridad. Splunk es uno de los SIEMs más utilizados en entornos SOC (Security Operations Center) a nivel mundial.
Este proyecto siguió el tutorial oficial de Splunk Enterprise 10.2 usando el dataset de la empresa ficticia Buttercup Games, una tienda de videojuegos en línea cuyos logs de acceso web y transacciones de venta sirven como entorno de práctica realista para aprender a operar la plataforma desde cero.
A diferencia del procedimiento estándar del tutorial, que recomienda instalar Splunk descargando el binario desde el sitio oficial, en este proyecto se instaló Splunk Enterprise directamente desde el AUR (Arch User Repository) usando yay, lo cual refleja las ventajas de las distribuciones basadas en Arch para entornos de seguridad y desarrollo.
El proceso comenzó con el registro de una cuenta gratuita en splunk.com usando el correo institucional [email protected]. Esta cuenta es necesaria para descargar los archivos del tutorial y acceder a la versión de prueba de Splunk Enterprise.
Desde el portal de Splunk se completó el formulario de registro. Una vez enviado, Splunk envió un correo de verificación al email institucional. Tras confirmar la cuenta se pudo acceder al portal del cliente donde aparece el nombre de usuario Steven Capellán y el email registrado.
En lugar de descargar el instalador manualmente, se usó yay — un helper de AUR para Arch Linux — que automatiza la descarga, compilación e instalación del paquete desde el Arch User Repository.
# Instalación de Splunk Enterprise desde el AUR $ yay -S splunk AUR Explicit (1): splunk-3:10.2.1.0-2 ==> ¿Paquetes a limpiar antes de compilar? ==> [N]inguno [A]Todos ... A ==> Creando el paquete: splunk 3:10.2.1.0-2 (mar 17 mar 2026 09:12:50) ==> Recibiendo las fuentes ... -> Descargando splunk-10.2.1-c892b66d163d-linux-amd64.tgz ... % Total: 1.62G Received: 49.49M Speed: 3.09M/s Time left: 8:14
Una vez instalado en /opt/splunk/, el primer arranque generó los certificados SSL autofirmados, validó directorios y levantó el servidor web en el puerto 8000.
Creating: /opt/splunk/var/spool/splunk Creating: /opt/splunk/var/lib/splunk/authDb New certs have been generated in '/opt/splunk/etc/auth'. Checking critical directories ... Done All preliminary checks passed. Starting splunk server daemon (splunkd) ... Certificate request self-signature ok subject=CN = Steven-Notebook, O = SplunkUser Waiting for web server at http://127.0.0.1:8000 ... Done The Splunk web interface is at http://Steven-Notebook:8000
Con Splunk corriendo, se accedió a la interfaz web en localhost:8000. El login inicial requiere el usuario admin y la contraseña configurada durante la instalación. El home de Splunk Enterprise 10.2.1 confirmó acceso exitoso bajo el usuario Steven Admin, con las apps: Search & Reporting, Audit Trail, Data Management, Splunk Secure Gateway y Upgrade Readiness App.
[email protected]. Verificación por email completada. Display name: Steven Capellán.tutorialdata.zip y Prices.csv.zip desde la documentación oficial de Splunk. Almacenados en TAREAS/Ciberinteligencia/1. PROYECTO FINAL/ (1.9 MiB cada uno).splunk-3:10.2.1.0-2 descargó 1.62 GB y se compiló localmente antes de instalarse en /opt/splunk/.admin. Home de Splunk Enterprise accesible y funcional con todas las apps instaladas.El tutorial usa datos de la tienda ficticia Buttercup Games. El dataset incluye registros de acceso web, logs de seguridad, datos de ventas y una lista de precios en CSV.
| Archivo | Contenido | Instrucción |
|---|---|---|
tutorialdata.zip | Logs de acceso web (www1-3), logs seguros (mailsv) y ventas (vendor_sales) | Descomprimido |
Prices.csv.zip | Catálogo de productos con productId, nombre y precio | Se usará más adelante |
Desde el home de Splunk se navegó a Settings → Add Data → Upload. El asistente tiene 4 pasos: Select Source → Input Settings → Review → Done.
tutorialdata.zip desde el explorador de archivos.Los 5 hosts del dataset: www1, www2, www3 (servidores web con access logs combinados con cookies), mailsv (servidor de correo con secure logs) y vendor_sales (logs de ventas). Este setup simula una infraestructura real de e-commerce.
El Search Processing Language (SPL) es el lenguaje de consulta nativo de Splunk. Permite recuperar eventos, filtrarlos, transformarlos y visualizarlos con una sintaxis de comandos encadenados mediante el operador pipe (|).
Desde el home se accedió a Search & Reporting. La interfaz muestra la barra SPL, el selector de tiempo, las pestañas Events/Patterns/Statistics/Visualization y el histograma temporal. El Search Assistant en modo Full sugiere comandos y términos en tiempo real.
Desde Preferences → Search Editor se habilitó el Advanced Editor con autoformateo, numeración de líneas y syntax highlighting. Se configuró el Search Assistant en modo Full y el Search Bar Theme en Dark.
* -- 109,864 eventos totales indexados
buttercupgames
-- 9,245 eventos · Time range: Last 2 days
"categoryid=sports" -- 793 eventos con la cadena exacta
buttercupgames (error OR fail* OR severe) -- 427 eventos · fail* incluye failed, failure, etc. (error OR fail* OR severe) OR (status=404 OR status=500 OR status=503) -- 36,055 eventos · errores de app + HTTP combinados
Splunk extrae campos automáticamente. En el panel izquierdo se muestran Selected Fields e Interesting Fields. Al hacer clic en un campo se ven sus valores más frecuentes y estadísticas.
sourcetype=access_* -- 39,532 eventos · Campos: action(5), categoryId(8), host(3), productId(16) -- Campo "action": addtocart 29.13% · purchase 29.09% · view 27.34% -- remove 7.33% · changequantity 7.11% sourcetype=access_* status=200 action=purchase -- 5,224 compras exitosas (HTTP 200) sourcetype=access_* status!=200 action=purchase -- 513 compras fallidas
sourcetype=access_* status=200 action=purchase | top categoryId -- STRATEGY 806(30.5%) · ARCADE 493(18.7%) · TEE 367(13.9%) -- ACCESSORIES 348(13.2%) · SIMULATION 246(9.3%) · SHOOTER 245(9.3%) · SPORTS 138(5.2%) | top limit=1 clientip -- Cliente VIP: 87.194.216.51 · 134 compras (2.57%)
Una sub-búsqueda es una búsqueda anidada entre corchetes cuyo resultado filtra la búsqueda principal. Técnica avanzada para correlacionar datos dinámicamente.
sourcetype=access_* status=200 action=purchase [search sourcetype=access_* status=200 action=purchase | top limit=1 clientip | table clientip] | stats count AS "Total Purchased", distinct_count(productId) AS "Total Products", values(productId) AS "Product IDs" by clientip | rename clientip AS "VIP Customer" -- 87.194.216.51 · 134 compras · 14 productos únicos
| Búsqueda | Eventos | Propósito |
|---|---|---|
* | 109,864 | Dataset completo |
buttercupgames | 9,245 | Filtro por dominio |
"categoryid=sports" | 793 | Frase exacta |
| error OR fail* OR severe | 427 | Errores de aplicación |
| status 404/500/503 | 36,055 | Errores HTTP + app |
| sourcetype=access_* | 39,532 | Todos los access logs |
| status=200 action=purchase | 5,224 | Compras exitosas |
| status!=200 action=purchase | 513 | Compras fallidas |
Los field lookups permiten enriquecer eventos con datos adicionales de archivos externos. El archivo Prices.csv contiene el nombre y precio de cada producto identificado por su productId. Sin el lookup, los eventos solo muestran el ID (ej: BS-AG-G09). Con el lookup activo, Splunk añade automáticamente productName y price.
Settings → Lookups → Lookup table files → New Lookup Table File. Se subió Prices.csv.zip, registrado como prices.csv bajo steven-admin en la app search. Visibilidad inicial: Private. Se cambió a Global.
Settings → Lookups → Lookup definitions → New Lookup Definition. Se creó prices_lookup mapeando productId del evento con el CSV, retornando product_name y price. Cambiado a Global.
Nombre: prices_lookup | Tipo: file | Archivo: prices.csv Campos: productId, product_name, price, sale_price, Code Owner: steven-admin | App: search | Sharing: Global
Settings → Lookups → Automatic lookups → New Automatic Lookup. Se creó autolookup_prices para que Splunk aplique el lookup automáticamente en búsquedas con sourcetype access_combined_wcookie. Cambiado a Global.
Nombre: autolookup_prices Lookup table: prices_lookup Apply to: sourcetype named access_combined_wcookie Input: productId = productId Output: product_name = productName · price = price Sharing: Global
sourcetype=access_* -- Nuevos campos visibles: price(9), productName(16) -- Ejemplo: productId=BS-AG-G09 → productName=Benign Space Debris · price=24.99
| Producto | productId | Precio |
|---|---|---|
| Benign Space Debris | BS-AG-G09 | $24.99 |
| Curling 2014 | CU-PG-G06 | $19.99 |
| Dream Crusher | DC-SG-G02 | $39.99 |
| Final Sequel | FS-SG-G03 | $24.99 |
| Fire Resistance Suit of Provolone | FI-AG-G08 | $3.99 |
| Holy Blade of Gouda | MB-AG-T01 | $5.99 |
| Manganiello Bros. | MB-AG-G07 | $39.99 |
| Mediocre Kingdoms | SC-MG-G10 | $24.99 |
| Pony Run | PZ-SG-G05 | $49.99 |
| SIM Cubicle | DB-SG-G01 | $19.99 |
| World of Cheese | WC-SH-G04 | $24.99 |
| World of Cheese Tee | WC-SH-T02 | $9.99 |
Splunk permite guardar búsquedas como reportes reutilizables con nombre, descripción y permisos. Se crearon 5 reportes principales que luego se incorporaron al dashboard.
Identifica dinámicamente al cliente más frecuente usando sub-búsqueda. Guardado con título "VIP Customer" y descripción "Buttercup Games most frequent shopper".
sourcetype=access_* status=200 action=purchase [search sourcetype=access_* status=200 action=purchase | top limit=1 clientip | table clientip] | stats count AS "Total Purchased", dc(productId) AS "Total Products", values(productName) AS "Product Names" BY clientip | rename clientip AS "VIP Customer" -- 87.194.216.51 · 134 compras · 14 productos
Gráfica de columnas mostrando métricas de vistas, carrito y compras por producto.
sourcetype=access_* status=200 | stats count AS views, count(eval(action="addtocart")) AS addtocart, count(eval(action="purchase")) AS purchases by productName | rename productName AS "Product Name", views AS "Views", addtocart AS "Adds to Cart", purchases AS "Purchases"
Overlay chart: columnas con métricas absolutas + líneas con tasas de conversión en eje Y secundario. Guardado como reporte independiente.
sourcetype=access_* status=200 | stats count AS views, count(eval(action="addtocart")) AS addtocart, count(eval(action="purchase")) AS purchases by productName | eval viewsToPurchases=(purchases/views)*100 | eval cartToPurchases=(purchases/addtocart)*100 | table productName views addtocart purchases viewsToPurchases cartToPurchases | rename productName AS "Product Name", views AS "Views", addtocart AS "Adds To Cart", purchases AS "Purchases"
Gráfica de líneas temporales con timechart mostrando evolución de compras por producto del 9 al 16 de marzo 2026.
sourcetype=access_* | timechart count(eval(action="purchase")) by productName usenull=f useother=f
Tabla con sparklines integradas — minigráficas de tendencia dentro de cada celda — por categoría de producto.
sourcetype=access_* status=200 action=purchase | chart sparkline(count) AS "Purchases Trend" count AS Total BY categoryId | rename categoryId AS "Category"
El punto culminante del proyecto fue la creación del dashboard interactivo "Buttercup Games - Purchases" que consolida los reportes más importantes en una sola vista operacional con Dark Theme y control de tiempo dinámico.
Desde Dashboards → Create New Dashboard se creó el dashboard con título "Buttercup Games - Purchases", descripción "Reports on Buttercup Games purchases data", tipo Classic y tema Dark. Se editó con el editor UI y se añadieron paneles desde reportes guardados.
Se añadió un Time input desde Edit → Add Input → Time, configurado con token BG_Purchases_Time_Range y valor predeterminado Previous week. Este control filtra todos los paneles simultáneamente.
Label: Time range | Token: BG_Purchases_Time_Range Default: Previous week | Type: Time | Theme: Dark
Dashboard disponible en localhost:8000/en-US/app/search/buttercup_games_-_purchases. Propietario: steven-admin. Última modificación: 18 de marzo de 2026 a las 8:44 PM. Tipo: Classic.
Documentación visual de cada etapa del tutorial organizada por partes. Haz clic en cualquier imagen para verla en tamaño completo. Usa las flechas o las teclas ← → para navegar.

































































La realización de este proyecto permitió experimentar de primera mano con Splunk Enterprise como plataforma SIEM, cubriendo el ciclo completo desde la instalación hasta dashboards operacionales.
yay -S splunk demostró que Splunk se integra perfectamente en distribuciones rolling-release. Para profesionales de seguridad que usan Linux como entorno principal, esta vía es más eficiente y mantenible que el instalador oficial.