Regeln und Alarme mit ElastAlert 2
Die Party beginnt, wie der andere gesagt hat… Ich werde Ihnen einige Dinge zeigen, von denen ich denke, dass sie Ihnen gefallen werden, um Ihre Protokolle zu nutzen und unser SIEM zu einem SOC weiterzuentwickeln, Sehr interessante Themen. Zuerst haben wir ElastAlert2, Dabei handelt es sich um ein Open-Source-Tool, das es uns ermöglicht, regelbasierte Warnungen mit Daten zu generieren, die in Elasticsearch gespeichert sind.
Si guardas, por ejemplo logs en Elasticsearch, bien sean logs de tu Directorio Activo, de Entra, de tu firewall, de tus servidores, puestos u otros cacharros… podremos realizar consultas de manera automatizada mediante una serie de reglas, para luego alertarnos si nos interesase de alguna situación (o ejecutar acciones). Brunnen ElastAlarm 2 ha venido para esto, para ayudarnos, podremos crear (o importar) tantas reglas como necesitemos que hagan las consultas que necesitemos.
En este documento veremos un ejemplo concreto, Ich weiß nicht, hay tantas posibilidades… vamos a intentar detectar cuando nuestro sistema está comprometido, detectando actividades sospechosas (o maliciosas), al final se trata de prevenir males mayores, bien sea alertándonos o generando acciones que mitiguen el escenario. Nun, das, en el ejemplo que nos toca, intentaremos detectar cuando alguien (Zum Beispiel) se ha logueado en un firewall FortiGate de manera correcta. Como es un primer documento haremos esto, detectarlo, y generar una alerta por Telegram. En otros documentos veremos muchas más cosicas que se pueden hacer.
Txapas an der Seite, Gestartet! Was brauchen wir? ¡Pues lo de siempre! paciencia y Docker! 🤣 Así que en una máquina con un Linux que tengamos para estos menesteres, y tras instalar Docker y Docker Compose, pues vamos a desplegar con él un contenedor, So einfach geht's, este contenedor, ElastAlert2, será el encargado de leer los ficheros de reglas que dejemos en una carpeta y hacer, lo que tenga que hacer 😅 .
git clone https://github.com/jertel/elastalert2.git cd elastalert2 mkdir config mkdir rules
Y creamos nuestro docker-compose.yml con algo como esto:
Version: '3.9' Dienstleistungen:
elastalert2:
Bild: 'jertel/elastalert2:neueste'
Volumes:
- './rules:/opt/elastalert/rules'
- './config/elastalert.yaml:/opt/elastalert/config.yaml' container_name: elastalert restart: Es sei denn, Netzwerke werden gestoppt:
red_elastalert2:
Netzwerke:
red_elastalert2:
Fahrer: Brücke
Und zuerst einmal, müssen wir auch die ElastAlert2-Konfigurationsdatei './config/elastalert.yaml' bearbeiten, wo wir den Elasticsearch-Server angeben, seinen Port, die Zugangsdaten… und da wir gerade dabei sind, werden wir auch die Daten für unser Telegram eintragen, da wir gesagt haben, dass wir Benachrichtigungen dieser Art erhalten möchten.
es_host: "SERVIDOR_ELASTICSEARCH" es_port: PORTes_username: BENUTZERes_password: PASSWORTrules_folder: rulesrun_every: Protokoll: 1 buffer_time: Protokoll: 1 writeback_index: elastalert_statusalert_time_limit.days: 2 telegram_bot_token: "TELEGRAM_BOT_TOKEN" telegram_room_id: "TELEGRAM_GRUPPEN_ID" telegram_parse_mode: "HTML" alert_text_type: alert_text_only
Wir haben es fertig, es bleibt nur noch, es bereitzustellen, y os dejo debajo el comando para verle los logs por si tenéis algún incidente:
sudo docker compose up -d sudo docker logs elastalert -f
Y ahora queda el trabajo duro 🤠la parte bonita 😍 que no es más que crear las reglas que necesitemos, tantas como, en este caso alertas queramos recibir, eso o importar reglas existentes 😉 . Os dejo el ejemplo de una regla (./rules/OpenServicesIT-Fortinet-FortiGate-Inicio-sesion-correcto.yaml) donde veremos lo que esperamos, una regla que buscará logs en un FortiGate con Inicios de sesión correctos, Das ist, cada vez que alguien inicia sesión en un FortiGate, por GUI o CLI, de manera satisfactoria. Esa alerta es la que recibiremos, en este caso por Telegram y nada más haremos (Erst einmal)….
Name: Fortinet-FortiGate-Inicio-sesion-correcto
type: Frequenz
num_events: 1
Index: filebeat-*
threshold: 10
use_count_query: false
timeframe:
Protokoll: 3
Filter:
- Frage:
query_string:
Frage: 'tags: fortigate AND fortinet.firewall.action: login AND rule.description: "login successful"'
alert:
- telegram
alert_subject: <b>FortiGate - Einloggen</b>
alert_text: |
Ha iniciado sesión correctamente un administrador al FortiGate, Mehr Info:
Benutzer: {0}
Método: {1}
Dirección IP origen: {2}
Nombre del FW: {3}
alert_text_args: ["source.user.name", "fortinet.firewall.method", "source.ip", "observer.name"]
Wie Sie sehen können, tiene un formato de la regla que deberemos cumplir de manera minuciosa, hay muchas posibilidades, en este caso en particular cada 1 minutos haremos una query de Elasticsearch y en cuanto tengamos 1 evento, pues generará una alerta así de bonita en Telegram. Tampoco volváis loco al Telegram con alertas 'tontas’ que para eso tendremos otras herramientas de gestión de incidentes, pero resulta un ejemplo muy práctico de mostrar.
Una vez creada nuestra regla, oder wenn wir sie ändern, ElastAlert2 wird sie automatisch neu laden, wir müssen nichts neu starten. Und so einfach geht's, das wird anfangen, nach dem zu suchen, was wir in unserem Elasticsearch brauchen! Ich werde euch wahrscheinlich einige andere Beispiele für interessante Regeln geben, die man mit ElastAlert2 machen kann, wie zum Beispiel gegen schwarze Listen prüfen, Erkennung von unmöglichen Reisen oder dem Zeitreisenden (oder wie man es sagt), Integrationen mit Entscheidungen von Crowdsec… es gibt viel zu besprechen…
Ich wünsche euch alles Gute, passt auf euch auf, Und wie immer, Regenschirm für den Regen und Sonnenschirm für die Sonne 😅 was für alte Sprüche… Eine Umarmung! 🫂









































