Supervision de réseau Master Informatique première année Olivier Flauzac olivier.flauzac@univ-reims.fr Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 1 / 58
Plan 1 Supervision de réseau 2 Le protocole SNMP Introduction Informations Fonctionnement et protocole 3 Commandes UNIX 4 SNMP à travers un serveur Apache SNMP et PHP Connexion SSH depuis PHP Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 2 / 58
Plan 1 Supervision de réseau 2 Le protocole SNMP Introduction Informations Fonctionnement et protocole 3 Commandes UNIX 4 SNMP à travers un serveur Apache SNMP et PHP Connexion SSH depuis PHP Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 3 / 58
Supervision Généralités nécessité de contrôler le fonctionnement d un réseau collecter les différents paramètres d exécution étudier les données collectées définir des seuils d alerte être alerté des dysfonctionnement configurer les entités du réseau à distance Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 4 / 58
Contrôle Eléments contrôlables ordinateurs serveurs ordinateurs utilisateurs équipements réseau routeur commutateurs... périphériques réseau imprimante tout élément connecté capable d interpréter une requête machine à café Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 5 / 58
Informations collectées (1/2) Informations réseau traffic réseau indifférencié traffic réseau différencié protocole (TCP, UDP) port / application connexions Etat charge CPU occupation mémoire éléments système Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 6 / 58
Informations collectées (2/2) Configuration système info réseau (IP, DNS...) cartes et interfaces installés (drivers) Configuration logicielle système d exploitation (type, version, révision...) logiciels installés (nom, version, date d installation...) Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 7 / 58
Alertes Principe non basé sur une interrogation à l initiative de l élément supervisé Types d alertes charge réseau charge CPU occupation mémoire Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 8 / 58
Plan 1 Supervision de réseau 2 Le protocole SNMP Introduction Informations Fonctionnement et protocole 3 Commandes UNIX 4 SNMP à travers un serveur Apache SNMP et PHP Connexion SSH depuis PHP Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 9 / 58
Plan 1 Supervision de réseau 2 Le protocole SNMP Introduction Informations Fonctionnement et protocole 3 Commandes UNIX 4 SNMP à travers un serveur Apache SNMP et PHP Connexion SSH depuis PHP Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 10 / 58
Généralités SNMP Simple Network Management Protocol RFC 1157 protocole de supervision de réseau Objectifs gestion des équipements du réseau à distance récupération d informations configuration diagnostique de pannes Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 11 / 58
Environnement technologique Ressources et protocoles fonctionnement de type client / serveur pour les interrogations exploitation du protocole UDP léger et rapide représentation des information avec ASN.1 ouvert : non limité à une plate-forme / architecture exploitation sur un réseau hétérogène extensible Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 12 / 58
Versions SNMP v1 1988 normalisation IETF (RFC 1157) intégré depuis dans la majorité des entités connectables mécanisme de sécurité limité à une chaîne de caractères SNMP v2 v2p, v2c, v2u, v2* non issu d un consensus de normalisation essentiellement expérimentale SNMP v3 mars 2002 intégration des éléments de sécurité : usager droits spécifiques pour les opérations Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 13 / 58
Equipements et informations types d équipements éléments de réseau (routeur, pont...) serveur imprimante machine de bureau types d informations info de fonctionnement (uptime) info matériel (processeur, interfaces) infos système (version, installation) infos statistiques (interfaces, charge...) Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 14 / 58
Structure d un système de supervision Principe échange d informations entre des entités collecte d informations demandées réception d alertes (trap) Eléments équipements gérés (managed devices) agents systèmes de management réseau (network management systems (NMS) Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 15 / 58
Equipemente gérés Managed Devices éléments de réseau hub, routeur, serveur dotés d objets de gestion (managed objects) informations sur le matériel éléments de configuration informations statistiques Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 16 / 58
Agents Agents SNMP application de gestion de réseau résidant dans un périphérique assure la transmission des informations collect des données locales mise en forme des données Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 17 / 58
Systèmes de management réseau network management systems (NMS) console de l administrateur gestion distante des unités du réseau collecte d informations requêtes / réponses configuration et modification Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 18 / 58
Plan 1 Supervision de réseau 2 Le protocole SNMP Introduction Informations Fonctionnement et protocole 3 Commandes UNIX 4 SNMP à travers un serveur Apache SNMP et PHP Connexion SSH depuis PHP Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 19 / 58
Représentation des informations MIB Management Information Base collection d objets structuration en base de données virtuelle normalisation de la MIB extensibilité de la base possibilité de charger des structures spécifiques adaptation aux spécificités des entités extension offertes par les constructeurs Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 20 / 58
OID Définition Object IDentifer identificateur d un objet au sein de la MIB identificateur unique associé à un élément Structuration définition selon un arbre hiérarchisation des éléments accès par le chemin entre la racine et l élément nommage des nœuds successifs description numérotée Identificateur de l objet MIB iso.org.dod.internet.mgmt.mib 1.3.6.1.2.1. Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 21 / 58
Arbre Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 22 / 58
Quelques groupes MIB-II System Group : 1.3.6.1.2.1.1 sysdescr (1) sysuptime (3) syscontact (4) sysname (5) syslocation (6) IP groupe 1.3.6.1.2.1.4 statistiques IP éléments de routage Protocoles de communication TCP groupe 1.3.6.1.2.1.6 UDP groupe 1.3.6.1.2.1.7 Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 23 / 58
Informations spécifiques Gestion de l hôte.iso.org.dod.internet.mgmt.mib-2.host.1.3.6.1.2.1.25 système processus en cours d exécution installation de la machine Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 24 / 58
Quelques MIB spécifiques Protocoles ADSL Token Ring IPV6 Constructeurs 3Com Lucent CIsco Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 25 / 58
Plan 1 Supervision de réseau 2 Le protocole SNMP Introduction Informations Fonctionnement et protocole 3 Commandes UNIX 4 SNMP à travers un serveur Apache SNMP et PHP Connexion SSH depuis PHP Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 26 / 58
Fonctionnement de SNMP Schéma de fonctionnement Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 27 / 58
Requêtes Ports port de réception des agents : 161 port d alerte de la station de gestion : 162 Requêtes SNMP GetRequest : recherche d une variable sur un agent GetNextRequest : recheche de la variable suivante GetBulk : recherche d une ensemble de variables SetRequest : modification d une variable sur un agent Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 28 / 58
Réponses Réponses Trap GetResponse : structure unique d une réponse ajout de nosuchobject en cas d erreur message à l initiative des agents alertes possibles : ColdStart, WarmStart, LinkDown, LinkUp, AuthentificationFailure Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 29 / 58
Trames snmp v1 et v2 Paquet SNMP version vesion utilisée pour les échanges communauté sécurité élémentaire (public, private) PDU données transmises Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 30 / 58
PDU SNMP v1, v2 Structure type GetRequest, GetnetRequest... RequestID numérotation des requêtes pour identification des réponses Error Status objet inexistant, permission Data suite de paires : ObjectName, Valeur Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 31 / 58
SNMP V3 Structuration structuration en modules : transport : permet l indépendance de SNMP vis à vis des protocoles utilisés (UDP, IPX...) traitement : décodage des paquets en fonction des versions de protocole sécurité : cryptage, authentification application : définition des applications spécifiques qui exploitent le protocole accès : authorisation Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 32 / 58
Manager v3 Structure Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 33 / 58
Agent v3 Structure Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 34 / 58
Trame v3 Structure version en-tête identificateur taille maximale contrôle et rapport (cryptage, authentification, attente de réponse) sécurité identification de la méthode PDU Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 35 / 58
PDU SNMP V3 Structure type GetRequest, GetnetRequest... RequestID numérotation des requêtes pour identification des réponses Error Status objet inexistant, permission Error Index position de l erreur Data suite de paires : ObjectName, Valeur Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 36 / 58
Sécurité de SNMP V3 Eléments de sécurité authentification localisation des mots de passe cryptage estampillage du temps Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 37 / 58
Plan 1 Supervision de réseau 2 Le protocole SNMP Introduction Informations Fonctionnement et protocole 3 Commandes UNIX 4 SNMP à travers un serveur Apache SNMP et PHP Connexion SSH depuis PHP Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 38 / 58
Accès aux OID snmptranslate snmptranslate. 1. 3. 6. 1. 2. 1. 1. 3. 0 SNMPv2 MIB : : sysuptime. 0 snmptranslate On SNMPv2 MIB : : system. sysuptime. 0. 1. 3. 6. 1. 2. 1. 1. 3. 0 Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 39 / 58
Accès aux Données snmpget snmpget c p u b l i c v 2c test. net snmp. org system. sysuptime.0 system. sysuptime. 0 = Timeticks : (586731977) 67 days, 21: 48: 39. 77 snmpgetnext snmpgetnext v 2c c demopublic test. net snmp. org system. sysuptime. 0 system. syscontact. 0 = Wes Hardaker wjhardaker@ucdavis. edu Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 40 / 58
Accès aux Données snmpwalk snmpwalk v 2c c demopublic test. net snmp. org system system. sysdescr. 0 = HP UX net snmp B. 10. 20 A 9000/715 system. sysobjectid.0 = OID : e n t e r p r i s e s. ucdavis. ucdsnmpagent. hpux10 system. sysuptime. 0 = Timeticks : (586998396) 67 days, 22: 33: 03. 96 system. syscontact. 0 = Wes Hardaker wjhardaker@ucdavis. edu system. sysname. 0 = net snmp.... Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 41 / 58
Plan 1 Supervision de réseau 2 Le protocole SNMP Introduction Informations Fonctionnement et protocole 3 Commandes UNIX 4 SNMP à travers un serveur Apache SNMP et PHP Connexion SSH depuis PHP Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 42 / 58
Plan 1 Supervision de réseau 2 Le protocole SNMP Introduction Informations Fonctionnement et protocole 3 Commandes UNIX 4 SNMP à travers un serveur Apache SNMP et PHP Connexion SSH depuis PHP Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 43 / 58
Principe Requête HTTP 1 Requête SNMP 2 Client WEB 4 3 Réponse HTTP Réponse SNMP Serveur WEB - PHP Elément réseau Problème possible temps de réponse de SNMP Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 44 / 58
Installation Procédure utilisation d un gestionnaire de packages installation de la lib SNMP (net-snmp) installation de SNMP pour PHP Test relancer apache! rechercher l extension SNMP dans une page phpinfo Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 45 / 58
Opérations possibles PHP SNMP ensemble des opérations classiques SNMP snmpget snmpset snmpwalk... accès à l aide de fonctions de la bibliothèque gestion des appels effectué par PHP Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 46 / 58
snmpget Prototype simplifié s t r i n g snmpget ( s t r i n g $hostname, s t r i n g $community, s t r i n g $ o b j e c t _ i d ) Exemple <? $syscontact = snmpget ( " 127. 0. 0. 1 ", " p u b l i c ", " system. SysContact.0 " ) ;?> Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 47 / 58
snmpgetnext Prototype simplifié s t r i n g snmpgetnext ( s t r i n g $host, s t r i n g $community, s t r i n g $ o b j e c t _ i d ) Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 48 / 58
snmpwalk Prototype simplifié array snmpwalk ( s t r i n g $hostname, s t r i n g $community, s t r i n g $ o b j e c t _ i d ) Exemple <?php $a = snmpwalk ( " 127.0.0.1 ", " p u b l i c ", " " ) ; foreach ( $a as $val ) { echo " $val \ n " ; }?> Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 49 / 58
snmpset Prototype simplifié bool snmpset ( s t r i n g $hostname, s t r i n g $community, s t r i n g $ o b j e c t _ i d, s t r i n g $type, mixed $value Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 50 / 58
Plan 1 Supervision de réseau 2 Le protocole SNMP Introduction Informations Fonctionnement et protocole 3 Commandes UNIX 4 SNMP à travers un serveur Apache SNMP et PHP Connexion SSH depuis PHP Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 51 / 58
Limite de l utilisation de l extension SNMP Fonctions SNMP appel aux fonction de la bibliothèque standard de Net-SNMP passage des informations au format ASN.1 passage des informations en clair : possibilité de "captage" des communautés possibilité de "captage" des mots de passe Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 52 / 58
Une autre approche : Utilisation d un shell séurisé Utilisation d une connexion SSH : Principe 1 requête du client vers la page PHP 2 connexion du script PHP à un serveur SSH 3 "passage" de commandes Net-SNMP dans le shell sécurisé 4 récupération des résultats par la page PHP 5 traitement et affichage (si nécessaire) des résultats 6 réponse à la requête du client Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 53 / 58
Principe 1 2 3 Requête HTTP 6 Requête SSH 5 Requête SNMP 4 Client Serveur WEB Serveur SSH Elément réseau Problème possible temps de réponse de SSH + temps de réponse SNMP Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 54 / 58
Mise en œuvre : actualisation du système Mise à jour du système apt get apt get update upgrade Installation apache2 + php5 + php5-dev + openssl + libssl-dev + g++-3.4 + make Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 55 / 58
Mise en œuvre : mise en place de la lib libssh2 http://ovh.dl.sourceforge.net/sourceforge/libssh2/libssh2-0.14.tar.gz. / c o n f i g u r e && make a l l i n s t a l l Le module ssh2 http://pecl.php.net/get/ssh2-0.10.tgz phpize &&. / c o n f i g u r e with ssh2 && make copie du module dans le répertoire des modules PHP définition de l extension PHP ssh2 Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 56 / 58
Mise en œuvre : Exemple Exemple PHP <? / / établissement de l a connexion $conn = ssh2_connect ( l o c a l h o s t, 2 2 ) ; / / test de l a connexion i f ( $conn ) echo " connexion réussie \ n " ; else e x i t ( 1 ) ; / / a u t h e n t i f i c a t i o n ssh2_auth_password ( $conn, log, pass ) ; / / exécution d une commande sur l hôte $stream = ssh2_exec ( $conn, snmpwalk v 2c c p u b l i c l o c a l h o s t ) ; Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 57 / 58
Mise en œuvre : Exemple suite Exemple PHP / / mise en place du mode bloquant : / / a t t e n t e de r é c e p t i o n des données stream_ set_ blocking ( $stream, true ) ;?> / / l e c t u r e des données issues du f l u x créé while ( $in = fread ( $stream, 8192 ) ) { / / a f f i c h a g e formaté des données echo n l 2 b r ( $in ) ; } Olivier Flauzac (URCA) Supervision de réseau olivier.flauzac@univ-reims.fr 58 / 58