Automatizace detekce Linuxových distribucí pomocí nainstalovaných balíčků a API KUMA
SOC analytik se potýkal s úkolem inventarizace operačních systémů ve velké společnosti. Namísto ručního procházení 18 000 zařízení vyvinul skript v Pythonu, který přes API platformy KUMA shromažďuje data o nainstalovaném software a analyzuje balíčky pro přesné určení Linuxových distribucí. Řešení využívá systém vážení, který zohledňuje unikátní systémové balíčky, správce balíčků a přípony verzí.
Práce s API KUMA a zpracování JSON
KUMA (Kaspersky Unified Monitoring and Analysis Platform) poskytuje data o aktivech přes API, ale s omezeními: například chybí přímý filtr pro aktiva dostupný ve webovém rozhraní. Pro autorizaci byl použit token, což vylučuje ukládání přihlašovacích údajů v kódu. Příklad kódu pro dotaz:
token = "my_token"
url = "my_api_url"
api_header={
"Content-Type": "application/json",
"Authorization": f"Bearer {token}"
}
req = request.get(url, headers=api_header)
data = req.json()
Struktura JSON odpovědi zahrnuje pole pro operační systém a nainstalovaný software. Pro extrakci vnořených dat, jako je seznam balíčků, byla použita rekurzivní funkce:
def recursive_extract(data, result=None):
result = []
if isinstance(data, dict):
for key, value in data.items():
if key == "software":
result.append(value)
recursive_extract(value, result)
return result
Systém verzování balíčků Linux
Porozumění verzím balíčků je klíčové pro analýzu. Standardní sémantické verzování zahrnuje MAJOR.MINOR.PATCH, například 2.36.105. V distribucích se přidávají specifické přípony:
- Ubuntu: .ubuntu nebo +ubuntu
- Debian: .deb nebo +deb
- ALT Linux: .alt nebo +alt
- Astra Linux: .astra nebo astra
Příklad složité verze: 2.2.6-2+deb10u9+ci1+astra1, kde deb10 označuje Debian 10, u9 — devátá aktualizace, astra — adaptaci pro Astra Linux.
Algoritmus pro určení Linuxových distribucí
Algoritmus analyzuje nainstalované balíčky k určení typu OS, konkrétní distribuce, její verze a úrovně spolehlivosti. Používá se systém vážení:
- 150 bodů: unikátní systémové balíčky (např. ubuntu-release)
- 20 bodů: správci balíčků (apt, yum, rpm)
- 15 bodů: přípony ve verzích (.ubuntu, .alt)
- 10 bodů: specifické balíčky distribuce
- 5 bodů: nepřímé znaky
Podporované distribuce zahrnují Ubuntu, Debian, ALT Linux, Astra Linux, Fedora a další. Logika fungování:
- Skenování balíčků a přidělování bodů pro každou distribuci.
- Výpočet součtu bodů a výběr vítěze.
- Řešení konfliktů při stejných bodech přes prioritu systémových balíčků.
- Určení verze ze systémových balíčků nebo přípon.
Úroveň spolehlivosti je klasifikována jako Vysoká (≥150 bodů), Střední (20–49 bodů) nebo Nízká (<20 bodů).
Klíčové rysy implementace
- Flexibilní formát výstupu: podpora CSV nebo JSON s volitelným rozdělením podle úrovně spolehlivosti.
- Zpracování neúplných dat: algoritmus funguje i při absenci informací o OS (os: null) nebo prázdném poli software.
- Hierarchie priorit: unikátní systémové balíčky mají nejvyšší váhu, což zvyšuje přesnost.
- Škálovatelnost: systém se snadno rozšiřuje přidáním nových distribucí a znaků.
Co je důležité
- Automatizace inventarizace OS přes API KUMA šetří čas při práci s tisíci zařízení.
- Systém vážení umožňuje přesně určovat Linuxové distribuce na základě nainstalovaných balíčků.
- Podpora mnoha distribucí, včetně ruských (ALT Linux, Astra Linux).
- Flexibilita výstupu dat v CSV nebo JSON usnadňuje integraci s dalšími nástroji.
- Algoritmus je odolný vůči neúplným datům, což je kritické v reálných podmínkách.
— Editorial Team
Zatím žádné komentáře.