syslog-ng web GUI-k
A múlt hétvégén a Szabad Szoftver Konferencia 2011-en adtam elő “syslog-ng web GUI-k” címmel. Ebben bemutatom, hogy szerintem miért jó választás a syslog-ng, miért fontos a központi log gyűjtés, a webes felületek előnyeit és néhány konkrét alkalmazást is.
Mi a syslog?
A Wikipedia definíciója szerint a syslog egy szabvány a programüzenetek gyűjtésére. Lehetővé teszi, hogy el lehessen különíteni az üzenetet generáló programot az üzeneteket gyűjtő és feldolgozó alkalmazásoktól. Eredetileg a sendmail kiegészítőjének készült, de igen hamar rájöttek hogy ez sokkal általánosabban felhasználható. Így most már szinte minden operációs rendszer és hálózati eszköz támogatja a syslog használatát. Az eredeti megvalósítás fájlba és hálózatra tudta elküldeni az üzeneteket, az újabbak már adatbázisszervernek és még számtalan fogadó oldalnak képesek továbbítani őket.
Miért syslog-ng?
A syslog szabvány már nagyon sok éve velünk van, így számtalan alkalmazás született a megvalósítására. Ezek közül az egyik a syslog-ng. Hogy miért érdemes syslog-ng-t használni, ha egy átlagos Linux-disztribúcióban három különböző syslog megvalósítás is található? Csak néhány érv, fontossági sorrend nélkül:
- gyorsaság, nagy teljesítmény, függetlenül a konfiguráció hosszától, szűrőktől stb.
- sokféle forrás és cél: fájl, socket, pipe, program, TCP, UDP, titkosított (SSL), adatbázis (libdbi)
- patterndb: üzenetelemzés, akár korrelálás is
- makrók, sablonok, amikkel az üzenetek könnyen formázhatóak, külön válogathatóak stb.
- áttekinthető, logikus konfiguráció, ami pl. lehetővé teszi, hogy ha egy komplex szűrési feltételt több helyen is használunk, akkor azt elég legyen egy helyen definiálni és a többi helyen csak hivatkozni rá
- minden kiadáshoz elérhető részletes, jól érthető dokumentáció
- rengeteg platform támogatása: Linux, *BSD, HP-UX, AIX, Solaris stb.
- „made in Hungary”
Ezek közül önmagában bármelyik jelentős előny, de így kombinálva még inkább.
Mire jó a központi log gyűjtés?
A rendszerüzenetek központi gyűjtésének számtalan előnye van, kényelmi, praktikus, biztonsági és megfelelőségi is.
Kezdjük a kényelemmel. Ha nincsen központi log gyűjtés, akkor ha bármilyen problémát érzékelünk, akkor kénytelenek vagyunk bejelentkezni az adott gépre, megkeresni, hogy az adott eseményről vajon hova képződnek a logok, majd elkezdeni keresgélni benne. Ha az esemény több gépet is érint, akkor ugyanezt végig kell játszani további gépeken is. Ehhez be kell jelentkezni több gépre is, tudni kell a jelszavakat, a könyvtárstruktúrát stb. Központi log gyűjtés esetén egy helyen kell keresgélni az eseményeket egységes struktúrában, amivel időt és energiát takaríthatunk meg.
Az időt és energiát nem csak azzal takarítjuk meg, hogy kényelmesen hozzáférünk a logokhoz. Ha azt akarjuk megnézni, hogy mitől lassú az szerverünk, lehet, hogy már akkora a load, hogy percekig tart, amíg egyáltalán bejutunk a szerverre, majd a logok megjelenítése is nagyon lassan megy. Vagy már be se jutunk, a konzolon sem. De központi loggolás esetén amíg az fsck-n dolgozik a gép, addig is már lehet keresni a hiba okát, mert a rendszernapló nem csak a vizsgált gépen található meg.
És persze biztonsági okokból is jó, ha a logok nem csak helyben vannak meg, ha nem egy másik helyen is. Ha megtörnek egy gépet, akkor az egyik első teendő a logok törlése és / vagy manipulálása, a nyomok eltüntetése részeként. Sokat viszont nem ér a helyi ügyeskedés, ha a központi log gyűjtő szerveren már ott van, hogy honnan és hogyan jutott be a támadó.
Ezzel eljutottunk a megfelelőséghez. A fentiek miatt nagyon sok szituációban a törvényi és egyéb szabályozások megkövetelik a központi log gyűjtést. Ilyenek például a PCI-DSS, COBIT vagy Magyarországon a HPT.
Web GUI grep helyett?!?
Amiket idáig elmondtam a központi naplózásról, az jó esetben kevés Linux-felhasználónak lesz újdonság. Akinek meg az, remélem hogy ezek alapján belátja, hogy érdemes így csinálni. Viszont az előadás címében nem a központi log gyűjtés, hanem web GUI szerepel, ami már a hard core linuxosoknál kiverheti a biztosítékot. Miért kéne mindenféle színes, szagos, szélesvásznú webes felületeket használni, ott vannak a hagyományos linuxos eszközök, a grep és az awk, a gnuplottal pedig még grafikont is lehet rajzolni.
A grep, awk és társaik tényleg fantasztikus eszközök. De komplex kereséseknél vagy sok adatnál az SQL hátterű webes felületek sokkal gyorsabbak és hatékonyabbak. A bonyolult kereséseket pár egérkattintással össze lehet állítani, és ha tudjuk, hogy erre a későbbiekben is szükségünk lehet, akkor a legtöbb esetben a keresést el lehet menteni.
Ha másodpercenként több ezer üzenetünk érkezik be, könnyű eljutni a sok millió soros logokhoz. Az adatbázisok indexei ilyenkor is lehetővé teszik a Google-szerű válasz időket, azaz sok milliós adatsorból bonyolult lekérdezésekre is a másodperc tört része alatt választ kapunk. Ugyanez greppel akár két nagyságrenddel is lassabb lehet, 0,1 s helyett 10 s jellegű lekérdezési időket mértem kb. 5000000 üzenetnél.
Összességében a web GUI-k egyszerűsítik és gyorsítják a munkát, azaz sokkal gyorsabban lehet egy probléma végére járni, mint ha nem használnánk őket.
Syslog-ng web GUI-k
Most hogy már tudjuk, hogy miért érdemes a logjainkat központilag gyűjtenünk, és hogy webes felületen szeretnénk keresni bennük, ideje pár konkrét alkalmazást is megvizsgálni. Az elmúlt fél évben sok syslog-ng-n alapuló vagy syslog-ng-vel együtt működő alkalmazást kipróbáltam. Volt köztük a felhő szolgáltatásoktól kezdve az egyszerű php scripten át az extrém forgalomra felkészített rendszerekig minden. Ezekből emelem ki, amiket leginkább fontosnak éreztem, mutatom be röviden, sorolom fel előnyeit, hátrányait, ill. egy képernyőképpel is illusztrálom, hogy is néz ki.
Loggly
A Loggly egy felhő alapú szolgáltatás, azaz nincs szükség, hogy helyben bármilyen dedikált szervert telepítsen az ember. A használata nagyon egyszerű. Először is létre kell hozni egy felhasználói nevet a Loggly webes felületén. Bejelentkezés után egy varázsló megad minden információt ahhoz, hogy perceken belül már nézegethessük a beérkező logjainkat. Pár egérkattintás elég ahhoz, hogy a syslog-ng konfigurációba minimális módosítással bemásolható konfiguráció minta megjelenjen a képernyőn. Egyedül a log forrás átírására lehet szükségünk.
A Loggly üzleti alkalmazás, ahol az árazás függ a naponta beérkező üzenetek mennyiségétől és attól, hogy ezeket mennyi ideig szándékozzuk őrizgetni. A szolgáltatás bizonyos korlátok mellett ingyen is elérhető. Ezek szerencsére nem minőségi korlátok, azaz minden funkciója elérhető, de a napi maximális log mennyiség és a tárolási idő erősen limitált. Aki azonban csak egy-két kisebb gépet üzemeltet, valószínű jól el lesz ezekkel a korlátokkal is.
A webes felület nagyon kényelmes, letisztult. És hogy a hard core linuxosok is otthonosan érezzék magukat: parancssoros. Az első pár parancs összeállítása után már könnyen fog menni a lekérdezések és grafikonok készítése. A parancsok ezek után már könnyen előhívhatóak a historyból is.
Az elmúlt hetekben jelent meg egy új szolgáltatásuk is, az „Alert Birds”, ami lehetővé teszi, hogy ha bizonyos keresési feltételeknek megfelelő logok érkeznek be, akkor erről az Alert Birds figyelmeztetést küldjön. Ez lehet e-mail, flash alkalmazás, különböző API-k stb.

A Loggly ajánlható azoknak, akik új helyi rendszer üzembe helyezése nélkül gyorsan szeretnének központi log gyűjtő megoldáshoz jutni.
Előnyök:
- nincs szükség helyi szerver üzemeltetésére
- gyors és egyszerű használatba vétel
- UNIX életérzés

- API a naplózáshoz, lekérdezéshez, konfiguráláshoz
Hátrányok:
- nem helyben van, azaz a hálózati kimaradások log vesztéshez vezethetnek
- az Internet kapcsolat gyakran túl drága nagy mennyiségű log feltöltéséhez
- a syslog üzenetek néhány része nem tárolódik, nem kereshető (pl. facility, severity)
További információ a Loggly honlapján érhető el: http://www.loggly.com/
További felhő szolgáltatások
Az első kipróbálható felhős log szolgáltató a Loggly volt. Azóta továbbiak is megjelentek. Egyikük, a Logentries (http://logentries.com/), amelyiket kipróbáltam, és sok érdekes technológia található benne, többek között saját log küldő függvények a legfontosabb programnyelvekhez, platformokhoz, keretrendszerekhez. A másik a PaperTrail (https://papertrailapp.com/), amelyiket még nem volt alkalmam kipróbálni.
Loganalyzer
A Loganalyzer egy egyszerű php alkalmazás, amely alkalmas a MySQL adatbázisba gyűjtött logok böngészésére és keresésére. Eredetileg nem a syslog-ng-hez készült, de pár apróbb korláttal (nincs külön mező a programnévnek és a processzazonosítónak), alkalmas syslog-ng-ből érkező logok megjelenítésére is. Minthogy MySQL-t használ a logok tárolására és indexelésére is, így nem túl jól skálázódik. A MySQL-be az adatok egyszerű „insert”-tel kerülnek be, ami másodpercenként pár száz üzenetnél többre nem elég és pár millió üzenetnél már a keresés is elég lassú.
A webes felület kicsit túlzsúfolt, rengeteg olyan információval, gombbal, adománygyűjtő linkkel stb. amikre a napi használatban nincs szükség, viszont a képernyő egy jelentős hányadát elfoglalják. De ha sikerült mindent jól beállítani és a képernyő közepére koncentrálni, akkor minimális syslog ismeretekkel és a dokumentáció bújása nélkül is könnyen használható.
A Loganalyzer egy egyszerű megoldás azoknak, akiknek nincs túl sok logja, és egy teljesen szabad webes felületen szeretne hozzáférni a logjaihoz.
- egyszerű telepítés és webes konfiguráció
Hátrány:
- nem skálázódik
- zsúfolt képernyő, sok hiba
További információ a Loganalyzer honlapján érhető el: http://loganalyzer.adiscon.com/
Logstash
A Logstash egy érdekes eszköz logok gyűjtésére, szűrésére és megjelenítésére. Sokféle forrásból, többek között a syslog-ng-től is tud logokat gyűjteni, különböző szűréseket, átalakításokat végezni rajtuk majd eltárolni egy adatbázisba és megjeleníteni webes felületen. A saját adatbázisán kívül még sok más kimenetre is el tudja juttatni a logokat.
Bár még mindig egy 1.0-ás verziójú szoftver annak minden korlátjával, de mégis ez az egyik legkönnyebben beüzemelhető webes felület. Elég egy fájlt letölteni, minta alapján elkészíteni egy pár soros konfigurációt és már gyűjti is a logokat fájlból vagy mint egy központi syslog kiszolgáló. A webes felület egyszerű, de nagyon könnyen és hatékonyan használható, a keresési történetek hiánya ellenére is.
MySQL helyett elasticsearch-öt használ, így sokkal jobban skálázódik, mint az egyszerű MySQL-es megoldások. Sok log esetén az adatbázis rész különválasztható akár külön gép(ek)re is, ami sokat segít a skálázódásban. Sajnos a log management még nem része a webes felületnek, így a régi logokat még csak az adatbázis-kiszolgáló közvetlen elérésével lehet kitakarítani. Ez azonban scriptekből könnyen automatizálható.
A Logstash ajánlható azoknak, akik percek alatt szeretnének üzembe helyezni egy jól skálázható rendszert és böngészni a logjaikat, majd később finomhangolni és bővíteni a rendszert.
- egyszerű indulás, csak a sun-java a függősége
- jól skálázódik
Hátrányok:
- nincs log management, hozzáférés szabályozás, mentett keresések
További információ a LogStash honlapján érhető el: http://logstash.net/
Logzilla
A Logzilla az egyik legrégebbi syslog-ng webfelület üzleti reinkarnációja, a php-syslog-ng-é. Felülete hasonlít az elődjére, de rengeteg új funkció belekerült. A felhasználói felület már támogatja a Cisco Mnemonics-ot, bővültek a grafikon készítési lehetőségek és már tud e-mail figyelmeztetéseket is küldeni. A háttérben már van LDAP integráció, üzenet deduplikálás, és külső indexelés hogy a nagy adatbázisok is gyorsan kereshetőek legyenek.
A Logzilla árazása rugalmas és sok szempontot figyelembe vesz. Így van pár kisebb korláttal rendelkező, de ingyen elérhető változata is, ami kisebb, Cisco eszközöket is használó hálózatoknak jó hír. Elérhető virtuális gépként is, ami bekapcsolás után szinte azonnal használható, de ahol nagyobb forgalom várható, ott ajánlott inkább fizikai gépre telepíteni. Ez persze sokkal több lépést igényel, de így sokkal jobb skálázódás érhető el.
A Logzilla ideális megoldás egy Cisco eszközökkel teli hálózati központba.
Előnyök:
- nagyon jó Cisco támogatás (Cisco alkalmazott fejleszti)
- nagy mennyiségű üzenet feldolgozása az optimalizált MySQL elérésnek és a sphinx-nek köszönhetően
Hátrányok:
- fizikai gépre a telepítés nehézkes
További információ a Logzilla honlapján érhető el: http://www.logzilla.pro/
ELSA: Enterprise Log Search and Archive
Az ELSA (ami egy angol rövidítés és szójáték: log archiválás és keresés vállalatoknak), egy új központi naplózó rendszer, mely a syslog-ng-n és a patterndb-n alapul. Az első komolyabb fejlesztés a BalaBiten kívül, amelyik kihasználja a patterndb-ben rejlő lehetőségeket. Az adattárolás és keresés a MySQL-re és a sphinx-re épül, melyhez egy egyszerű, de nagyon jól használható web felület csatlakozik, mely villámgyors elérést biztosít üzenetek millióihoz is.
Az ELSA új szoftver, még az 1.0-ás verziót sem érte el. Ennek velejárója, hogy szinte semmi dokumentáció nem elérhető, leginkább csak a Firefox támogatott, és azért van még mit finomítani rajta. Telepítése csak az Ubuntu 10.04-hez van leírva, de még oda is nehézkes. Jelenleg is folyik a következő verzió fejlesztése, ami szinte teljes újraírással jár, és remélhetőleg sokkal egyszerűbbé teszi a beüzemelést.
Architekturálisan az ELSA fel van készítve a folyamatos magas üzenetszámra, és hogy akár órákon át ennek többszörösét is fogadni tudja csúcs terhelésnél. A hasonló megoldásokban használt reguláris kifejezések helyett az ELSA patterndb-t használ, mely gyorsabb, és sokkal alacsonyabb az erőforrásigénye. Így képes a logokból a hasznos információt kinyerni, még hasznosabbá téve a beérkező üzeneteket. Például megkülönbözteti keresésnél, hogy egy adott IP-cím forrása vagy célja egy adott eseménynek, és nem csak úgy általánosan az IP-címre keres rá. Jelenleg a rendszer néhány Cisco, HTTP és Windows kapcsolódású patternt tartalmaz és további patternekkel bővíteni nem túl egyszerű. A következő verzióval várhatóan ez is könnyebb lesz.
A jobb skálázódás érdekében a webes felület, az adatbázis és az indexek külön gépekre is szétszórhatóak. Így érhető el, hogy extrém mennyiségű log üzenet is Google-szerű válaszidővel kereshető.
Az ELSA használata ott ajánlott, ahol extrém mennyiségű log képződik, és így minden kezdeti nehézséggel együtt is megéri az ezt kezelni képes szoftverrel foglalkozni. A tervek szerint a konferencia időpontjában már elérhető lesz egy új, sokkal könnyebben használatba vehető verzió.
- Extrém skálázhatóság (15-20 kmsg/s folyamatos és 50-100 kmsg/s csúcs terhelés akár órákig)
- patterndb, amely jobban skálázódik a regexpes megoldásoknál és valós időben kigyűjti a hasznos információt
Hátrányok:
- korai fejlesztési fázisban, dokumentáció nélkül
További információ az ELSA honlapján érhető el: http://code.google.com/p/enterprise-log-search-and-archive/
SSB – Syslog-ng Store Box
Az SSB egy naplózó szerver, amely alkalmas log üzenetek gyűjtésére, osztályozására, rendszerezésére és biztonságos tárolására. Egyaránt alkalmas üzemeltetési és megfelelőségi (compliance) célok megvalósítására. Része a syslog-ng kereskedelmi változata, mely több mint negyven platformról tudja továbbítani a logokat az SSB-nek. A webes felületen részletesen beállíthatóak a különböző felhasználhatói szerepkörök és a hozzáférés a logokhoz. Az SSB, mint a syslog-ng fejlesztői által készített webes felület, képes a legjobban kihasználni a syslog-ng kínálta lehetőségeket.
Előnyei:
- Egyszerű használatba vétel (előre telepítve vagy vmware gép)
- Részletes dokumentáció
- Aláírt, időpecsétes tárolás
- kimagasló teljesítmény
- web alapú patterndb kezelés
- magas rendelkezésre állás
- 7×24 támogatás

További információ az SSB honlapján érhető el: http://www.balabit.com/network-security/syslog-ng/log-server-appliance
Ügyfélreferencia: http://www.balabit.com/support/documentation/SSB_CredigenBank_hu.pdf





