
Regole e avvisi con ElastAlert 2
La festa inizia come ha detto l'altro… Ti mostrerò alcune cose che penso ti piaceranno per poter sfruttare i tuoi log ed evolvere il nostro SIEM in un SOC, Argomenti molto interessanti. Per prima cosa abbiamo ElastAlert2, che è uno strumento open-source che ci permetterà di generare avvisi basati su regole con i dati memorizzati in Elasticsearch.
Se si risparmia, ad esempio, i log in Elasticsearch, Registra da Active Directory, Da Entra, dal firewall, dei tuoi server, bancarelle o altri gadget… Saremo in grado di effettuare query in modo automatizzato attraverso una serie di regole, e poi avvisarci se eravamo interessati a qualsiasi situazione (o eseguire azioni). Bene ElastAlert 2 È venuto per questo, per aiutarci, saremo in grado di creare (o importare) tante regole quante ne abbiamo bisogno per fare le query di cui abbiamo bisogno.
In questo documento vedremo un esempio concreto, Non lo so, Ci sono così tante possibilità… Cercheremo di rilevare quando il nostro sistema è compromesso, Rilevamento di attività sospette (o doloso), Alla fine si tratta di prevenire mali più grandi, avvisandoci o generando azioni che mitigano lo scenario. Bene, questo, nell'esempio che abbiamo, Cercheremo di rilevare quando qualcuno (Per esempio) hai effettuato correttamente l'accesso a un firewall FortiGate. Trattandosi di un primo documento, lo faremo, Rilevare, e genera un avviso tramite Telegram. In altri documenti vedremo molte altre cose che si possono fare.
Txapas sul lato, Avviato! Di cosa abbiamo bisogno? Beh, il solito! Pazienza e Docker!🤣 Quindi su una macchina con un Linux che abbiamo per questi scopi, e dopo aver installato Docker e Docker Compose, Bene, distribuiremo un container con esso, È così facile, questo contenitore, ElastAlert2, si occuperà di leggere i file delle regole che lasciamo in una cartella e di fare, Cosa devi fare 😅.
git clone https://github.com/jertel/elastalert2.git CD elastalert2 mkdir config regole mkdir
E creiamo il nostro docker-compose.yml con qualcosa del genere:
Versione: '3.9' services: elastalert2: immagine: 'jertel/elastalert2:latest' volumes: - './rules:/opt/elastalert/rules' - './config/elastalert.yaml:/opt/elastalert/config.yaml' container_name: Riavvio di Elastalert: reti a meno che non siano state arrestate: red_elastalert2: Reti: red_elastalert2: autista: Ponte
E prima di tutto, dovremo anche modificare il file di configurazione di ElastAlert2 './config/elastalert.yaml', dove indicheremo il server Elasticsearch, Il tuo porto, Credenziali di accesso… E già che ci siamo,, inseriamo i dati del nostro Telegram, Visto che abbiamo detto che vogliamo ricevere avvisi di questo tipo.
es_host: "SERVIDOR_ELASTICSEARCH" es_port: PUERTO es_username: es_password UTENTE: PASSWORD rules_folder: Regole run_every: verbale: 1 buffer_time: verbale: 1 writeback_index: elastalert_status alert_time_limit.giorni: 2 telegram_bot_token: "TOKEN_BOT_TELEGRAM" telegram_room_id: "ID_GRUPO_TELEGRAM" telegram_parse_mode: "HTML" alert_text_type: alert_text_only
Ce l'abbiamo fatta, Non resta che dispiegarlo, e vi lascio sotto il comando per vedere i log nel caso in cui abbiate qualche incidente:
Sudo Docker compose up -d sudo Docker logs elastalert -f
E ora c'è il duro 🤠lavoro, la parte bella 😍, che non è altro che creare le regole di cui abbiamo bisogno, fino a, In questo caso gli avvisi che vogliamo ricevere, che o importare regole esistenti 😉. Vi lascio con l'esempio di una regola (./rules/OpenServicesIT-Fortinet-FortiGate-Login-Correct.yaml) Dove vedremo cosa ci aspettiamo, una regola che cercherà i log in un FortiGate con accessi riusciti, Questo è, ogni volta che qualcuno accede a un FortiGate, tramite GUI o CLI, in modo soddisfacente. Quell'avviso è quello che riceveremo, in questo caso tramite Telegram e nient'altro lo faremo noi (Per ora)….
Nome: Fortinet-FortiGate-login-tipo corretto: frequenza num_events: 1 indice: Soglia filebeat-*: 10 use_count_query: falso intervallo di tempo: verbale: 3 filtro: - quesito: query_string: quesito: 'tags: fortigate AND fortinet.firewall.action: login E regola.descrizione: "Accesso riuscito"' alert: - Telegramma alert_subject: <b>FortiGate - Accesso</b> alert_text: | Un amministratore ha effettuato correttamente l'accesso a FortiGate, Maggiori informazioni: Utente: {0} Metodo: {1} Indirizzo IP di origine: {2} Nome FW: {3} alert_text_args: ["source.user.name", "fortinet.firewall.method", "fonte.ip", "observer.name"]
Come puoi vedere, Ha un formato di regole che dobbiamo rispettare in modo meticoloso, Ci sono molte possibilità, In questo caso particolare ciascuno 1 minuti faremo una query Elasticsearch e non appena avremo 1 evento, perché genererà un avviso così bello su Telegram. Non far impazzire Telegram nemmeno con avvisi "stupidi"’ che per questo avremo altri strumenti di gestione degli incidenti, ma è un esempio molto pratico da mostrare.
Una volta creata la nostra regola, o quando li modifichiamo, ElastAlert2 li ricaricherà automaticamente, Non abbiamo bisogno di resettare nulla. Ed è così facile, questo inizierà a cercare ciò di cui abbiamo bisogno nel nostro Elasticsearch! Probabilmente ti darò qualche altro esempio di regole curiose che si possono fare con ElastAlert2, Qualunque sia il controllo contro le liste nere, Rilevamento del viaggio impossibile o del viaggiatore nel tempo (o qualsiasi cosa tu dica), integrazioni con le decisioni di Crowdsec… C'è del tessuto da tagliare…
Ti auguro grande, Voi vi prendete cura di voi stessi, E come sempre, Ombrello per la pioggia e ombrello per il sole 😅 , che vecchie frasi… Un abbraccio! 🫂