Logování
- Logování vlastních aplikačních událostí v systémech často chybí, nebo je špatně naimplementováno či nakonfigurováno
- Logování by mělo být konzistentní napříč portfoliem aplikací
- Mělo by využívat oborové standardy, aby bylo možné logovaná data využívat, analyzovat a spravovat
Účel
- Zahrňte logování do všech událostí souvisejících se zabezpečením, pomůže to s
- poskytováním informací o problémech a neobvyklých stavech
- obranou proti zneužití zranitelností prostřednictvím detekce útoků
- sledovováním porušování zásad
- identifikací bezpečnostních incidentů
- vyšetřováním incidentů
- stanovením referenčních hodnot
- kontrolou nepopiratelnosti (non-repudiation)
- Logování lze použít k záznamu dalších typů událostí
- Bezpečnostní události
- Monitoring byznys procesů (transakce, připojení)
- Monitorování proti automatizaci
- Auditní záznamy (přidávání, mazání, úpravy nebo exporty dat)
- Sledování výkonu (doba načítání, výpadky stránek)
- Kontrola dodržování předpisů
- Údaje o následné žádosti o informace (soudní spory, policejní a regulační vyšetřování)
- Zákonem povolený odposlech dat
- Specifické byznys požadavky
- Logy pro monitoring procesů, auditů a transakcí se shromažďují za jiným účelem než události zabezpečení → měly by být vedeny odděleně
- Záznamů nesmí být příliš mnoho, ani příliš málo
- Znalost zamýšlených účelů slouží jako vodítko pro to co, kdy a v jakém množství logovat
Návrh, implementace a testování
Zdroje dat o událostech
- Aplikace má přístup k široké škále informačních událostí
- Ty by měly být použity k vytváření logů
- Primárním zdrojem dat o událostech je kód aplikace
- Aplikace má nejvíce informací o uživateli (identita, role, oprávnění) a kontextu události (cíl, akce, výsledky)
- Zvažte logování dalších zdrojů informací:
- Klientský software (desktopová a mobilní zařízení, prohlížeč)
- Síťové firewally
- Systémy detekce narušení sítě a hostitele (NIDS, HIDS)
- Úzce související aplikace (filtry zabudované do softwaru)
- Aplikační firewally (filtry, XML gateway, WAF)
- Databázové aplikace (automatické auditní záznamy, trigger akce)
- Monitoring reputace (sledování doby provozu nebo malwaru)
- Další aplikace (CRM)
- Operační systém (mobilní platforma)
- Zvažte stupeň důvěryhodnosti informací o událostech
- Data mohou chybět, mohou být upravena, zfalšována, mohou být škodlivá atd.
- Zacházejte s daty jako s nedůvěryhodnými
- Zamyslete se, jak lze ověřit zdroj a jak zajistit integritu a nepopiratelnost
Kam údaje zaznamenávat
- Aplikace logy běžně zapisují do souboru nebo databáze
- Aplikace nainstalované na PC a mobilech mohou používat lokální úložiště a databáze, mohou ale také data odesílat do vzdáleného úložiště
- Můžete se setkat s centralizovaným systémem sběru a správy logů (SIEM, SEM)
- Zvažte, zda aplikace může odesílat data bez vyrovnávací paměti na
stdout
- Používejte separátní oddíl od oddílů používaných operačním systémem při používání souborového systému
- Použijte přísná oprávnění týkající se uživatelů, kteří mají přístup k adresářům a souborům pro logy ukládané do souborů
- Nevystavujte logy na web nebo k nim omezte přístup
- Nakonfigurujte je jako prostý text (ne HTML)
- Použijte samostatný databázový účet, který se používá pro zápis dat a který má omezená oprávnění k databázi, tabulkám, funkcím a příkazům při ukládání logů do databáze
- Použijte standardní formáty pro ukládání logů (Common Log File System, Common Event Format), syslog
- Ty usnadňují integraci s dalšími logovacími službami
- Zvažte samostatné soubory / tabulky pro další informace o událostech (stack traces, HTTP request / response hlavičky, tělo odpovědí)
Které události logovat
- Stanovte úroveň a obsah bezpečnostního monitorování, výstrah a hlášení už ve fázi požadavků a návrhu projektu
- Na základě toho je možné definovat, co by mělo být logováno
- Neexistuje žádné univerzální řešení nebo přístup
- Takový přístup může vést k poplašným zprávám a neodhalení skutečných problémů
- Pokud je to možné, vždy logujte
- selhání validace vstupů (nepřijatelné kódování, neplatné názvy nebo hodnoty)
- selhání výstupní validace (neshoda záznamů v databázi, neplatné kódování dat)
- úspěšné a neúspěšné přihlášení
- selhání autorizace (řízení přístupu)
- selhání správy session (změna identifikační hodnoty)
- aplikační chyby a systémové události (problémy s připojením, výkonem, chyby třetích stran, změny konfigurace)
- spouštění a vypínání aplikací a souvisejících systémů
- používání funkcí s vyšším rizikem (připojení k síti, mazání uživatelů, změny oprávnění, přiřazování tokenů, změny klíčů)
- právní a jiné souhlasy (podmínky používání, souhlas s používáním osobních údajů, souhlas se zasíláním marketingových sdělení...)
- Volitelně zvažte logování následujících událostí
- Selhání sekvencování
- Nadměrné používání
- Změny údajů
- Podvody a další trestná činnost
- Podezřelé, nepřijatelné nebo neočekávané chování
- Úpravy konfigurace
- Změny kódu aplikace nebo paměti
Atributy událostí
- Každý záznam musí obsahovat dostatečné informace pro následné monitorování a analýzu
- Může se jednat o údaje s úplným obsahem, ale pravděpodobně půjde o výpis souhrnných vlastností
- V lozích musí být vždy zaznamenáno kdy, kde, kdo a co
- Tyto vlastnosti se liší v závislosti na architektuře, aplikaci, systému, zařízení, atd.
Kdy
- Datum a čas logování v mezinárodním formátu
- Datum a čas události (čas události se může lišit od času logování) v mezinárodním formátu
- Identifikátor interakce (metoda propojení všech relevantních událost í pro jednu interakci uživatele)
- Např. schopnost propojení všech událostí souvisejících s kliknutím na tlačítko
Kde
- Identifikátor aplikace (název a verze)
- Adresa aplikace (cluster, číslo portu, IPv4, IPv6)
- Služba (název a protokol)
- Geolokace
- Okno / formulář / stránka (URL vstupního bodu, HTTP metoda, název dialogového okna)
- Umístění v kódu (název skriptu, název modulu)
Kdo (člověk nebo stroj)
- Zdrojová adresa (ID zařízení uživatele, IP adresa, telefonní číslo)
- Identita uživatele (primární klíč z databáze, jméno, číslo licence)
Co
- Typ události
- Závažnost události (debug, info, critical)
- Příznak události související se zabezpečením
- Popis
- Zvažte také logování
- Sekundární zdroj času (GPS)
- Akce - původní účel požadavku (přihlášení, odhlášení, aktualizace profilu)
- Objekt (komponenta, uživatelský účet, soubor, URL)
- Stav výsledku (úspěšné, neúspěšné, odložené)
- Důvod, proč došlo k výše uvedenému stavu (nedostatečná oprávnění)
- HTTP status kód (200, 301)
- HTTP hlavičky nebo HTTP user agent
- Klasifikace typu uživatele (veřejnost, vyhledávač, CMS uživatel, admin, tester)
- Analytická důvěra v detekci události (nízká, střední, vysoká)
- Podrobnosti (stack trace, chybové zprávy systému, tělo požadavku)
- Interní klasifikace (odpovědnost, odkazy na dodržování předpisů)
- Externí klasifikace (NIST security, SCAP, CAPEC)