Retour à l'accueil

Détermination des distributions Linux par les paquets via API KUMA

L'article décrit une méthode pour déterminer automatiquement les distributions Linux sur la base de l'analyse des paquets installés en utilisant l'API de la plateforme KUMA. Un algorithme avec un système de pondération est présenté pour une identification précise des OS dans de grandes infrastructures.

Automatisation Linux : Comment déterminer la distribution par les paquets
Advertisement 728x90

Automatisation de la détection de distributions Linux par paquets avec l'API KUMA

Un analyste SOC a dû recenser les systèmes d'exploitation dans une grande entreprise. Plutôt que de vérifier manuellement 18 000 appareils, il a développé un script Python qui récupère les données des logiciels installés via l'API de la plateforme KUMA et analyse les paquets pour identifier précisément les distributions Linux. La solution repose sur un système de notation pondérée tenant compte des paquets système uniques, des gestionnaires de paquets et des suffixes de versions.

Utilisation de l'API KUMA et traitement JSON

KUMA (Kaspersky Unified Monitoring and Analysis Platform) fournit les données des actifs via son API, mais avec des limitations, comme l'absence de filtres directs sur les actifs dans l'interface web. L'authentification utilise un jeton, évitant les identifiants codés en dur. Voici un exemple de code pour effectuer une requête :

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

La structure JSON de la réponse inclut des champs pour l'OS et les logiciels installés. Pour extraire les données imbriquées comme les listes de paquets, une fonction récursive est utilisée :

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

Gestion des versions de paquets Linux

Comprendre les versions de paquets est essentiel pour l'analyse. La version sémantique standard suit le format MAJOR.MINOR.PATCH, comme 2.36.105. Les distributions ajoutent leurs propres suffixes :

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

Un exemple complexe : 2.2.6-2+deb10u9+ci1+astra1, où deb10 indique Debian 10, u9 la neuvième mise à jour, et astra l'adaptation Astra Linux.

Algorithme de détection des distributions Linux

L'algorithme examine les paquets installés pour identifier le type d'OS, la distribution spécifique, la version et le niveau de confiance. Il utilise un système de notation pondérée :

Google AdInline article slot
  • 150 points : paquets système uniques (ex. : ubuntu-release)
  • 20 points : gestionnaires de paquets (apt, yum, rpm)
  • 15 points : suffixes de versions (.ubuntu, .alt)
  • 10 points : paquets spécifiques à la distribution
  • 5 points : indicateurs indirects

Les distributions prises en charge incluent Ubuntu, Debian, ALT Linux, Astra Linux, Fedora, et bien d'autres. La logique fonctionne ainsi :

  • Scanner les paquets et cumuler les scores pour chaque distribution.
  • Sommer les scores et sélectionner le meilleur.
  • Dépasser les égalités en priorisant les paquets système.
  • Extraire la version des paquets système ou des suffixes.

Niveaux de confiance : Élevé (≥150 points), Moyen (20–49 points), ou Faible (<20 points).

Fonctionnalités clés de l'implémentation

  • Sortie flexible : Prend en charge CSV ou JSON, avec filtrage optionnel par niveau de confiance.
  • Gestion des données incomplètes : Fonctionne même si les infos OS manquent (os: null) ou si le tableau software est vide.
  • Hiérarchie de priorités : Les paquets système uniques ont le poids le plus élevé pour une meilleure précision.
  • Conception évolutive : Facilement extensible en ajoutant de nouvelles distributions et indicateurs.

Points clés à retenir

  • L'automatisation du recensement des OS via l'API KUMA économise des heures sur des milliers d'appareils.
  • La notation pondérée identifie précisément les distributions Linux à partir des données de paquets.
  • Couvre les principales distributions, y compris les russes comme ALT Linux et Astra Linux.
  • Flexibilité de sortie CSV/JSON pour une intégration aisée avec d'autres outils.
  • Robuste face aux données incomplètes, idéal pour les scénarios réels.

— Editorial Team

Google AdInline article slot
Advertisement 728x90

Lire ensuite