Esper în serviciul corelației

Produsele din clasa SIEM diferă de serverele Log convenționale, cu cel puțin prezența unui motor de corelare care poate transforma un flux imens de evenimente într-un set de alerte. În acest articol vom analiza câteva dintre caracteristicile bibliotecii Esper, ceea ce face posibilă implementarea motorului său de corelație, care nu este inferior capabilităților subsistemului de corelare cu soluțiile industriale SIEM, dar, în unele privințe, le depășește.







Esper, principiul de funcționare

Esper în serviciul corelației
Web GUI Esper Enterprise Edition

Pentru a realiza o corelație în aplicația dvs., trebuie să descrieți tipurile de evenimente, câmpurile și regulile de procesare a acestora, tot restul lucrării Esper va prelua. Regulile de procesare a evenimentelor (declarații) sunt descrise folosind EPL (Language Processing Language), care este foarte asemănător cu SQL, însă logica lucrării lui Esper este fundamental diferită de DBMS. În loc să stocheze evenimente și să execute periodic cereri, Esper păstrează regulile (cererile) și trece fluxul de evenimente prin ele, ca și cum ar fi printr-o sită (sau un set de site). Odată ce condițiile din reguli sunt îndeplinite, biblioteca dă instantaneu rezultatul aplicației.

Regulile sunt descrise în două moduri principale:

  • modelele de evenimente sunt șabloane de evenimente care detectează prezența sau absența secvențelor sau a combinațiilor de evenimente într-un flux sau în seturi de fire;
  • flux interogări eveniment - interogări, prin care fluxul de evenimente este sărit peste liste, lăsând doar cele cerute de regulile date.

După cum sa menționat deja, Esper lucrează cu fluxuri continue de evenimente de diferite tipuri, de exemplu de la un firewall, un antivirus, un controler de domeniu. Esper vă permite să activați fluxurile și evoluția acestora, cât mai curând de căutare: îmbinare, grup, filtru, Deduplicați, sortare, Chase prin diferitele tipuri de ferestre (timp, statistici) - în general, de a face totul pentru a găsi inamicul, pentru a identifica o anomalie sau de a lovi potul cel mare la bursă. Da, da, Esper este folosit chiar și pentru tranzacționare!

Reguli de corelare

Esper în serviciul corelației
O modalitate de a descrie tipul de evenimente

Da, apropo, nu există nici o eroare: Esper, spre deosebire de SQL, permite utilizarea clauzei unde se află în interogări care conțin funcții agregate. În ciuda faptului că regula va funcționa, cea mai optimă ar fi o cerere folosind un filtru de fire:

Un filtru de flux filtrează evenimentele înainte de a lovi fereastra, în timp ce clauza unde se utilizează pentru toate evenimentele din fereastră, după care se iau în considerare funcțiile agregate ale căror valori sunt filtrate prin faptul că au. Cu cât mai puține evenimente din fereastră, cu atât mai puține resurse consumăm.

În cazul în care rețeaua noastră a pătruns malware-ul, care va scana în mod activ regulile de rețea create de mai sus vor genera mai multe evenimente care umple un server de mail pentru notificări, astfel încât se adaugă structura de a părăsi ieșire numai primul eveniment într-o oră pentru fiecare sursă la care cererea de sarcină :

Esper în serviciul corelației

Adesea, nu numai prezența anumitor evenimente, ci absența acestora pentru o anumită perioadă de timp necesită atenție, deoarece aceasta poate indica o defecțiune a echipamentului, o eroare de configurare sau un atac. Pentru a nu faceți clic pe momentul în care jurnalele se opresc din firewall, vom crea o altă regulă folosind șablonul:







După fiecare eveniment din fluxul firewall-ului, Esper va lansa un cronometru de cinci minute. Dacă în acest moment nu sosește un alt eveniment, cererea va fi notificată în acest sens.

Mașina timpului

  1. Trimiteți la Esper un mesaj special de tip CurrentTimeEvent, în care se plasează valoarea de timp din jurnal, deplasând cronometrul intern. Apoi, trimitem intrarea din jurnalul propriu-zis, care se execută printr-o interogare care folosește fereastra obișnuită de câștig: timpul.
  2. Trimiteți mesajele Esper din jurnal cu un câmp care conține timpul din jurnal în format unixtime (valoarea trebuie să fie de tipul Long). Mai mult, aceste mesaje se execută printr-o interogare cu fereastra temporară win_wind_timed (time_of_log, period), care utilizează timpul extern pentru munca sa.

Deschide ferestrele deschise

În exemplele de reguli pe care le-am luat deja în considerare, sa folosit o fereastră temporală de alunecare. În plus față de această fereastră, Esper susține o serie de alte ferestre interesante. Iată doar câteva dintre ele:

  • câștig: lungime - acumulează un anumit număr de evenimente;
  • win: time_batch - acumulează evenimente pentru un anumit interval, apoi le dă la dispoziție pentru procesare;
  • win: time_accum - o fereastră de alunecare care acumulează evenimente până când nu există evenimente într-un timp specificat;
  • win: keepall - stochează toate evenimentele care intră în fereastră;
  • std: unic - adaugă fereastra doar ultimul eveniment pentru valoarea unică a câmpului / câmpuri sau funcții ale acestor valori, adică, dacă am stabilit parametrii ferestrei care verifică marca unică a câmpului src_ip, rezultatul va conține cele mai recente evoluții în caseta pentru fiecare src_ip;
  • std: groupwin - grupează evenimente după câmpuri sau valori de funcții din aceste câmpuri;
  • stat: uni - calculează diverse statistici pentru evenimentele conținute în fereastră: total, mediu, deviație standard, varianță;
  • stat: corel - calculează coeficientul de corelație între doi parametri din flux;
  • ext: time_order - organizează evenimentele în timp, chiar dacă evenimentul vechi a venit mai târziu decât cel nou.

Ferestrele pot fi combinate una cu cealaltă, evenimentele dintr-o fereastră curgând în cealaltă. De exemplu, dacă firewall-ul transmite informații despre numărul de octeți, atunci volumul total al datelor transmise, volumul mediu al sesiunii pentru o oră și topul 10 pot fi calculate folosind următorul lanț de ferestre:

Un alt concept interesant susținut de Esper este denumit Windows (Windows Named). Ferestrele denumite sunt globale și pot fi utilizate de mai multe reguli simultan. De exemplu, să adăugăm în circuitul nostru de testare un controler de domeniu din care primim evenimente despre autentificarea utilizatorului cu câmpurile de conectare și src_ip. Dorim să calculeze rapid dăunătorilor autentificare scanarea rețelei noastre, și nu petrec timp căutând informațiile din jurnalele de la operator. Deoarece rețeaua utilizează DHCP, vrem ca login-src_ip să conțină doar datele reale. autentificare Bunch - src_ip poate fi util pentru regulile, folosind diferite fluxuri de evenimente (de firewall, IDS, proxy server), asa ca vom crea o fereastra cu numele, care va păstra buchet cu nici o limită de timp:

Acum sunteți gata să înșurubați datele de conectare asociate utilizatorilor la fiecare eveniment de scanare din fluxul scanning_hosts creat anterior:

Conectați sursele externe

Esper nu se limitează la suportul DBMS standard, ci permite utilizarea absolut orice surse. Pentru a face acest lucru, trebuie să implementați o clasă cu o metodă statică care returnează o clasă Java, un java.util.Map sau o matrice de obiecte Object []. Cu această flexibilitate, puteți trage date de oriunde: de la Redis, fișiere, resurse web - în general, utilizați orice sursă cu care puteți lucra în Java. Asta ar putea arăta o clasă care lucrează cu Redis:

Interogarea pe care această clasă o poate utiliza pentru a identifica conexiunile din rețeaua Tor va avea următoarea formă:

Deci, cu puțin efort, puteți integra Esperul cu diverse rețele de informații și acesta este doar unul dintre puținele exemple de extindere a funcționalității Esper cu module personalizate.

Esper în serviciul corelației

concluzie

Procesarea evenimentelor este piatra de temelie în diverse domenii: comerț, antifructură, detectarea intruziunilor și anomalii, monitorizare. Toate aceste domenii combină necesitatea unei procesări complexe a evenimentului cu o întârziere minimă. Biblioteca Esper este o soluție excelentă pentru această sarcină datorită capacităților sale largi, sintaxei simple pentru descrierea regulilor și a unei extensibilități foarte bune. Pentru a practica scrierea expresiilor EPL și a vedea rezultatul muncii lor, puteți utiliza aplicația web. Dacă vă întrebați cum să utilizați Esper în cererea sa, să acorde o atenție în dosar exemplele din interiorul arhivei cu o bibliotecă sau așteptați pentru numărul următor, în cazul în care vom trece de la teorie la practică și de a crea megakorrelyator noastre cu blackjack și alte chifle. Așa cum spun ei, stați liniștit!

Distribuiți acest articol cu ​​prietenii dvs.:







Articole similare

Trimiteți-le prietenilor: