Regras e alertas com ElastAlert 2

A festa começa como disse o outro… Vou mostrar-lhe algumas coisas que eu acho que você vai gostar de ser capaz de explorar seus logs e evoluir nosso SIEM para um SOC, Tópicos muito interessantes. Primeiro temos o ElastAlert2, que é uma ferramenta de código aberto que nos permitirá gerar alertas baseados em regras com dados armazenados no Elasticsearch.

Se guardares, por exemplo logs no Elasticsearch, sejam logs do teu Active Directory, de Entra, do teu firewall, dos teus servidores, dispositivos ou outras máquinas… poderemos realizar consultas de forma automatizada através de uma série de regras, para depois alertar-nos caso nos interesse alguma situação (ou executar ações). Poço ElastAlert 2 veio para isso, para nos ajudar, poderemos criar (ou importar) tantas regras quantas precisarmos para fazer as consultas que necessitamos.

Neste documento veremos um exemplo concreto, não se, há tantas possibilidades… vamos tentar detectar quando o nosso sistema está comprometido, detectando atividades suspeitas (ou maliciosas), no final trata-se de prevenir males maiores, seja alertando-nos ou gerando ações que mitiguem o cenário. Bem, isso, no exemplo que nos é proposto, tentaremos detectar quando alguém (Por exemplo) se ha logueado en un firewall FortiGate de manera correta. 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 ao lado, ¡Início! O que precisamos? ¡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, É tão fácil, este contenedor, ElastAlert2, será el encargado de leer los ficheros de reglas que dejemos en una carpeta y hacer, lo que tenga que hacer 😅 .

clone do git https://github.com/jertel/elastalert2.git
cd elastalert2
mkdir config
mkdir rules

Y creamos nuestro docker-compose.yml con algo como esto:

Versão: Serviços '3.9':
    elastalert2:
        imagem: 'jertel/elastalert2:mais recentes'
 volumes:
            - './rules:/opt/elastalert/rules'
            - './config/elastalert.yaml:/opt/elastalert/config.yaml'
        container_name: elastalert
        restart: a menos que redes paradas:
           red_elastalert2:

Redes:
  red_elastalert2:
    motorista: Ponte

Y antes de nada, tendremos que editar también el fichero de configuración de ElastAlert2 ‘./config/elastalert.yaml’, donde indicaremos el servidor de Elasticsearch, su puerto, los credenciales de accesoy ya que estamos, vamos a meterle ya los datos de nuestro Telegram, ya que hemos dicho que queremos recibir alertas de este tipo.

es_host: "SERVIDOR_ELASTICSEARCH"
es_port: PUERTO
es_username: USUARIO
es_password: CONTRASEÑA
rules_folder: rules
run_every:
  minutos: 1
buffer_time:
  minutos: 1
writeback_index: elastalert_status
alert_time_limit.days: 2

telegram_bot_token: "TOKEN_BOT_TELEGRAM"
telegram_room_id: "ID_GRUPO_TELEGRAM"
telegram_parse_mode: "HTML"
alert_text_type: alert_text_only

Lo tenemos listo, no queda más que desplegarlo, 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 corretos, Isso é, 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 (Por enquanto)….

Nome: Fortinet-FortiGate-Inicio-sesion-correcto
type: frequência
num_events: 1

index: filebeat-*
threshold: 10
use_count_query: false
timeframe:
  minutos: 3

filtro:
- query:
    query_string:
      query: 'tags: fortigate AND fortinet.firewall.action: login AND rule.description: "login successful"'

alert:
  - telegram

alert_subject: <b>FortiGate - Iniciar sessão</b>

alert_text: |
  Ha iniciado sesión correctamente un administrador al FortiGate, más info:
  Utilizador: {0}
  Método: {1}
  Dirección IP origen: {2}
  Nombre del FW: {3}
alert_text_args: ["source.user.name", "fortinet.firewall.method", "fonte.ip", "observer.name"]

Como você pode ver, 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 ‘tontasque para eso tendremos otras herramientas de gestión de incidentes, pero resulta un ejemplo muy práctico de mostrar.

Uma vez criada a nossa regra, ou quando as modificarmos, o ElastAlert2 as recarregará automaticamente, não é necessário reiniciarmos nada. E assim é fácil, isto ficará à procura do que precisarmos no nosso Elasticsearch! Provavelmente vos darei alguns outros exemplos de regras curiosas que se podem fazer com o ElastAlert2, como verificar listas negras, detecção de viagens impossíveis ou o viajante do tempo (ou como se diga), integrações com decisões do Crowdsec… há muito por onde pegar…

Desejando que corra tudo fenomenal, cuidem-se, E como sempre, guarda-chuva para a chuva e chapéu de sol 😅 que frases de velho… Um abraço! 🫂

Postagens recomendadas

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Não hesite em contactar-me, Vou tentar ajudá-lo sempre que puder, Compartilhar é viver ;) . Desfrute de documentos!!!