A logok gyűjtése és feldolgozása az informatikai biztonság egyik legfontosabb feladata, amely segít megérteni a rendszer viselkedését, azonosítani a potenciális fenyegetéseket és biztosítani a szükséges adatvédelmet. A modern infrastruktúrák számára elengedhetetlen, hogy hatékonyan és biztonságosan gyűjtsenek naplókat minden szintű eszközről és alkalmazásról. Ehhez a feladathoz többféle eszköz is rendelkezésre áll, melyek közül az egyik legismertebb és legnépszerűbb a Filebeat.

A Filebeat egy könnyű, nyílt forráskódú loggyűjtő eszköz, amely a Elastic Stack része. Képes különböző naplóformátumok feldolgozására, konvertálására JSON formátumba és az Elastic Common Schema (ECS) névkonvenció szerint történő átalakítására, így megkönnyíti a különböző forrásokból származó adatok integrálását. Használata különösen előnyös olyan környezetekben, ahol számos különböző alkalmazás és eszköz működik, például különféle tűzfalak vagy routerek, amelyek eltérő naplóformátumokat használnak.

A Filebeat előnyei közé tartozik, hogy képes automatikusan konvertálni a naplókat JSON formátumba, és képes alkalmazni az ECS szabványt anélkül, hogy komplex konfigurációkat igényelne. Ráadásul az eszköz képes több különböző célállomásra is naplókat küldeni, beleértve a Logstash-t, Kafka-t, Redis-t, vagy akár egyszerű szöveges fájlokat is. Az eszköz rendkívül könnyen beállítható és gyorsan integrálható a meglévő környezetekbe, de természetesen vannak korlátai is. Például a Filebeat csak egyetlen kimeneti célt képes kezelni egyszerre, míg a Logstash többféle kimeneti lehetőséget kínál, de nagyobb erőforrást igényel.

Fontos azonban kiemelni, hogy a Filebeat nem rendelkezik annyira fejlett szűrési képességekkel, mint a Logstash. Ha komplex adatreprezentációkat vagy több lépcsős adatfeldolgozást szeretnénk végrehajtani, akkor valószínűleg a Logstash a megfelelőbb választás. A Filebeat ezzel szemben egyszerűbb és gyorsabb megoldást kínál olyan környezetekben, ahol az alapvető naplógyűjtési igények elegendőek, és nem szükséges komplex feldolgozást végezni az adatokon.

A TLS (Transport Layer Security) konfigurációk szerepe szintén kulcsfontosságú lehet a naplók biztonságos kezelésében. Az SSL/TLS protokollok alkalmazása lehetővé teszi, hogy a naplók titkosított formában jussanak el a gyűjtő eszközökhöz, például a Filebeat-hez, így biztosítva azok integritását és védelmét a közvetítés során. Az SSL/TLS konfigurációk megfelelő beállítása elengedhetetlen, hogy elkerüljük a naplók illetéktelen hozzáférését és módosítását.

A naplók titkosítása különösen fontos a felhőalapú vagy több helyszínen működő környezetekben, ahol az adatok többféle csatornán keresztül utaznak, és a védelmükre különböző titkosítási szabványokat kell alkalmazni. Az SSL/TLS használata ezen kívül biztosítja a hitelesítést is, lehetővé téve, hogy a naplók csak a megfelelő eszközökhöz jussanak el, megelőzve a jogosulatlan hozzáférést.

A konfigurációk és naplók kezeléséhez elengedhetetlen a verziókezelő rendszerek, mint a Git használata, amelyek segítségével biztonságosan menthetjük el a naplókat, és nyomon követhetjük a változásokat. A Git lehetővé teszi, hogy könnyedén nyomon kövessük a naplókon végzett módosításokat, és visszaállítsuk a konfigurációkat szükség esetén.

Fontos, hogy a naplók megfelelő kezeléséhez a loggyűjtési eszközöket – mint a Filebeat – helyesen konfiguráljuk, és figyeljünk a rendszeres frissítésekre és karbantartásra. Ha nem kezeljük megfelelően a logokat, azok gyűjtése és elemzése nem lesz hatékony, és az esetleges incidensek és problémák gyors felismerése is lehetetlenné válik.

A Filebeat alkalmazásakor kiemelten fontos a naplók kimeneti irányait is figyelembe venni, mivel az eszköz egyszerre csak egy kimeneti célt képes kezelni. Az egyszerűsített beállítások és a kevesebb konfigurációs lépés ellenére a Filebeat kiválóan használható kisebb vagy közepes méretű környezetekben, ahol nincs szükség a naplók komplex feldolgozására vagy sokféle célállomásra történő küldésére. A TLS használata biztosítja, hogy az adatok titkosítva érkezzenek a célállomásokra, így megvédve azokat az illetéktelen hozzáféréstől.

Ahogy a könyvben előrehaladunk, a további fejezetekben különböző loggyűjtési módszereket és eszközöket ismerhetünk meg, mint a Winlogbeat, az Elastic Agent és a Rsyslog, amelyek mind segítenek a naplók hatékonyabb kezelésében és továbbításában. Az eszközök és technikák megfelelő kombinálása biztosítja, hogy a naplógyűjtés és a biztonsági infrastruktúra zökkenőmentesen működjön.

Hogyan lehet Redis-t népszerűsíteni és replikálni fenyegetési adatokhoz?

A Redis egy nyílt forráskódú in-memory adatbázis, amelyet széles körben használnak a gyors adatkezeléshez és a nagy teljesítményű alkalmazásokhoz. Különösen hasznos lehet, ha gyors keresést és adatfeldolgozást kell végezni a fenyegetési intelligencia (threat intelligence) területén, ahol az adatok gyors és hatékony kezelése kulcsfontosságú a támadások észlelésében és megelőzésében. A Redis nemcsak az adatokat tárolja, hanem lehetőséget ad azok gyors keresésére is, ami különösen fontos a fenyegetési indikátorok (Indicator of Compromise – IoC) kezelésénél. A Redis a kulcs-érték párosok tárolására és gyors hozzáférésére épít, és éppen ezért ideális választás a biztonsági alkalmazások számára, ahol az adatok gyorsan változhatnak, és a hozzáférés késlekedés nélküli kell legyen.

A Redis által biztosított funkcionalitás lehetővé teszi, hogy fenyegetési indikátorokat hatékonyan gyűjtsünk, tároljunk, és replikáljunk több szerver között. Ez a fajta adatbázis-kezelés különösen hasznos a kiberbiztonsági rendszerekben, ahol a fenyegetési adatok folyamatosan frissülnek, és a releváns információk gyors elérésére van szükség. A Redis segíthet a fenyegetési adatok központi tárolásában és a hozzájuk való gyors hozzáférés biztosításában.

A Redis népszerűsítésének és replikálásának folyamata a következő alapvető lépésekből áll: először be kell tölteni a fenyegetési adatokat, majd a Redis kulcs-érték párok segítségével strukturálni és tárolni kell őket, végül a replikáció révén biztosítani kell az adatok rendelkezésre állását több Redis szerver között.

A Redis replikáció biztosítja az adatok redundanciáját és elérhetőségét a hálózaton belül. Ez különösen fontos akkor, ha több geográfiai helyszínen dolgoznak, vagy ha a rendelkezésre állás kritikus fontosságú a rendszer működésében. A Redis folyamatosan szinkronizálja az adatokat a fő szerver és a replikált példányok között, így biztosítva a gyors adatlekérést és a fenyegetések hatékony azonosítását.

A Redis használata azonban nem korlátozódik csak a tárolásra. A Redis-képes alkalmazások integrálása lehetővé teszi az adatok gyors feldolgozását és szűrését, mielőtt azok egy végső adatbázisba, mint az Elasticsearch, kerülnek. Így az elemzők azonnali hozzáférést nyerhetnek a releváns fenyegetési indikátorokhoz, és gyorsan reagálhatnak a potenciális kockázatokra.

A Logstash egy másik kulcsfontosságú eszköz, amely segít a fenyegetési indikátorok gyűjtésében és feldolgozásában. A Logstash képes a különböző formátumú adatok átalakítására, előkészítésére és továbbítására a Redis adatbázisba. Az adatok áramlása a Logstash és a Redis között az automatizálás révén folyamatos és megbízható lesz. A fenyegetési indikátorokat, mint például az IP-címek, domainnevek és URL-ek, kulcs-érték párokként lehet tárolni, így azokat gyorsan előhívhatjuk és ellenőrizhetjük.

Fontos megérteni, hogy a fenyegetési adatok nemcsak statikus információk, hanem dinamikusan változó, folyamatosan frissülő adatok, amelyeket időről időre újra kell feldolgozni és frissíteni. Ehhez a rendszernek képesnek kell lennie arra, hogy kezelje az adatokat, amint azok változnak, és biztosítsa az adatok frissítését minden egyes replikált Redis példányban.

A saját API-k kulcsainak létrehozása elengedhetetlen ahhoz, hogy egyéni és testreszabott hozzáférést biztosítsunk a fenyegetési adatokhoz. A Redis biztosítja az API-hozzáférést, amely lehetővé teszi a fejlesztők és analitikusok számára, hogy a kívánt adatokat gyorsan és biztonságosan hozzáférhessék. Az API-k révén az alkalmazások egyszerűen integrálhatják a Redis-t a saját rendszereikbe, lehetővé téve a fenyegetési adatok valós idejű és dinamikus felhasználását.

A fenyegetési adatok kezelésében és feldolgozásában az is kulcsfontosságú, hogy ne csak a nyers adatokat tároljuk, hanem azok értékesítését is végezzük. A deduplikálás és az adatok gazdagítása elősegíti a pontosabb és megbízhatóbb fenyegetési elemzést, miközben csökkenti az adatduplikációt és a felesleges információkat. A gazdagítás során a Logstash segítségével extra metaadatokat adhatunk hozzá az IoC-khoz, például földrajzi helyekhez, típusokhoz és kapcsolódó kockázatokhoz, ami további értéket ad a feldolgozott adatokhoz.

Az adatok valós idejű és automatizált feldolgozása, valamint azok gyors hozzáférhetősége a Redis és Logstash használatával alapvető fontosságú a gyors és hatékony fenyegetési detektálásban. Az adatok replikálása és a megfelelő API-k biztosítása lehetővé teszi a fejlesztők és az analitikusok számára, hogy egyszerűen és gyorsan hozzáférjenek az információkhoz, miközben biztosítják azok integritását és elérhetőségét.

Hogyan konfiguráljuk a Redis és Memcached rendszereket a fenyegetettségi információk tárolására és kezelésére?

A biztonság és az adatfeldolgozás hatékonysága érdekében érdemes a különböző rendszereinket dedikált konfigurációs fájlok segítségével szétválasztani. Ez lehetővé teszi olyan eszközök, mint a Logstash, számára, hogy kezeljék az adatok bemenetét, átalakítását és kimenetét, míg a cache-k, mint például a Redis és a Memcached, memória alapú adatbázisként működhetnek. A következőkben bemutatjuk a Redis és Memcached telepítését és konfigurálását, különös figyelmet fordítva a TLS titkosításra, amely elengedhetetlen a biztonságos adatkommunikációhoz.

A Redis és Memcached telepítése

Először is győződjünk meg róla, hogy a hosztnevek helyesen feloldódnak, hogy a TLS kapcsolatokat biztosítani tudjuk. A projekt szervereinket két csoportra osztjuk: az első a kiberfenyegetettségi információs (CTI) node, míg a második csoport a data node-ok, amelyek Logstash-t használnak az adatfolyamok feldolgozására. A CTI node neve threatintel.local, míg a data node-ok nevei logstash01.local és logstash02.local. Az alábbiakban az IP címek bejegyzésével biztosítjuk, hogy a gépek egymás között kommunikálni tudjanak:

lua
$ sudo nano /etc/hosts
192.168.8.130 threatintel 192.168.8.130 threatintel.local 192.168.8.131 logstash01 192.168.8.131 logstash01.local 192.168.8.134 logstash02 192.168.8.134 logstash02.local

Ezután telepítsük a szükséges eszközöket a következő parancsokkal:

  • A kiberfenyegetettségi információs node-on:

    ruby
    $ sudo apt install filebeat logstash redis-server -y
  • A data node-okon:

    ruby
    $ sudo apt install filebeat logstash redis-server memcached -y

A telepítést követően ne feledkezzünk meg a Redis gem telepítéséről:

shell
$ sudo /usr/share/logstash/bin/ruby -S gem install redis

A Redis és Memcached alapértelmezetten elindulhatnak a háttérben, mint szolgáltatások. Ha szükséges, leállíthatjuk őket a következő parancsokkal:

shell
$ sudo systemctl stop redis-server memcached
$ sudo systemctl disable redis-server memcached

TLS engedélyezése

Ebben a projektben a különböző eszközök egymás közötti kommunikációját TLS (Transport Layer Security) védi. A Logstash például Unix socket-en keresztül kapcsolódik a Redis-hoz, és a kiberfenyegetettségi node a logstash01 és logstash02 szerverekre titkosított kapcsolaton keresztül továbbítja a cache kulcsokat.

A biztonságos kommunikáció érdekében szükség van egy wildcard tanúsítványra, amely biztosítja, hogy a különböző alkalmazások hozzáférjenek az SSL fájlokhoz. A tanúsítványt úgy kell konfigurálnunk, hogy a threatintel.local, logstash01.local és logstash02.local hostname-ek szerepeljenek benne, elkerülve a jövőbeli, wildcard tanúsítványokkal kapcsolatos problémákat.

A tanúsítványok kezelésére hozunk létre egy új csoportot, amely hozzáférést biztosít a szükséges fájlokhoz. Az alábbi parancsok létrehozzák a bookproject nevű csoportot és hozzáadják a felhasználókat:

shell
$ sudo addgroup bookproject $ for i in {j,logstash,redis,memcached}; do sudo usermod -aG bookproject $i; done $ exec su -l j

Miután létrehoztuk a szükséges könyvtárakat és beállítottuk a megfelelő engedélyeket, letöltjük a wildcard SSL fájlokat a TLS szerverünkről. Ne felejtsük el a fájlokat a megfelelő csoport tulajdonába helyezni és megfelelő jogosultságokat adni nekik.

A Redis konfigurálása

A Redis konfigurálásához először egy 50 karakter hosszú jelszót kell generálnunk, amelyet később autentikációra használunk:

shell
$ openssl rand 50 | openssl base64 -A

Ezután készítsünk biztonsági másolatot a Redis alapértelmezett konfigurációs fájljáról, majd módosítsuk azt a következő parancsokkal:

shell
$ sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.original $ sudo nano /etc/redis/redis.conf

A Redis alapértelmezetten a localhost-ra figyel, de ha valamilyen okból a bind sor kommentálva van, akkor minden elérhető interfészen figyelni fog. Az alábbi sornak aktívnak kell lennie:

nginx
bind 127.0.0.1 ::1

Ezután adjuk hozzá a generált jelszót a requirepass beállításhoz és engedélyezzük a Unix socket használatát, hogy a helyi alkalmazások közvetlenül kapcsolatba léphessenek a Redis-szal TCP használata nélkül:

swift
requirepass ZtyziOSFGAcbGy807... unixsocket /var/run/redis/redis.sock

A beállítások után a Redis szolgáltatást újra kell indítani, hogy a módosítások életbe lépjenek.

Fontos tudnivalók

A Redis és Memcached eszközök helyes konfigurálása elengedhetetlen a kiberfenyegetettségi információk hatékony és biztonságos tárolásához. A TLS titkosítás biztosítja, hogy az adatok védve legyenek, amikor az eszközök kommunikálnak egymással, akár ugyanazon a gépen, akár hálózaton keresztül. A memória alapú cache eszközök, mint a Redis és Memcached, jelentősen gyorsíthatják az adatkezelést, de fontos figyelmet fordítani azok biztonságos konfigurálására és karbantartására.

A fent említett konfigurációs lépések nemcsak a telepítéshez, hanem a napi működtetéshez is alapvetőek. Különösen ügyelni kell arra, hogy a rendszer hálózati beállításai, mint a tűzfal és az engedélyek, megfelelően korlátozzák a hozzáférést, hogy csak az arra jogosult eszközök férhessenek hozzá a fontos adatokhoz. Emellett érdemes az SSL tanúsítványok kezelésére, valamint a Redis és Memcached adatvédelmi beállításaira külön figyelmet fordítani, hogy elkerüljük az esetleges adatlopásokat vagy más biztonsági fenyegetéseket.