php IPAM : Vérifier les adresses IP et tous leurs changements

Php IPAM , comme l’indique son nom composé, est l’utilisation et l’administration, à travers PHP, des adresses IPAM (Internet Protocol Address Management), ce qui rend le logiciel très unique. Dans cet article, nous verrons comment nous pouvons utiliser php IPAM comme un outil auxiliaire, bien que nous constaterons qu’il possède certains éléments basés sur la surveillance, allons-y !

php IPAM et Pandora FMS

Dans un article précédent, nous avons expliqué ce qu’est un calculateur IP et comment il fonctionne lorsqu’il est mis en œuvre dans Pandora FMS. La vérité est que depuis mai 2014 (et officiellement publié dans la version 5.1). Pandora FMS inclut IPAM comme une extension très utile pour la gestion, la découverte, les associations d’agents existants, l’enregistrement des commentaires dans chacun des adresses IP, également être en mesure d’établir des exceptions du point de vue de la surveillance. Les adresses IP peuvent être détectées par ping ou par les adresses IP qui nous sont fournies par les agents précédemment enregistrés : Pandora FMS se chargera des équivalences et des correspondances pour nous.

Lorsque les détections sont contrôlées par les agents du SGF Pandora, il est facile de connaître leurs systèmes d’exploitation, qui sont représentés graphiquement dans l’extension IPAM. Nous pouvons définir des alertes lorsqu’une adresse IP change, nous pouvons également voir une vue d’ensemble avec toutes les adresses ou de manière segmentée : les appareils actifs, les appareils gérés, etc. et leurs combinaisons possibles.
Quel est donc l’avantage d’utiliser php IPAM ?

php IPAM

Il existe une grande variété de logiciels disponibles pour travailler avec l’IPAM et dans cet article, nous examinerons en détail le logiciel php IPAM en tant qu’outil auxiliaire, mais nous examinerons d’abord les concepts qui impliquent les adresses IP : sans ce concept abstrait, l’Internet et le monitoring n’existeraient pas du tout.

Bref historique de php IPAM

La première version publique était la 0.1 et en novembre 2014, php IPAM a publié sa version 1.1 du travail de Miha Petkovsek, en janvier 2016 la version 1.2 et en juillet 2017 la version 1.3 a été publiée.

Il est développé sous la modalité du logiciel libre, la licence GNU 3 depuis juin 2015 lorsque les dépôts ont été déplacés sur GitHub et apparemment sa source de financement est constituée de dons d’argent et d’hébergement web. En fait, le site se trouve dans une machine virtuelle spéciale, fournie par une société d’hébergement. Ce modèle de logiciel libre a rassemblé une communauté restreinte, si bien qu’il est difficile de trouver des informations à son sujet.

Aujourd’hui, dans presque toutes les entreprises et tous les foyers, il y a un réseau local. Au début de l’internet, le système d’adresses IP a été planifié de telle sorte qu’il a été décidé de réserver trois types de réseaux à un usage privé sur les réseaux locaux. Ces adresses sont appelées adresses privées. Chaque organisation peut utiliser ces adresses privées pour connecter ses appareils et chaque appareil peut également avoir une ou plusieurs adresses IP. (Par exemple, un ordinateur portable peut être connecté par un câble Ethernet, par son antenne “wifi” intégrée et aussi par une antenne “wifi” connectée par un port USB ; en général, les serveurs web sont redondants et ont deux connexions Ethernet pour le trafic de données et au moins une connexion Ethernet pour la surveillance).
Les adresses sont répétées dans chaque organisation, mais il n’y a pas de problème car elles ne sont pas connectées entre elles et c’est là qu’intervient Internet, l’interconnexion des réseaux privés par la traduction d’adresse réseau (NAT) car sur Internet chaque adresse IP publique est unique et les routeurs obtiennent une adresse IP publique qui est “partagée” au sein de chaque organisation.

Pratique numérique (calculatrices IP)

De combien d’adresses IP avons-nous besoin dans notre organisation ?
Il existe trois types d’adresses pour un usage privé :

  • Classe A: 10.0.0.0 a 10.255.255.255 (8 bits de réseau, 24 bits d’hôte).
  • Classe B: 172.16.0.0 a 172.31.255.255 (16 bits de réseau, 16 bits d’hôte)
  • Classe C: 192.168.0.0 a 192.168.255.255 (24 bits de réseau, 8 bits d’hôte)

En résumé, la classe A permet un réseau unique avec des millions d’adresses IPv4, la classe B permet 16 réseaux, chacun avec des milliers d’adresses IP et la classe C permet des centaines d’adresses IPv4 (exactement 253 parce que 0 et 255 ont d’autres utilisations que nous verrons plus loin). Il existe d’autres types de réseaux qui ne sont pas pertinents pour cet article, comme la classe D pour la multidiffusion et la classe E pour la recherche et le développement.
Pour ce qui nous concerne, les réseaux de classe C sont en réalité adaptés à nos besoins à la maison et dans les petites entreprises. Il est facile et pratique de suivre une ou deux douzaines d’appareils sur le routeur qui partage une adresse IP publique pour l’ensemble du réseau privé.

Mais dans les autres cas, des milliers, voire des millions d’adresses IP sont un véritable cauchemar, une entreprise qui prend beaucoup de temps. Pour ces cas, nous devons suivre exactement les mêmes étapes que l’ICANN (Internet Corporation for Assigned Names and Numbers) : attribuer un sous-réseau à chacun des départements et déléguer l’autorité aux chefs de département. Mais tout écrire et tout enregistrer dépasse largement les capacités d’un tableur et c’est pourquoi le logiciel php IPAM a été développé.

Installation de php IPAM

Contrairement aux détails historiques, il existe de nombreux tutoriels sur php IPAM sur internet, certains sont meilleurs que d’autres ; nous l’avons essayé sur Ubuntu 16 et nous avons obtenu les images que vous pouvez voir. La première chose que nous avons faite à la fin de l’installation a été de télécharger notre propre logo à des fins d’évaluation et de remplir les données qui identifient notre serveur de test, y compris l’envoi d’email qui est très important pour recevoir les alertes, bien que cela ne soit pas si courant en raison de la nature du travail.

En résumé, vous avez besoin d’un serveur de base de données MySQL, d’un serveur web Apache, des autorisations appropriées du pare-feu lorsque vous scannez votre réseau ou vos réseaux locaux… et même des sous-réseaux, ce qui nous amène au point suivant.

Sous-réseaux (ou en d’autres termes : comment fonctionne l’IPAM de php)

Certains d’entre nous ne travaillent pas avec des sociétés d’hébergement ou des fournisseurs d’accès à Internet, c’est pourquoi les exemples présentés ici sont basés sur des adresses privées. Nous pouvons vous assurer que tout ce qui est décrit ici s’applique à l’Internet et qu’il existe des organisations “qui gagnent de l’argent” avec l’aide de php IPAM, qui à leur tour font des dons à la Fondation FreeBSD, c’est donc un cycle sans fin.
Les tâches de php IPAM sont le suivi et le stockage d’informations dans une base de données MySQL :

  • Nos appareils et leurs adresses IP
  • Nos armoires ou baies informatiques
  • Nos circuits (avec l’aide de Google Maps APIs)
  • Il supporte l’authentification LDAP, ce qui nous épargne beaucoup de travail
  • Pour suivre les réseaux privés virtuels
  • Les NATs que nous avons créés pour que nos ordinateurs puissent se connecter à l’extérieur
  • Vous pouvez même prendre des notes dans une sorte de micro Wikipédia ! (bien que nous ne le recommandions pas pour la gestion des problèmes, il serait peut-être possible de le faire dans l’ordre chronologique des causes/effets/solutions pour éviter de commettre deux fois les mêmes erreurs).

Pour parler des sous-réseaux, qui sont une tâche routinière et difficile à synchroniser entre ordinateurs, nous devons d’abord expliquer comment ils sont gérés et pourquoi ils existent. En 1980, les appareils chargés de se connecter à l’internet étaient des appareils très basiques. Le besoin de créer des sous-réseaux de travail s’est donc fait sentir, mais les ordinateurs ne disposaient pas de la technologie nécessaire. La solution a consisté à créer des masques de sous-réseau pour permettre aux appareils de détecter rapidement si le message ou le datagramme reçu appartenait au sous-réseau sur lequel ils avaient été chargés de travailler.
C’est pourquoi le masque est utilisé pour distinguer l’adresse IP entre la partie qui identifie le réseau et la partie qui identifie le dispositif, outre le fait qu’il le fait avec des nombres binaires. Les masques de réseau ont le même format que les adresses IPv4, mais toujours avec des valeurs pour chaque octet, un par un. Par exemple, le masque de réseau pour un réseau privé de classe A que nous allons créer dans php IPAM serait le suivant :

11111111.00000000.00000000.00000000

C’est-à-dire, en notation décimale, 255.0.0.0.0 puisque notre réseau privé peut contenir des millions d’adresses IPv4 (la multiplication des trois derniers octets 255 x 255 x 255 = 16581375 approximativement parce que les adresses zéro identifient le réseau et 255 est utilisé pour la multidiffusion). Imaginons maintenant qu’il y ait au moins un million d’appareils dans notre organisation. Comment les appareils pourraient-ils assurer le transport et l’expédition de paquets ou de datagrammes avec un tel volume d’utilisateurs ?
La solution pratique de l’époque consistait à appliquer une opération ET (une opération ET est une simple multiplication) à chaque adresse de paquet et à chaque masque de réseau, afin de déterminer si le paquet était destiné au réseau ou au sous-réseau. Supposons qu’un paquet soit acheminé vers 10.0.7.23 sur notre réseau privé de classe A

0000000010.000000000000.0000000007.0001010111 <-package addressed to 10.0.7.23
11111111.000000000000.000000000000000000 <- net mask 255.0.0.0.0
00000010.000000000000.0000000000.0000000000 <-oper. AND results in 10.0.0.0.0 (multiplication)

Voici quelque chose qui est implicite : notre masque de réseau, “celui que nous avons choisi” est implicite parce qu’un réseau de classe A le premier octet identifie le réseau, c’est à dire 8 caractères donc dans une notation appelée CI DR (qui implique l’adresse de notre réseau et le masque de réseau ensemble) est représenté par ce qui suit simplement comme suit : 10.0.0.0/8

1. Création d’un sous-réseau privé

Imaginons maintenant que, dans notre réseau privé de classe A, nous ayons besoin d’un sous-réseau où nous placerons les machines pour nos tests de programmation. Pour ce faire, 253 adresses IPv4 sont plus que suffisantes, donc d’un commun accord avec notre ordinateur, on nous attribue 10.0.0.0/24, ce qui signifie que dans le réseau privé de classe A 10.0.0.0.0, on nous attribue un masque de réseau 255.255.255.0 et, pour revenir au dernier exemple numérique, mais avec notre masque de réseau, nous devons créer un sous-réseau privé :

0000000010.000000000000.00000111.0001010111 <-package addressed to 10.0.7.23
11111111.11111111.11111111.0000000000 <- net mask 255.255.255.255.0
00000010.000000000000.00000111.0000000000 <-oper. AND results in 10.0.7.0
(ce n'est pas notre réseau, notre réseau est identifié comme 10.0.0.0.0)

2. Sous-réseau public

À la fin du siècle dernier, nous nous sommes rendu compte que les adresses IPv4 commençaient à manquer en raison de la croissance exponentielle de l’internet. L’ICANN s’est donc rendu compte que de nombreux fournisseurs d’accès à l’internet (“fournisseurs de services internet” ou ISP) s’étaient vu attribuer de très grands blocs, ce qui entraînait des adresses IPv4 inutilisées. La décision a été solennelle : attribuer les adresses en utilisant des masques de réseau pour chaque fournisseur afin d’obtenir la bonne taille et, croyez-le ou non, leurs ordinateurs effectuent ces calculs des millions de fois par jour : ils comparent les adresses aux masques de réseau pour voir si elles se trouvent dans leur sous-réseau (aujourd’hui, en fait, d’autres mécanismes sont mis en œuvre dans les modems, routeurs, concentrateurs et répéteurs existants, mais le concept de base reste le même). C’est pourquoi nous avons dit que de nombreuses organisations bénéficient de l’utilisation de php IPAM pour enregistrer et planifier les adresses attribuées.

3. Sous-réseaux avec masque de longueur variable

Si vous avez compris jusqu’ici ce que nous avons expliqué, certains universitaires ou professionnels pourraient être surpris. Nous pouvons passer à la notion de masque de réseau de longueur variable : aussi simple que cela puisse paraître, ils ne sont pas limités aux valeurs par octet (8, 16 et 24) mais à toute autre valeur, telle que 10.0.0.0.0/28 pour notre exemple (nous vous laissons le soin de vous exercer avec votre calculatrice IP).

Création d’utilisateurs et de groupes dans php IPAM

Après cette base conceptuelle, nous recommandons de commencer par la création de groupes et ensuite d’utilisateurs lorsque l’on travaille avec php IPAM. Php IPAM inclut par défaut deux groupes créés : le groupe administrateur et le groupe invité. Cela nous permettra simplement de regrouper nos utilisateurs lors d’une recherche ou d’une visualisation ou de garder à l’esprit un certain type d’ordre, c’est-à-dire que cela ne fournit aucune autre utilisation des droits d’écriture ou d’héritage.

Dans la partie consacrée à la création d’utilisateurs, nous disposons d’une vue d’ensemble complète : nous pouvons créer un utilisateur en tant qu’utilisateur normal ou administrateur et, en même temps, nous pouvons voir les groupes que nous avons créés (n’oubliez pas que la description du groupe avec sa classification d’utilisateurs n’est pas contraignante, un groupe décrit comme “Administrateurs à distance” ne signifie pas que ses utilisateurs ont des droits d’administrateur). La simplicité est souvent la bienvenue, en utilisant les deux groupes créés, nous pouvons travailler à moins que l’organisation ne soit extrêmement grande.

Lors de la création d’un utilisateur, on nous montrera comment nos utilisateurs s’authentifieront et nous ne verrons que deux options : par base de données locale et par Apache qui est une méthode obsolète et basée sur des fichiers que nous ne recommandons pas. Notre choix se portera sur LDAP, mais nous devons d’abord activer la bibliothèque php-ldap sur notre serveur Apache et redémarrer le service. Au total, il existe sept formes d’authentification possibles :

  • Local.
  • Apache.
  • Active Directory (AD).
  • LDAP.
  • NetIQ.
  • Radius.
  • SAMLv2.

Calculatrice IP

Une fois que nous avons préparé le terrain, nous pouvons créer nos réseaux et sous-réseaux. Le plus simple est d’aller dans le calculateur d’IP intégré, d’entrer le CIDR qui vous a été attribué ou celui que vous créerez vous-même dans le cas de réseaux privés. php IPAM calculera et affichera toutes les valeurs et vous proposera de créer un réseau avec ce résultat et même ses sous-réseaux.

*Note importante : si certains sous-réseaux ou sous-réseaux de phpIPAM se chevauchent, cela sera indiqué par un avertissement en lettres rouges.

Une fois que les valeurs CIDR ont été correctement définies, nous pouvons attribuer aux groupes d’utilisateurs les droits correspondants sur ce réseau ou sous-réseau (notez que les droits sont donnés ici en tant qu’option). Nous tenons ici à souligner une fois de plus la façon particulière de gérer les droits de lecture et d’écriture dans php IPAM !

Exploration des périphériques dans php IPAM

Pour faciliter les tâches d’ajout de php IPAM, il est possible d’utiliser le programme ping pour contacter les appareils de notre réseau ou sous-réseau précédemment créé, mais ce qui est intéressant, c’est qu’il existe deux autres moyens, l’un pour les appareils que nous possédons déjà et l’autre pour les nouveaux appareils :

  • Par l’intermédiaire d’agents : cette méthode est similaire à celle de Pandora FMS, c’est-à-dire un logiciel installé sur chaque machine et adapté au système d’exploitation actuel. Dans l’environnement Windows, l’Active Directory nous permettra de massifier cette tâche et dans GNU/Linux, par SSH et des scripts bien conçus, nous pourrons gérer des centaines ou même des milliers de machines comme souhaité.
  • Voici ce qui est nouveau et très utile :
    • Lors de l’installation de nouveaux appareils, nous pouvons les configurer avec le nom du réseau ou du sous-réseau.
    • Avec son script respectif, il se connecte à l’API de php IPAM.
    • Il vérifie la dernière adresse IP libre dans cette plage.
    • Il attribue lui-même cette valeur.
    • Elle est confirmée à php IPAM et enregistrée dans la base de données MySQL.
    • De cette manière, php IPAM devient une sorte de DHCP à la différence qu’il n’est utilisé qu’une seule fois : lorsque la machine virtuelle ou le périphérique est installé (cela peut aussi être réel, c’est la même chose mais il est évident qu’un être humain est en charge du processus, cela se produirait lors du montage des racks de la ferme de serveurs, qui contiennent à leur tour les machines virtuelles).
    • Actuellement, il existe des machines virtuelles qui peuvent même être construites par nos propres clients comme ils le souhaitent sur nos fermes de serveurs (chacun choisit son système d’exploitation pour l’hyperviseur que nous avons configuré avec php IPAM.
    • Bien entendu, il comprend également des routines de suppression, au cas où les dispositifs virtuels seraient supprimés ou les dispositifs réels déplacés ou désactivés.

Outil auxiliaire

php IPAM peut également enregistrer nos serveurs DNS, surveiller les adresses IP inactives et les appareils, avec un simple ping, fping ou pear ping.

Il utilise des agents, enregistre et gère les NATs ainsi que la surveillance de base avec SNMP, mais nous devons d’abord configurer notre serveur Apache avec le module php-snmp . Ensuite, nous pouvons configurer les dispositifs à surveiller. Il nous permettra même de créer des traps SNMP , qui sont utiles pour la création d’alertes d’événements. Pour une meilleure compression, nous avons un article complet sur les aspects de base à consulter à travers SNMP.

Exporter et importer des données

Pour finir, php IPAM a la possibilité d’importer ou d’exporter des données au format tableur des sections dont nous pourrions avoir besoin ou nous pourrons exporter (mais pas importer) la base de données complète au format SQL ou dans une grande feuille de calcul !

Dans le cas de l’importation de données, nous devons suivre un protocole détaillé afin d’obtenir une compatibilité exacte des données :

Automatisation de l’exportation des données

Bien que l’option tableur soit disponible, nous suggérons de développer à travers l’API quelques scripts qui permettent d’extraire des données mises à jour et de savoir s’il y a eu des changements dans le réseau et quels sont ces changements, si nous avons ajouté ou supprimé des dispositifs, nous-mêmes ou nos clients à qui nous avons délégué la création de machines virtuelles et ainsi nous serons en mesure de surveiller avec Pandora FMS l’infrastructure complète.

Si nous voulons aller plus loin, nous pourrions également créer un plugin pour Pandora FMS qui consulte directement la base de données à la recherche de changements, mais il s’agit d’un sujet avancé, ce ne serait pas un plugin normal (évidemment avec des droits de lecture seule, toujours de php IPAM à Pandora FMS).

Conclusion

Nous prévoyons un grand avenir si, avec php IPAM, qui est créé en logiciel libre et dont nous avons accès au code source, nous pouvons obtenir des données sur les dispositifs que nous devons surveiller de manière presque entièrement automatisée, en gardant les ordinateurs de planification et de développement de l’infrastructure complètement isolés des ordinateurs de surveillance et de maintenance. Nous voyons donc une excellente relation symbiotique entre les deux produits logiciels !

N’hésitez pas à nous faire part de vos commentaires ou opinions et nous serons heureux d’y répondre.

Shares