Přeskočit obsah

2025

Co je nového ve TeskaLabs LogMan.io v25.28

V LogMan.io v25.28 najdete zcela nové rozhraní pro správu výstrah a barevně rozlišené vrstvy v knihovně. Neustále rozšiřujeme možnosti integrace a máme také dárek pro administrátory: Veškerou retenci dat lze spravovat z WebUI, buď selektivně pomocí deklarací datových linek, nebo prostřednictvím profilů, které spravují více či všechny datové linky najednou.

Logování aplikací pro vývojáře softwaru

Logování aplikací je první linií obrany při monitorování kybernetické bezpečnosti a reakci na incidenty. Při správné implementaci se logy stávají mocným spojencem bezpečnostních týmů, protože umožňují rychlou detekci hrozeb, forenzní analýzu a podávání zpráv o dodržování předpisů. Špatně strukturované logy se však mohou stát „šumem“, který zastírá kritické bezpečnostní události a brzdí úsilí o jejich vyšetření.

Tento návod se zabývá klíčovými zásadami pro implementaci logování, které se bezproblémově integruje s moderními platformami pro správu logů a zároveň poskytuje maximální hodnotu pro aktivity v oblasti kybernetické bezpečnosti.

Základ: Struktura místo chaosu

Zásada 1: Osvojte si strukturované logování

Nestrukturované logy typu „Uživatel john_doe se přihlásil ze 192.168.1.100 v 2025-06-28 14:30:22“ jsou sice čitelné pro člověka, ale pro automatizovanou analýzu jsou noční můrou. Strukturované logy ve formátu JSON umožňují výkonné dotazování, výstrahy a korelace.

Příklad strukturovaného logu

{
    "@timestamp": "2025-06-28T14:30:22.000Z",
    "event": {
        "category": ["authentication"],
        "type": ["start"],
        "outcome": "success"
    },
    "user": {
        "name": "john_doe",
        "id": "12345"
    },
    "source": {
        "ip": "192.168.1.100"
    },
    "message": "Ověření uživatele proběhlo úspěšně"
}

Zásada 2: Využití Elastic Common Schema (ECS)

ECS poskytuje standardizované mapování polí, které zajišťuje konzistenci napříč různými aplikacemi a zdroji dat. Tato standardizace je klíčová pro bezpečnostní operace, kdy analytici potřebují rychle korelovat události z různých systémů.

Mezi klíčová pole ECS pro bezpečnostní logy patří:

  • @timestamp: Časové razítko události ve formátu ISO 8601
  • event.category: Kategorizace na vysoké úrovni (ověřování, síť, proces atd.)
  • event.type: Specifický typ události (začátek, konec, vytvoření, smazání atd.)
  • event.outcome: Úspěch, selhání nebo neznámý
  • user.*: Identifikace uživatele a podrobnosti o něm
  • source.* a destination.*: Podrobnosti o síťovém připojení
  • process.*: Informace o provádění procesu
  • file.*: Podrobnosti o souborových operacích

Tip

Vždy logujte v UTC, lokální časové zóny jsou nedeterministické a mnohem náchylnější k chybám.

Tip

Preferujte UTF-8 jako znakovou sadu pro vaše logy.

Kategorie kritických logů z hlediska bezpečnosti

Události autentizace a autorizace

Tyto události jsou zlatým dolem pro odhalování pokusů o zneužití pověření, útoků hrubou silou a pokusů o zvýšení oprávnění.

Příklad logu o selhání přihlášení

{
    "@timestamp": "2025-06-28T15:45:33.000Z",
    "event": {
        "category": ["authentication"],
        "type": ["start"],
        "outcome": "failure"
    },
    "user": {
        "name": "admin",
        "target": {
            "name": "privileged_service"
        }
    },
    "source": {
        "ip": "203.0.113.42",
        "geo": {
            "country_name": "Unknown"
        }
    },
    "error": {
        "message": "Poskytnuta neplatná pověření"
    },
    "labels": {
        "risk_score": "high"
    }
}

Logy o síťové aktivitě

Klíčové pro odhalení laterálního pohybu, exfiltrace dat a komunikace typu „velení a řízení“.

Příklad logu o síťové aktivitě

{
    "@timestamp": "2025-06-28T16:20:15.000Z",
    "event": {
        "category": ["network"],
        "type": ["connection"],
        "outcome": "success"
    },
    "source": {
        "ip": "10.0.1.50",
        "port": 4433
    },
    "destination": {
        "ip": "198.51.100.25",
        "port": 443,
        "domain": "suspicious-domain.example"
    },
    "network": {
        "protocol": "tcp",
        "bytes": 1048576
    },
    "url": {
        "full": "https://suspicious-domain.example/data/export"
    }
}

Operace se soubory a procesy

Zásadní pro detekci malwaru, sledování vnitřních hrozeb a dodržování předpisů.

Příklad logu o spuštění procesu

{
    "@timestamp": "2025-06-28T17:10:44.000Z",
    "event": {
        "category": ["process"],
        "type": ["start"],
        "outcome": "success"
    },
    "process": {
        "name": "powershell.exe",
        "pid": 2847,
        "command_line": "powershell.exe -ExecutionPolicy Bypass -File C:\\temp\\script.ps1",
        "parent": {
            "name": "cmd.exe",
            "pid": 1924
        }
    },
    "user": {
        "name": "employee_user",
        "domain": "corporate"
    },
    "host": {
        "name": "workstation-042",
        "os": {
            "name": "Windows",
            "version": "10"
        }
    }
}

Doporučené implementační postupy

Obohacení kontextu

Nezpracované události získávají bezpečnostní hodnotu díky obohacení kontextu. Zahrňte relevantní metadata, která pomohou bezpečnostním analytikům pochopit význam událostí.

Příklad v Pythonu
import logging
import json
from datetime import datetime, timezone

class SecurityLogger:
    def __init__(self, service_name):
        self.service_name = service_name
        self.logger = logging.getLogger(service_name)

    def log_authentication_event(self, user_id, source_ip, outcome, session_id=None, user_agent=None):
        event = {
            "@timestamp": datetime.now(timezone.utc).isoformat(),
            "event": {
                "category": ["authentication"],
                "type": ["start"],
                "outcome": outcome
            },
            "service": {
                "name": self.service_name
            },
            "user": {
                "id": user_id
            },
            "source": {
                "ip": source_ip
            }
        }

        # Přidání kontextových informací
        if session_id:
            event["session"] = {"id": session_id}
        if user_agent:
            event["user_agent"] = {"original": user_agent}

        self.logger.info(json.dumps(event))

Korelační identifikátory

Zahrňte korelační ID, která umožňují sledování uživatelských relací, transakčních toků a souvisejících událostí v distribuovaných systémech.

{
    "@timestamp": "2025-06-28T18:15:22.000Z",
    "event": {
        "category": ["web"],
        "type": ["access"]
    },
    "trace": {
        "id": "abc123def456"
    },
    "transaction": {
        "id": "txn_789xyz"
    },
    "session": {
        "id": "sess_456abc"
    },
    "user": {
        "id": "user_12345"
    }
}

Ochrana citlivých údajů

Nikdy nelogujte citlivé informace přímo. Používejte techniky hashování, tokenizace nebo redigování při zachování vyšetřovací užitečnosti.

Příklad v Pythonu
import hashlib
from datetime import datetime, timezone

def safe_log_user_activity(user_email, sensitive_data):
    # Hash PII pro korelaci bez expozice
    user_hash = hashlib.sha256(user_email.encode()).hexdigest()[:16]

    event = {
        "@timestamp": datetime.now(timezone.utc).isoformat(),
        "event": {
            "category": ["web"],
            "type": ["access"]
        },
        "user": {
            "hash": user_hash  # Může být korelováno bez odhalení emailu
        },
        "url": {
            "path": "/api/sensitive-endpoint"
        },
    }

    # Nikdy nelogujte skutečné citlivé údaje
    logger.info(json.dumps(event))

Výkon a objem

Rozumný výběr vzorků

Ne každá událost musí být zaznamenána na stejné úrovni hlasitosti. Implementujte inteligentní vzorkování na základě rizika a kritičnosti.

Příklad v Pythonu
import random

class AdaptiveLogger:
    def __init__(self):
        self.high_risk_sample_rate = 1.0      # Zaznamenáváme 100 % vysoce rizikových událostí
        self.normal_sample_rate = 0.1         # Zaznamenáváme 10 % normálních událostí
        self.debug_sample_rate = 0.01         # Zaznamenáváme 1 % ladících událostí

    def should_log(self, risk_level):
        if risk_level == "high":
            return True
        elif risk_level == "normal":
            return random.random() < self.normal_sample_rate
        else:
            return random.random() < self.debug_sample_rate

Asynchronní logování

Předejděte vlivu logování na výkon aplikace použitím asynchronních mechanismů logování.

Příklad v Pythonu
import asyncio
import aiofiles
import json

class AsyncSecurityLogger:
    def __init__(self):
        self.log_queue = asyncio.Queue()

    async def log_event_async(self, event_data):
        await self.log_queue.put(event_data)

    async def process_logs(self):
        while True:
            try:
                event = await asyncio.wait_for(
                    self.log_queue.get(), timeout=1.0
                )
                await self._write_log(event)
            except asyncio.TimeoutError:
                continue

    async def _write_log(self, event):
        async with aiofiles.open('security.log', 'a') as f:
            await f.write(json.dumps(event) + '\n')

Integrace a monitorování

Monitorování zdraví

Monitorujte svou logovací infrastrukturu, abyste zajistili, že se bezpečnostní události neztratí během kritických incidentů.

Příklad logu s monitorovací informací

{
    "@timestamp": "2025-06-28T19:30:15.000Z",
    "event": {
        "category": ["system"],
        "type": ["info"]
    },
    "service": {
        "name": "logging_service"
    },
    "metrics": {
        "events_per_second": 1250,
        "queue_depth": 42,
        "dropped_events": 0
    },
    "labels": {
        "monitoring": "logging_health"
    }
}

Důležité události

Navrhujte logy s ohledem na výstrahy. Zahrňte pole, která umožňují automatickou detekci hrozeb a reakci na ně.

Příklad důležité události

{
    "@timestamp": "2025-06-28T20:45:30.000Z",
    "event": {
        "category": ["authentication"],
        "type": ["start"],
        "outcome": "failure"
    },
    "rule": {
        "name": "multiple_failed_logins",
        "description": "5+ selhání přihlášení během 5 minut"
    },
    "user": {
        "name": "admin_user"
    },
    "source": {
        "ip": "203.0.113.100"
    },
    "labels": {
        "alert_priority": "high"
    }
}

Závěr

Efektivní bezpečnostní logování je umění i věda. Dodržováním těchto zásad (strukturované formátování, soulad s ECS, kontextové obohacování a optimalizace výkonu) vytvoříte logy, které budou sloužit jako výkonný nástroj pro bezpečnostní operační týmy.

Nezapomeňte, že logování není jen o zaznamenávání událostí, ale o umožnění rychlé detekce, vyšetřování a reakce na bezpečnostní hrozby. Každý záznam logu by měl vyprávět příběh, který pomáhá chránit aktiva a uživatele vaší organizace.

Investice do správné architektury logování se vyplatí, když dojde k incidentům. Bezpečnostní týmy vyzbrojené dobře strukturovanými a komplexními logy mohou reagovat na hrozby v řádu minut, nikoli hodin, což často znamená rozdíl mezi nevýznamnou bezpečnostní událostí a závažným narušením.

Začněte tyto postupy zavádět postupně, nejprve se zaměřte na nejkritičtější ověřovací a autorizační toky a poté je rozšiřte na síťové aktivity, operace se soubory a bezpečnostní události specifické pro aplikace. Váš budoucí tým pro řešení incidentů vám poděkuje.

Co je nového ve TeskaLabs LogMan.io v25.15

V této verzi najdete aktualizace, které vylepšují správu lookupů, přiřazování rizikových skóre a přehrávání archivovaných dat. Zde je rychlý přehled novinek ve verzi v25.15 a jejich významu pro vaše bezpečnostní operace.

Chytřejší lookupy s integrací feedů

Lookupy dostaly zásadní vylepšení. Zavedli jsme kompletně přepracované uživatelské rozhraní a nový mikroservis lmio-feeds, který načítá data z feedů o hrozbách a ukládá je do lookupů.

Co nového přináší uživatelské rozhraní Lookup?

  • Snadný import a export položek lookupů
  • Vytváření feedů přímo z rozhraní
  • Třídění a filtrování položek lookupů pro rychlejší přístup
  • Podpora speciálních znaků v položkách lookupů

Ještě lépe, lookupy nyní podporují jak tenant-specifické, tak globální rozsahy, což znamená, že běžné indikátory, jako jsou IP adresy nebo domény, mohou být sdíleny mezi prostředími. Můžete také přiřazovat riziková skóre jednotlivým položkám a provádět automatizované testy—například kontrolu čekajících úloh Windows—pro obohacení vaší analýzy hrozeb.