A TLS (Transport Layer Security) tanúsítványok és kulcsok használata biztosítja, hogy az adatok titkosítva és biztonságosan továbbíthatók legyenek a Windows rendszerből a Logstash szerverre. Ebben a fejezetben lépésről lépésre bemutatjuk, hogyan konfigurálhatjuk a Winlogbeat-ot Windows rendszeren, hogyan biztosíthatjuk a kapcsolatot a Logstash segítségével, és hogyan kezelhetjük a TLS alapú titkosítást.

A tanúsítványok ellenőrzéséhez először is biztosítani kell, hogy a rendszer képes legyen autentikálni a tanúsítványt a CA (Certificate Authority) lánc fájljával. Ehhez használhatjuk az OpenSSL parancsot, amely biztosítja, hogy a tanúsítványokat és a kulcsokat helyesen konfiguráltuk:

bash
openssl verify -CAfile tls/certs/ca-chain.cert.pem tls/certs/winlogbeat.local.client.cert.pem

Ha a rendszer visszaadja az "OK" üzenetet, akkor minden rendben van a tanúsítványokkal.

Ezután, miután ellenőriztük a tanúsítványokat, frissítenünk kell a Windows rendszeren található hosts fájlt, hogy a Winlogbeat képes legyen csatlakozni a Logstash szerverhez csak a hostnév segítségével. Ehhez rendszergazdaként kell megnyitnunk a Notepad-ot, és hozzá kell adnunk a következő sort a C:\Windows\System32\drivers\etc\hosts fájlhoz:

text
192.168.65.131 logstash 192.168.65.131 logstash.local

Miután elmentettük a fájlt, az IP cím és hostnév összerendelésével a Winlogbeat képes lesz a Logstash-hoz csatlakozni.

Ezután csatlakoznunk kell egy Linux géphez, hogy átmásoljuk a szükséges TLS fájlokat, mint a nyilvános és privát kulcsokat, valamint az aláírt tanúsítványokat. Ehhez használhatunk olyan eszközt, mint a WinSCP, vagy ha ez nem áll rendelkezésre, indíthatunk egy egyszerű Python HTTP szervert a Linux gépen:

bash
python3 -m http.server 8080

Ezután a Windows gépről a curl parancs segítségével letölthetjük a szükséges fájlokat:

bash
curl.exe -O http://192.168.8.133:8080/tls/certs/ca-chain.cert.pem
curl.exe -O http://192.168.8.133:8080/tls/certs/winlogbeat.local.client.cert.pem curl.exe -O http://192.168.8.133:8080/tls/keys/winlogbeat.local.client.key.pem

A letöltött fájlokat a megfelelő helyre kell másolni, és a Winlogbeat konfigurációs fájlt a következő módon kell beállítani:

yaml
winlogbeat.event_logs: - name: Application ignore_older: 72h - name: System - name: Security - name: Microsoft-Windows-Sysmon/Operational - name: Windows PowerShell event_id: 400, 403, 600, 800 - name: Microsoft-Windows-PowerShell/Operational event_id: 4103, 4104, 4105, 4106 output.logstash: enabled: true hosts: [ "logstash.local:5044" ] ssl.enabled: true ssl.verification_mode: full ssl.certificate: "C:\\Program Files\\Winlogbeat\\winlogbeat.local.client.cert.pem" ssl.key: "C:\\Program Files\\Winlogbeat\\winlogbeat.local.client.key.pem" ssl.key_passphrase: "abcd1234" ssl.certificate_authorities: [ "C:\\Program Files\\Winlogbeat\\ca-chain.cert.pem" ]

A fenti konfiguráció biztosítja, hogy a Winlogbeat csak olyan kapcsolatokat fogadjon el, amelyek hitelesítettek a CA lánc tanúsítványaival, és SSL/TLS titkosítást használ.

Ezután következik a Winlogbeat tesztelése a konfigurációs fájl helyességére. Ehhez a következő parancsot kell futtatni:

powershell
.\winlogbeat.exe test config

Ha a konfiguráció helyes, akkor megjelenik az "OK" üzenet. Ezután tesztelhetjük a hálózati kapcsolatot is a Logstash szerverrel:

powershell
.\winlogbeat.exe test output

A teszt során, ha minden jól működik, akkor "OK" üzenetet kapunk, és a kapcsolat sikeresen létrejön.

A konfigurációt követően a Winlogbeat szolgáltatást a következő parancsokkal telepíthetjük:

powershell
Set-ExecutionPolicy bypass
.\install-service-winlogbeat.ps1

A telepítést követően ellenőrizhetjük a szolgáltatás állapotát:

powershell
Get-Service -name Winlogbeat

Ha a szolgáltatás "Running" állapotban van, akkor a Winlogbeat sikeresen elkezdte a naplók továbbítását a Logstash szerverre.

Ezután érdemes visszaállítani az alapértelmezett PowerShell végrehajtási politikát:

powershell
Set-ExecutionPolicy restricted

Az előző lépésekkel biztosíthatjuk, hogy a Winlogbeat telepítése és konfigurálása sikeres legyen. Ha mindent helyesen állítottunk be, a Windows rendszerről származó eseménynaplók a Logstash rendszerbe áramlanak, és készen állnak további feldolgozásra.

Mindezek mellett fontos, hogy a Winlogbeat és a Logstash közötti titkosított kapcsolat biztosítása érdekében folyamatosan figyeljük a tanúsítványok érvényességét és a hálózati beállításokat. A helyes SSL/TLS konfiguráció elengedhetetlen ahhoz, hogy a rendszer biztonságosan és hibamentesen működjön.

Hogyan konfiguráljunk és kezeljünk SSL kapcsolatokat Kafka-ban Ansible segítségével?

A Kafka, mint elosztott üzenetkezelő rendszer, gyakran használja az SSL-titkosítást a kommunikáció biztonságának biztosítására. Az Ansible segítségével automatizálhatjuk ennek a titkosításnak a beállítását, és biztosíthatjuk, hogy az SSL konfiguráció minden Kafka-broker számára helyesen legyen implementálva. A következő szakaszban bemutatjuk, hogyan lehet dinamikusan generálni SSL konfigurációs fájlokat és hogyan kezelhetjük az SSL kulcsokat és tanúsítványokat egy Kafka környezetben.

A konfigurációs fájlokat template-ek segítségével generálhatjuk, és az Ansible saját Jinja templating rendszerét használva hozhatunk létre dinamikus fájlokat, amelyek tartalmazzák az egyedi hostneveket és egyéb paramétereket. Az alábbi példa azt mutatja, hogyan használhatjuk a for ciklust és az if-else szerkezeteket a különböző Kafka broker-ek konfigurációjának dinamikus kezelésére.

Először is, szükséges egy szkriptekből álló fájl, amely meghatározza, hogyan kell generálni az SSL kapcsolatot a Kafka konfigurációjában. A feladatok a client-ssl.properties fájl létrehozását végzik el, amely tartalmazza a Kafka broker-ek címét, valamint az SSL kulcsokat és tanúsítványokat. A fájl neve dinamikusan jön létre az Ansible változók és a hostnevek alapján. A generált fájlok minden egyes brokerhez egyediek lesznek, így könnyebben nyomon követhetők az egyes környezetekben.

A tasks/kafka-configs.yml fájlban lévő parancsok a következő módon néznek ki:

yaml
- name: Generate and Copy client-ssl.properties to Remote delegate_to: localhost template: src: templates/client-ssl.properties.j2
dest: "output/client-ssl.properties__{{ hostvars[inventory_hostname].basename }}{{ domain }}"
- name: Remote Double Quotes in server.properties delegate_to: localhost replace: path: "output/client-ssl.properties__{{ hostvars[inventory_hostname].basename }}{{ domain }}" regexp: '\"' replace: ""

Ebben a példában a template modul a client-ssl.properties.j2 fájlt egyedi broker-hez generálja a konfigurációs paraméterekkel, mint például a bootstrap.servers, ssl.keystore.location, és ssl.truststore.location. Miután a fájlok elkészültek a helyi gépen, a replace modul eltávolítja az esetleges felesleges idézőjeleket, amelyek a sablon generálásakor keletkeztek.

Az SSL kulcsokat és tanúsítványokat az Ansible változói segítségével adhatjuk meg, biztosítva a titkosított kommunikációt a Kafka broker-ek között. Az SSL keystore és truststore helyeit, valamint a hozzájuk tartozó jelszavakat a következő módon adhatjuk meg:

yaml
security.protocol=SSL
ssl.keystore.location="{{ directories.kafka.certs }}{{ hostvars[inventory_hostname].basename }}{{ domain }}.keystore.jks" ssl.keystore.password="{{ keystore_password }}" ssl.key.password="{{ ssl_key_password }}" ssl.truststore.location="{{ directories.kafka.certs }}truststore.jks" ssl.truststore.password="{{ truststore_password }}"

Ez a konfiguráció lehetővé teszi, hogy minden broker saját SSL beállításokkal rendelkezzen, ami biztosítja a titkosított kapcsolatokat a Kafka rendszerben.

A következő lépés az, hogy ezeket a konfigurációkat végrehajtjuk az Ansible playbook-ban. A playbook_template.yml fájl így néz ki:

yaml
- hosts: all become: no gather_facts: no vars_files: - vars/vars.yml - vars/vault.yml tasks:
- name: Generate File From Template
ansible.builtin.include_tasks: file: tasks/kafka-configs.yml

Ezzel a playbook-kal az Ansible végrehajtja a szükséges feladatokat, és generálja az SSL konfigurációs fájlokat minden brokerhez. A fájlok az output könyvtárban jelennek meg, és ezek egyedi neveket kapnak, amelyek segítenek a fájlok nyomon követésében.

Fontos, hogy a fenti példákban szereplő fájlokat és konfigurációkat nem szükséges manuálisan telepíteni, mivel az Ansible képes automatizálni a Kafka konfigurációjának minden aspektusát, ideértve az SSL beállításokat is. Az automatikus generálás nemcsak időt takarít meg, hanem csökkenti az emberi hibák lehetőségét is, amelyek a kézi konfigurálás során előfordulhatnak.

Az SSL konfigurálása mellett az Ansible használata lehetővé teszi a GPG kulcsok kezelését és az Elasticsearch felhasználói jelszavak automatikus frissítését is. Az automatikus kulcsimportálás és jelszókezelés biztosítja, hogy minden szükséges komponens megfelelően működjön anélkül, hogy manuális beavatkozásra lenne szükség.

A megfelelő kulcsok és tanúsítványok használata elengedhetetlen a biztonságos kommunikáció érdekében. Az SSL kapcsolat nemcsak titkosítja az adatokat, hanem biztosítja, hogy az adatok ne kerüljenek illetéktelen kezekbe. Az SSL-titkosítás és a megfelelő hitelesítési mechanizmusok alkalmazása különösen fontos, ha érzékeny információkat kezelünk a Kafka rendszerben, mint például pénzügyi adatokat vagy személyes információkat.

Hogyan történik a fenyegetésadatok gyorsítótárazása és ellenőrzése a Memcached segítségével?

A fenyegetésadatok hatékony kezelése és gyors kereshetősége kulcsfontosságú eleme a modern biztonsági rendszereknek. Az adatok folyamatos áramlásának és változásának figyelembevételével szükség van olyan megoldásokra, amelyek biztosítják, hogy az információk gyorsan elérhetőek legyenek az elemzők és rendszerek számára, miközben fenntartják a szükséges szintű biztonságot és adatkezelést. A Memcached, mint elosztott memória-alapú gyorsítótár, ideális eszközként szolgálhat az ilyen típusú fenyegetésadatok tárolására és kezelésére.

A fenyegetésadatok tárolása gyakran különböző formátumokban történik: IP-címek, fájlhashek, URL-ek és egyéb egyedi mutatók formájában. A fent említett konfigurációs példában azt láthatjuk, hogyan tárolhatjuk ezeket az adatokat egy Memcached gyorsítótárban, hogy a rendszer képes legyen gyorsan ellenőrizni azokat a lehetséges fenyegetéseket, amelyek az adott eseményekhez tartoznak.

Először is fontos, hogy az egyes adatokat standardizáljuk, mielőtt azok a gyorsítótárba kerülnek. A mutate szűrő segítségével az egyes mezők értékeit kisbetűssé alakítjuk, hogy biztosítsuk a keresés egységességét. Az ilyen típusú adatokat, mint például az imphash, ssdeep, url, ip, és más mutatók, a Memcached-be történő tárolás előtt először alaposan előkészítjük. A következő lépés az, hogy az egyes mutatókat a Memcached-be helyezzük, amelyet a memcached szűrő segítségével valósítunk meg. A gyorsítótárba helyezés során a mezők értékei kulcsként szolgálnak, míg a hozzájuk tartozó üzenetek a megfelelő értékeket tartalmazzák.

Ezek az adatok később visszakereshetőek, ha új fenyegetésadatokat kell összevetni a már tároltakkal. A megfelelő visszakereséshez használt get parancs segítségével az adott mutatók értékeit, például a fájlhasheket vagy a domain neveket, lekérhetjük a Memcached-ből. Amennyiben találunk egyezést, az adatokat az elemzők számára tagként is jelöljük, hogy könnyen nyomon követhessék azokat.

A konfigurációs fájlok, mint például a memcached-get-indicators.conf, lehetővé teszik a folyamatos adatellenőrzést, és biztosítják, hogy az új adatokat mindig hozzáférhetők maradjanak. Ezen konfigurációk használatával a fenyegetésadatok kezelése egyszerűsödik, mivel az információk gyorsan elérhetők, és az elemzők számára azonnali értesítést adhatunk, ha az új adat egy meglévő mutatóval egyezik.

A Memcached gyorsítótárának alkalmazása nemcsak az adatok tárolását teszi hatékonyabbá, hanem segít megelőzni az adatforgalom lelassulását is. Az adatok gyors visszakeresése révén csökkenthető a hálózati terhelés és gyorsítható a fenyegetések felismerése. A gyorsítótárba történő adatírás és olvasás folyamatosan biztosítja, hogy minden új vagy módosított mutató gyorsan ellenőrizhető legyen, anélkül, hogy a rendszer teljesítményét befolyásolná.

A fenyegetésadatok gyorsítótárazása azonban nem mentes a kihívásoktól. Az egyik legnagyobb probléma, amelyet figyelembe kell venni, a lehetséges adateltérések (drift). Ha egy szerver karbantartás miatt le van állítva, előfordulhat, hogy az adott időszak alatt elmaradt mutatókat nem rögzítik a gyorsítótárban. Ebben az esetben célszerű egyedi szkripteket létrehozni, amelyek képesek pótolni az elmaradt adatokat a rendszer visszaállítása után.

A rendszeres adatellenőrzés és a lehetséges eltérések kezelése érdekében a szakemberek számára ajánlott, hogy figyelemmel kísérjék a gyorsítótár állapotát és szükség esetén beavatkozzanak, például egyedi mutatók feltöltésével a gyorsítótárba. A manuális tesztelés során a kimenet a stdout használatával is megjeleníthető a terminálban, hogy az elemzők könnyen vizualizálhassák az új adatokat és azok egyezéseit.

A fenyegetésadatok kezelése és gyorsítótárazása nem csupán technikai megoldás, hanem egy átfogó, folyamatosan karbantartott folyamat, amely folyamatos figyelmet és finomhangolást igényel. Az adatok pontos és naprakész tárolása, gyors kereshetősége és a rendszeres ellenőrzés alapvetőek ahhoz, hogy hatékony védelmet biztosíthassunk a különböző támadások és fenyegetések ellen.