Zurück zur Startseite

Bestimmung von Linux-Distributionen anhand von Paketen über API KUMA

Der Artikel beschreibt eine Methode zur automatischen Bestimmung von Linux-Distributionen basierend auf der Analyse installierter Pakete mit der API der KUMA-Plattform. Ein Algorithmus mit einem Bewertungssystem wird für die genaue OS-Identifizierung in großen Infrastrukturen vorgestellt.

Linux-Automatisierung: Wie man Distributionen anhand von Paketen bestimmt
Advertisement 728x90

Automatisierte Linux-Distribution-Erkennung über installierte Pakete mit KUMA-API

Ein SOC-Analyst stand vor der Herausforderung, Betriebssysteme in einem großen Unternehmen zu inventarisieren. Statt 18.000 Geräte manuell zu prüfen, entwickelte er ein Python-Skript, das über die KUMA-Plattform-API Daten zu installierter Software abruft und Pakete analysiert, um Linux-Distributionen präzise zu identifizieren. Die Lösung nutzt ein gewichtetes Bewertungssystem, das einzigartige Systempakete, Paketmanager und Versionssuffixe berücksichtigt.

Arbeit mit KUMA-API und JSON-Verarbeitung

KUMA (Kaspersky Unified Monitoring and Analysis Platform) stellt Asset-Daten über seine API zur Verfügung, allerdings mit Einschränkungen – wie fehlenden direkten Asset-Filtern in der Weboberfläche. Die Authentifizierung erfolgt per Token, um hartcodierte Zugangsdaten zu vermeiden. Hier ein Code-Beispiel für eine Anfrage:

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()

Die JSON-Antwort enthält Felder für das Betriebssystem und installierte Software. Um verschachtelte Daten wie Paketlisten zu extrahieren, wird eine rekursive Funktion verwendet:

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

Linux-Paketversionierung

Das Verständnis von Paketversionen ist entscheidend für die Analyse. Die standardisierte semantische Versionierung folgt dem Schema MAJOR.MINOR.PATCH, z. B. 2.36.105. Distributionen fügen eigene Suffixe hinzu:

  • Ubuntu: .ubuntu oder +ubuntu
  • Debian: .deb oder +deb
  • ALT Linux: .alt oder +alt
  • Astra Linux: .astra oder astra

Ein komplexes Beispiel: 2.2.6-2+deb10u9+ci1+astra1, wobei deb10 auf Debian 10 hinweist, u9 die neunte Aktualisierung markiert und astra die Anpassung für Astra Linux anzeigt.

Algorithmus zur Linux-Distribution-Erkennung

Der Algorithmus durchsucht installierte Pakete, um Typ, spezifische Distribution, Version und Konfidenzstufe des Betriebssystems zu ermitteln. Er verwendet ein gewichtetes Bewertungssystem:

Google AdInline article slot
  • 150 Punkte: einzigartige Systempakete (z. B. ubuntu-release)
  • 20 Punkte: Paketmanager (apt, yum, rpm)
  • 15 Punkte: Versionssuffixe (.ubuntu, .alt)
  • 10 Punkte: distributionsspezifische Pakete
  • 5 Punkte: indirekte Indikatoren

Unterstützte Distributionen umfassen Ubuntu, Debian, ALT Linux, Astra Linux, Fedora und mehr. Der Ablauf sieht so aus:

  • Pakete durchsuchen und Punkte für jede Distribution sammeln.
  • Punkte summieren und die höchste Bewertung wählen.
  • Bei Gleichstand Systempakete priorisieren.
  • Version aus Systempaketen oder Suffixen extrahieren.

Konfidenzstufen: Hoch (≥150 Punkte), Mittel (20–49 Punkte) oder Niedrig (<20 Punkte).

Wichtige Implementierungsmerkmale

  • Flexibler Output: Unterstützt CSV oder JSON, mit optionaler Filterung nach Konfidenzstufe.
  • Umgang mit unvollständigen Daten: Funktioniert auch bei fehlenden OS-Infos (os: null) oder leerer Software-Liste.
  • Prioritäts-Hierarchie: Einzigartige Systempakete erhalten höchstes Gewicht für bessere Genauigkeit.
  • Skalierbares Design: Einfach erweiterbar durch Hinzufügen neuer Distributionen und Indikatoren.

Wichtige Erkenntnisse

  • Automatisierte OS-Inventarisierung über KUMA-API spart Stunden bei Tausenden von Geräten.
  • Gewichtetes Scoring identifiziert Linux-Distributionen zuverlässig aus Paketdaten.
  • Deckt große Distributionen ab, inklusive russischer wie ALT Linux und Astra Linux.
  • Flexible CSV/JSON-Ausgabe integriert sich nahtlos in andere Tools.
  • Robust gegenüber unvollständigen Daten, ideal für reale Szenarien.

— Editorial Team

Google AdInline article slot
Advertisement 728x90

Weiterlesen