Detekce anomálií v logech úložiště souborů: Isolation Forest, CatBoost a autoenkodér
Strojové učení efektivně odhaluje hrozby v logech úložiště souborů, kde se denně zaznamenávají miliony operací čtení, zápisu a mazání. Tři algoritmy — Isolation Forest, CatBoost a autoenkodér — analyzují vícerozměrné časové řady aktivity uživatelů a rozlišují normální chování od podezřelého bez nutnosti označování dat.
Data se agregují podle časových intervalů: pro každý slot se počítá intenzita operací podle typů. Výsledkem je vektor příznaků, kde odchylky signalizují insider kopírování nebo hromadné šifrování.
Isolation Forest: izolace anomálií náhodností
Isolation Forest vytváří soubor stromů s náhodnými rozděleními příznaků. Anomálie se izolují rychleji, protože jejich příznaky se výrazně liší od většiny. Algoritmus je unsupervised: nevyžaduje označení dat, zaměřuje se na cestu od kořene k listu.
from sklearn.ensemble import IsolationForest
if_model = IsolationForest(n_estimators=100, contamination=0.05, bootstrap=False, random_state=42)
Pro časové řady se přidávají zpožděné příznaky:
data['prev_10min'] = (data.rolling(window='10min', min_periods=1)['events'].sum()).astype(int)
data['prev_5min'] = (data.rolling(window='5min', min_periods=1)['events'].sum()).astype(int)
data['prev_3min'] = (data.rolling(window='3min', min_periods=1)['events'].sum()).astype(int)
Klíčové hyperparametry:
- n_estimators: rovnováha mezi přesností a rychlostí
- contamination: očekávaný podíl anomálií (0.05)
- max_samples: velikost podvýběru (256 výchozí)
- bootstrap: False pro rozmanitost
Hodnocení anomaly_score pomocí decision_function je normalizováno na [-0.5, 0.5]. Hodnoty < -0.25 jsou jisté anomálie:
data['anomaly'] = np.where(if_model.decision_function(data[['events', 'prev_3min', 'prev_5min', 'prev_10min']]) > -0.25, 0, 1)
SHAP analýza ukazuje dominanci zpoždění na 10 minut. Výhody:
- Složitost O(n log n) pro reálný čas
- Funguje na CPU bez ukládání dat
- Jednoduché nasazení
CatBoost pro predikci normální aktivity
CatBoostRegressor se učí na historických datech pro předpověď očekávané intenzity. Anomálie jsou tam, kde |skutečná - předpovězená| překračuje práh.
from catboost import CatBoostRegressor
model = CatBoostRegressor()
expected_value = model.predict()
anomaly_score = abs(actual_value - expected_value)
Schéma rozdělení dat:
- Tréninková (3 týdny): normální aktivita
- Validační (1 týden): ladění
- Testovací (2 dny): anomálie
Příznaky rozšiřují kontext:
- Časové: den v týdnu, hodina
- Zpožděné: události za 1h, 30m, 10m, 5m, 3m
- Klouzavé: mean/std/quantile(0.8) za 3/7 dní
Klouzavé statistiky se počítají bez úniku:
# Klouzavé statistiky
data['week_mean'] = round(data.rolling(window=7, min_periods=1)['events'].mean(), 2)
Klouzavé učení denně aktualizuje model na plném historickém souboru.
Autoenkodér: komprese a obnova
Neuronový autoenkodér komprimuje normální sekvence do latentního prostoru, zatímco anomálie se špatně obnovují (vysoká reconstruction error).
Architektura: LSTM/GRU enkodér + dekodér. Učení na normálních datech minimalizuje MSE. Práh chyby určuje anomálie.
Výhody pro řady: zachycuje dlouhodobé závislosti. Nevýhody: vyžaduje GPU, citlivý na hyperparametry.
Srovnání přístupů:
| Model | Rychlost | Interpretovatelnost | Zdroje | Adaptace na trendy |
|--------|----------|--------------------|---------|---------------------|
| Isolation Forest | Vysoká | SHAP | CPU | Zpoždění |
| CatBoost | Střední | Feature importance | CPU/GPU | Klouzavé učení |
| Autoenkodér | Nízká | Attention | GPU | Sekvence |
Co je důležité
- Isolation Forest vede v rychlosti a úspornosti pro reálný čas
- CatBoost je přesný v predikci trendů s rozšířenými příznaky
- Autoenkodér vyniká u složitých sekvencí, ale je náročný na zdroje
- Všechny modely jsou unsupervised: fungují bez označení dat
- Kombinace zpoždění a klouzavých statistik zvyšuje přesnost o 15-20%
Integrace do SIEM: modely se aktualizují online, upozornění při anomaly_score > prahu. Testování na syntetických anomáliích potvrzuje F1-score > 0.85 pro všechny.
— Editorial Team
Zatím žádné komentáře.