Zpět na domů

Určení distribucí Linux podle balíčků prostřednictvím API KUMA

Článek popisuje metodu automatického určení distribucí Linux na základě analýzy nainstalovaných balíčků s použitím API platformy KUMA. Je představen algoritmus se systémem vah pro přesnou identifikaci OS ve velkých infrastruktuřách.

Automatizace Linux: jak určit distribuci podle balíčků
Advertisement 728x90

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:

Google AdInline article slot
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í:

Google AdInline article slot
  • 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

Google AdInline article slot
Advertisement 728x90

Číst dál