Logelemző Blog

Minden, ami a naplógyűjtéssel, logelemzéssel, SIEM logelemző eszközökkel kapcsolatos. Technikai leírások és hírek a loggyűjtéssel kapcsolatban.

Rovatok

Linkek

Naplógyűjtés, naplóelemzés a gyakorlatban

2012.03.08. 14:25 bvamos

Korrelációs listázás Postfix logokon

Címkék: postfix LOGalyze

A logok elemzése akkor kezd szép lenni, amikor egy grep-ek és 'grep -v'-k segítségével már nem kapjuk meg azt az eredményt, amit szeretnénk. Ennek a legjobb példája, amikor a logfájlban lévő sorok közötti összefüggéseket szeretnénk összevonni, tulajdonképpen egysorosítani a több sorban elhelyezkedő eseményt. Egyértelműbb, ha ezt tranzakciós listázásnak, vagy tranzakció-kezelésnek hívjuk.

Ennek a listázásnak a lényege, hogy a logban egy összetett esemény különböző időpontban végrehajtott lépései külön bejegyzésként szerepelnek. Ezek akár jöhetnek különböző helyekről is, de szoros összefüggés van közöttük, amit a logsorokban szereplő valamilyen tranzakció azonosító valósít meg.

Nézzünk egy konkrét példát, egy postfix mail szerver levélforgalmát. Az alábbi logok egy levél beérkezését és kézbesítését mutatják először sima szövegként, majd a LOGalyze kereső felületén.

Mar 8 03:57:02 zv11 postfix/smtpd[26680]: AEC329E907: client=localhost.localdomain[127.0.0.1]
Mar 8 03:57:02 zv11 postfix/qmgr[3097]: AEC329E907: from=, size=1445, nrcpt=1 (queue active)
Mar 8 03:57:03 zv11 postfix/smtp[26684]: AEC329E907: to=, relay=mx.hu[1.2.3.4]:25, delay=0.58, delays=0.03/0/0.08/0.46, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 3V3GbM1jg9zKCWC)
Mar 8 03:57:03 zv11 postfix/qmgr[3097]: AEC329E907: removed

postfix1.png

Elég nehézkes ezt így kezelni, sokkal jobb lenne, ha egy tranzakció (levélküldés) adatait egy sorban látnánk, és abban csak a szükséges adatok lennének: időpont, queueid, from, to, státusz.

Ha van egy LOGalyze-unk, akkor nem kell ehhez semmi különös, csak egy varázsszó a kereső kifejezés végére, ami pontosan tudja, hogy egy tranazkció hogy épül fel, melyik logsorokból áll, melyik mező hol helyezkedik el. Ez a varázsszó pedig a '| postfix_accounting'. Lássuk az eredményt:

postfix2.png

Természetesen ez csak egy konkrét megvalósítás. Az elv az, hogy ha tudjuk, hogy melyik az összekötő kapocs, mikor kezdődik, mikor van vége egy tranzakciónak, és milyen mezőket szeretnénk kiszedni belőle, akkor további egyéni tranzakciók listázására is lehetőség van.

Ezt a listát pedig természetesen CSV formátumban exportálva könnyedén feldolgozhatjuk, vagy továbbíthatjuk.

Szólj hozzá!

2012.02.16. 11:23 bvamos

Gyűjtés+parszolás+elemzés = syslog-ng+patterndb+LOGalyze = A kész megoldás

Címkék: LOGalyze syslog ng patterndb

Kicsit ugyan ferdítve szól a mondás, de ha már van két magyar termékünk, próbáljuk meg őket összehozni!

Syslog-ng

"A syslog-ng™ termékcsalád, a nyílt forráskódú technológiától a kulcsrakész log szerverekig, a naplóüzenetek gyűjtésének és feldolgozásának vezető megoldása 1997 óta." - szól a leírás a balabit.hu-n. Valóban, a termék bizonyított, tudja a dolgát.

Patterndb

A syslog-ng szerver képes a naplóüzenetek valós idejű, nagy teljesítményű feldolgozására, melynek során a naplóüzeneteket a felhasználói közösség által összegyüjtött mintázatokhoz (pattern-ek) illeszti.

LOGalyze

A LOGalyze egy központi napló gyűjtő és elemző rendszer. Képes valós idejű elemzésre. Gyűjt, parszol, osztályoz, aggregál, korrelál, riaszt.

 

Syslog-ng + Patterndb + LOGalyze

A LOGalyze-nak megvan az az előnye, hogy képes a logok begyűjtésére számos módon önállóan is, be is tudja azonosítani azokat, fel is tudja bontani. Akkor miért is kell nekünk a syslog-ng?

A naplógyűjtés, elemzés bonyolult folyamat, ráadásul szétválasztható, de legalábbis egymásra épül. Számos szervezetnél a központi naplógyűjtés már hosszú idők óta megbízhatóan üzemel, amikor felmerül az igény a begyűjtött naplók valós idejű és automatizált elemzésére. Ilyenkor nyilvánvalóan nem szeretnék a meglévő naplózó infrastruktúrát lecserélni, inkább hozzáillesztik az elemzőt a gyűjtő rendszerhez, ami az esetek többségében nem is jelent problémát.

Tételezzük fel, hogy van már egy központi naplógyűjtő rendszerünk syslog-ng alapon. A küldő eszközök halmaza heterogén: Linux, Windows szerverek, hálózati eszközök, stb. A logokat a központi syslog-ng szerver fogadja, és file-okba rendezi forrás hoszt és dátum alapján. A napi rutinba tartozik a naplók és a naplózási folyamat ellenőrzése. Incidens estén jön a jól bevált grep és társai (sort, uniq, awk és cut). Sőt, vannak perl scriptek is, amik bizonyos időközönként végigfutnak a logokon és adatok gyűjtenek, esetleg riasztanak valamilyen mintára. Egyszerű esetekre a swatch-ot is használják. Ha belegondolunk, ez már egy jól működő központi gyűjtő és elemző rendszer lehet. Vagyis lehetne, ha nem csak az a rendszergazda tudná használni, aki kiépítette.

De valljuk be, az ilyen rendszerek előbb vagy utóbb eljutnak abba a fázisba, hogy a adatgyűjtések válaszideje már nem elégséges, a riasztások bővítése bonyolult és körülményes, az aggregáció kezelhetetlen. Ekkor jön képbe egy logelemző rendszer. De ragaszkodnak a bevált gyűjtő megoldáshoz.

Mit csináljunk?

Semmi gond, illesszük az elemzőnket a syslog-ng szerverünkhöz!

Az egyszerűbb megoldás

A LOGalyze illesztése egy syslog-ng-hez nagyon egyszerű: készítjünk egy új tcp destinationt a LOGalyze szerverünk IP:port adataival (titkosíthatjuk is a csatornát) és küldjük át a logokat párhuzamosan a LOGalyze-unknak. Ő majd egy syslog kollektoron keresztül fogadja, értelmezi, felbontja, elemzi.

De mi van akkor, ha van már syslog-ng oldalon is felbontás és osztályozás patterndb segítségével? Ekkor felmerül a kérdés, hogy milyen módon tudnám ezeket az adatokat is az elemzésnél felhasználni.

A szép megoldás

A syslog-ng 3.3 újdonsága a json template. Ez egy kimeneti sablon, ami arra képes, hogy a kimeneten JSON formátumú serializált adatokat küldjön. Ez mehet file-ba is, de mehet socketen távoli cél felé. Nézzünk egy ilyen logot:

{ "HOST": "ubuntu1", "PRIORITY": "info", "MESSAGE": "Failed password for username from 10.0.2.15 port 56148 ssh2", "FACILITY": "auth", "PROGRAM": "sshd", "DATE": "Feb  3 12:23:38"  }Nincs felbontás, csak a sylsog mezők serializálva.

Mi értelme van ennek? Hiszen az elemzőnk a syslogot is megérti, miért jó, ha JSON.ban megy az adat? Akkor, ha jól struktúrált adataink vannak, valljuk be, semmi. A JSON - és társai - akkor hasznosak, ha adataink struktúrálatlanok, azaz minden objektum (esetünkben logsor) más mezőkből áll, nem is tudjuk előre, hogy milyenekből.

Pont ilyen struktúrálatlan adathalmazt kapok, ha egy naplóállományt elkezdek szétbontani mezőkre. Minden logom más adatokat tartalmaz, más mezők nyerhetők ki belűlük, más információhoz szeretnék jutni általuk. Mégis egy csatornán kell őket továbbítanom, hiszen egy helyen keletkeznek és egy egy helyen gyűjtöm őket.

A LOGalyze az elemzési folyamat során ilyen struktúrálatlan objektumokat gyárt. A sylsog-ng patterndb segítségével ilyen struktúlálatlan adatokat gyárt, amit aztán továbbít valahogyan valahová. File-ba, hálózaton, adatbázisba.

Lássuk, hogy is néz ki egy patterndb-vel parszolt log syslog-ng oldalon:

{ "HOST": "ubuntu1", "HOST_FROM": "ubuntu1", "usracct.service": "ssh2", "usracct.authmethod": "password", "LEGACY_MSGHDR": "sshd[2045]: ", "usracct.sessionid": "2045", "PRIORITY": "info", "SOURCEIP": "127.0.0.1", "MESSAGE": "Failed password for bvamos from 10.0.2.15 port 56148 ssh2", "FACILITY": "auth", "TAGS": ".classifier.system,.source.s_src,usracct,secevt", "usracct.application": "sshd", "PROGRAM": "sshd", "secevt.verdict": "REJECT", "DATE": "Feb  3 12:23:38", "PID": "2045", "SOURCE": "s_src", "usracct.username": "bvamos", "usracct.device": "10.0.2.15", "usracct.type": "login" }

Jól néz ki. Külön vannak a fontos mezők, ráadásul nevesítve. Van osztályozás. Van még egy szépséghibája, hogy az eseménynek nincs egyedi azonosítója, de ez már csak konfiguráció kérdése, könnyen belevarázsolhatjuk a patterdb szabály azonosítóját a logba, látni fogjuk a LOGalyze képernyőjén.

Akkor küldjük át ezt a LOGalyze-nak.

# Patterndb aktivalasa
parser p_db{ db-parser(); };

destination d_json_tcp{
  tcp("<REMOTE_IP>") port("<PORT>")
  template("$(format_json --scope all-nv-pairs --scope core)\n");
};

# Parszolt adatok atkuldese json formatumban tcp socketen
log{ source(s_remote); parser(p_db); destination(d_json_tcp); };

Mit lát ebből a LOGalyze? Ahhoz, hogy fogadni tudja, kell egy socketen hallgatózó kolektor, ami képes értelmezni a JSON formátumban jövő adatokat. Még szerencse, hogy van ilyenje. A főbb paraméterei:

  • DTP: socket (a megfelelő ip-vel és porttal)
  • DF: json

  Nézzük, hogy is néz ez ki:

20120216_kollektorok.png

Látom, jött is már log (Events processed: 491). Keressük meg! Ehhez a legegyszerűbb keresési kifejezés a '_df:json', ami minden logot megjelenít, ami JSON formátumú kollektoron jött. Azért tegyünk még hozzá egy patterndb mezőt is: '_df:json AND usracct.username:bvamos'! Raw nézetben látjuk a teljes JSON formátumú logot.

20120216_kereses_json.png

Váltsunk át Syslog nézetbe, és nézzük meg a parszolt mezőket is! Gyönyörű!

20120216_kereses.png

A többi már csak fantázis kérdése, gyárthatunk statisztikát amivel aggregált adatokat kapunk, készíthetünk egyszerű, vagy korrelált eseményeket a parszolt mezők felhasználásával.

Jó elemzést!

1 komment

2011.12.21. 13:36 bvamos

Oracle Audit Trail gyűjtése és elemzése

Címkék: oracle audit trail LOGalyze Splunk

A következő 3 részes sorozatomban szeretném bemutatni az Oracle adatbázis szerver által biztosított audit lehetőségeket, az audit trailek központi gyűjtésének lehetőségeit és elemzését.
Tekintettel arra, hogy nem DBA (magam sem az vagyok), hanem inkább elemzés szempontjából tekintek a témára, az Oracle Audit alrendszer pontos beállításait nem fogom részletezni, legyen elég annyi, hogy mit lehet, a hogyanhoz meg adok hivatkozást.

Tartalom

Az 1. részben azért mindenképpen beszélnünk kell legalább arról, hogy milyen lehetőségek vannak az Oracle Audit rekordok előállítására. Tudjuk, hogy az elemzés menetét nagy mértékben meghatározza a forrás tartalma és formátuma, elérhetősége. Megnézzük, hogy milyen módon tudjuk a logjainkat összegyűjteni, hogy majd aztán a további részekben elemezni tudjuk.

A 2. rész terveim szerint már a gyakorlati elemzést mutatja be, méghozzá a LOGalyze logelemző eszköz segítségével. Megnézzük a teljes életciklust: gyűjtés, felismerés, parszolás, aggregálás, keresés, jelentéskészítés, korrelációs eseménykezelés.

Szeretnék objektív lenni, ezért a 3. részben megnézzük azt is, hogy mik a lehetőségek más eszköz használatával. Választásom a Splunk termékre esett. Nem csak azért, mert nagyon jó, hanem azért is, mert a Splunk lehetőséget ad arra, hogy bárki saját alkalmazást írjon rá (Splunk App), ami csak azt csinálja, amit ő szeretne. Megnézzük, hogyan tudunk Oracle Audit Trailt elemezni Splunkkal.

Látogasson vissza később, és itt lesz a link az első részre...

Szólj hozzá!

2011.12.02. 10:27 bvamos

Felhasználói azonosítás naplózása Cisco routereken syslog segítségével

Címkék: login cisco router authentikáció syslog

Logelemzés szempontjából kiemelkedő jelentőségű a felhasználói hozzáférések monitorozása a hálózaton belül, függetlenül attól, hogy milyen eszközről van szó. Nem csak a szervereken, hanem a hálózati eszközökön is szükség van a felhasználói bejelentkezések (sikeres) vagy sikertelen kísérletek naplózására. Mivel mi központi naplóelemzésben gondolkodunk, az összegyűjtött logokat el is kell küldenünk az elemző eszközünknek.

A legelterjedtebb módszer erre, ha a naplóinkat valós időben, syslog segítségével továbbítjuk a központi gyűjtő-elemző eszközünknek. A syslog előnye, hogy számos eszköz támogatja, beleértve a Cisco routereit is.

Cisco router esetén alapvetően két módszer van a felhasználó belépések naplózására:

  1. Helyi felhasználókezelés esetén a TELNET vagy SSH bejelentkezési kísérletekről készült naplóbejegyzéseket közvetlenül továbbítjuk egy syslog szerver felé
  2. Központi felhasználókezelés esetén (TACACS) a központi logot kell továbbítanunk és feldolgoznunk

Lássuk, hogyan tudjuk beállítani Cisco routerünket akkor, ha a felhasználókezelést lokálisan oldjuk meg. Ez ugyan csak kisebb hálózatok esetén javasolt, de ebből is sok van, úgyhogy gyakran előfordul.

Kell egy központi syslog szerver

Tételezzük fel, hogy van már ilyenünk, és fogadja a logokat távolról az UDP 10.0.0.1:514 porton.

Állítsuk be a routerünket

Tételezzük fel azt is, hogy a routerünkön már be van állítva a felhasználói authentikáció, és beléptünk.

Lépjünk global config módba:

Router#conf t

Logolás beállítása

Küldjük a logokat a syslog szerverünkre, amelynek az IP száma 10.0.0.1.

Router(config)#logging 10.0.0.1

Be kell állítanunk a minimális logolási szintet, hogy biztosan kiküldje a routerünk a szükséges logokat. A minimum szint sikertelen bejelentkezés esetén warning (4), sikeres bejelentkezés esetén notifications (5). Hogy mindkettőt lássuk, legyen a minimum szint notifications (5).

Router(config)#logging trap notifications

Kapcsoljuk be a bejelenkezések logolását.

 

Router(config)#login on-success log
Router(config)#login on-failure log

Opcionális beállítások

Beállíthatjuk a logszerver felé látszó interfészünket.

Router(config)#logging source-interface FastEthernet0/0

Beállíthatunk egy késleltetést is a bejelentkezések között.

Router(config)#login delay 5

Mentés, kilépés

Lépjünk ki a config módból (CTRL+Z) és mentsük el a beállításainkat, hogy megmaradjanak egy esetleges újraindítás után is.

Ezzel készen is vagyunk, le is tesztelhetjük a naplózásunkat egy sikertelen és sikeres belépéssel. Valami ilyesmit kell látnunk a syslog szerveren:

 

Dec  2 10:24:41 10.0.0.254 1431: Router: Dec  2 10:24:40: %SEC_LOGIN-4-LOGIN_FAILED: Login failed [user: service] [Source: 10.0.0.100] [localport: 22] [Reason: Login Authentication Failed] at 10:24:40 PCTime Fri Dec 2 2011
Dec  2 10:24:44 10.0.0.254 1432: Router: Dec  2 10:24:43: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: service] [Source: 10.0.0.100] [localport: 22] at 10:24:43 PCTime Fri Dec 2 2011

 

 

 

Szólj hozzá!

2011.08.25. 10:15 bvamos

ArcSight Logger L750MB ingyen! - De magyarországról nem elérhető!

Címkék: ingyenes logger arcsight

Ingyenesen letölthetővé tette az ArcSight az ArcSight Logger L750MB szoftverét.

Ez persze önmagában nem egy nagy hír, hiszen eddig 49 USD volt az ára, persze így legalább ennyit is meg lehet spórolni.

Az egyetlen szépséghibája a dolognak, hogy valamiért az ArcSight országokra korlátozza a letölthetőséget, és ebben a listában jelenleg nem szerepel Magyarország. Egyébként a 49 USD-s korábbi példányt sem lehetett megvásárolni magyarországról.

Az ArcSight Logger L750MB egy szoftveres verzió. A támogatott operációs rendszerek:

 

  • Red Hat Enterprise Linux (RHEL), version 5.4, 64-bit
  • Oracle Enterprise Linux (OEL) 5.4, 64-bit
  • CentOS, version 5.4, 64-bit

A további technikai specifikációt mindenki megtalálhatja a weboldalukon, inkább csak a korlátokról írnék pár szót.

  • Maximum 10 küldő eszköz. Egy eszköz egy IP számnak felel meg.
  • Napi 750 MB gyűjtött napló. Tömörítetlen méret.
  • Maximum 60 EPS.
  • Maximum 50 GB data retention (ezt nem tudom magyarul szebben írni).

Kár, hogy nekünk ez valamiért nem elérhető, de addig is maradnak a jó kis magyar logelemző szoftverek...

 

Szólj hozzá!

süti beállítások módosítása