Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
1.7.2. La méthode basée sur l’utilisation d‘un protocole de gestion de réseau tel que
SNMP (Simple Network Management Protocol)
1.8. Notion de Qualité de Services (Qos)
1.8.1. Définition de la qualité de services
La Qos peut être définie sur plusieurs points de vue :
o Pour un utilisateur : c’est le fait d’obtenir le meilleur service au meilleur prix
o Pour un administrateur réseau : c’est le fait d’obtenir le meilleur service pour
un groupe d’utilisateur
o Pour un ingénieur réseau : c’est le fait de concevoir des architectures réseaux
intégrant des mécanismes de mesures de qualité de services
Il est aussi important d’activer des fichiers logs des principaux serveurs tels que :
Serveurs de bases de données, serveurs Web, serveurs de mail, serveur FTP etc, pour se
familiariser avec les fichiers logs on vous demande d’effectuer les manipulations
suivantes :
Activation du fichier log de mysql
En éditant le fichier /etc/mysql/my.cnf on constate que le fichier log du server mysql n’est
pas activé
Nous allons modifier ce fichier comme suite en décommantant les deux lignes comme suit
.
On démarre apache2 avec service apache2 start puis on se rend dans un navigateur
Pour visualiser notre journal log on revient sur le terminal et on tape tail.
/var/log/apach2/access.log
Il est important de quand on gère un ensemble de serveurs de disposer d’un firewall pour
filtrer les trafics en autorisant que les échanges permis par l’administrateur.
Un firewall analyse tout le trafic et vérifie si chaque si chaque paquet échangé respecte bien
les critères de filtrage fixés.
Les critères peuvent être divers (filtrer les ports, les protocoles, les adresses IP, etc…
En règle générale un bon firewall doit tout bloquer par défaut et l’administrateur ne doit
autoriser que certain trafic.
Sous linux on utilise l’utilitaire Iptables soit mettre en place un firewall ou faire la
translation d’adresse ou port appelé NAT ou PAT
Exemple :
Outils iptables:
On bloque par défaut tout le trafic : si vous êtes en ssh, bien entendu,
n’exécutez pas encore le script
o iptables -t filter -P INPUT DROP
o iptables -t filter -P FORWARD DROP
o iptables -t filter -P OUTPUT DROP
Notez enfin que si vous voulez un échange, il faut toujours ouvrir le port dans les deux sens
(INPUT et OUTPUT)... logique.
Il ne vous reste qu’à spécifier toutes les règles nécessaires. Voici un petit tableau pour vous
aider (il s’agit de données par défaut) :
Outil netstat
Netstat –anp | grep –w numero_port permet de voir le ou les services qui utilisent ce port
nmap
nmapaddress_IPpermet d’avoir la liste de tous les ports ouverts sur une machine dont
l’adresse a été spécifiée
img5
En fait nmap permet de faire un scan de tous les ports ouverts. On peut aussi limiter un
tant soit peu le scan de ports (qui consiste à tester tous vos ports afin de détecter ceux qui
sont ouverts). Pour cela, une règle de ce genre irait :
o iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit
--limit 1/s -j ACCEPT
o Flood ou déni de service
Ce genre d’attaque vise à surcharger la machine de requête. Il est possible de s’en prémunir
pas mal directement au niveau du firewall :
Actuellement, le firewall va bloquer toutes tentatives de connexions sur les ports fermés.
Mais qu’en est-il des ports ouverts ? Afin de contrôler plus précisément ce qui se passe
dessus, le firewall n’est pas suffisant et nous allons devoir utiliser d’autres outils, appelés
IDS (Intrusion Detection System) et IPS (Intrusion Prevention System). Ces deux
catégories de logiciels vont - comme leur nom l’indique - surveiller toute tentative
d’intrusion sur le serveur.
La démarche qui va suivre va vous montrer comment réagir à chaque étape d’une tentative
intrusion classique, à savoir
c) l’intrusion (via des techniques qui ne seront pas décrites ici car dépassant notre
cadre de travail).
Cet utilitaire permet de bloquer en temps réel la plupart des scans de port connus (même
très discrets et échappant aux règles de filtrage du firewall basiques). Je rappelle au
passage que scanner les ports signifie tester tous les ports d’une machine afin de
déterminer ceux qui sont ouverts (les portes d’entrées en gros). Cependant, il ne faut pas
paniquer si votre serveur est la cible d’un simple scan de port, cela sera monnaie courante,
et si vous êtes bien protégé, le pirate passera sa route.
Portsentryest donc sympa si vous voulez compliquer la tâche de l’attaquant :
Pour le configurer :
o nano /etc/portsentry/portsentry.conf
Ainsi, Portsentry ajoutera une règle dans le firewall (iptables) pour rejeter les
paquets en cas de scans.
On démarre le logiciel (il faut le lancer deux fois, pour TCP et UDP) :
o portsentry–audp
o portsentry–atcp
Vous pouvez tester tout ça avec nmap (si vous voulez tester en local, il vous faut modifier le
fichier portsentry.ignore en enlevant le localhost).
o L’outil fail2ban
Définition : fail2ban
fail2ban est un service permettant de contrôler les tentatives de connexion de
divers services sous linux (ssh, apache, mail etc).
On peut limiter le nombre de tentatives consécutives à un service d'une même
personne et la bloquer pour un temps plus ou moins long.
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
Ici donc nous avons géré la prison SSH, c'est à dire l'authentification à votre serveur.
Pour activer celle-ci, il suffit de passer le paramètre enabled à true. Nous avons
reduit le nombre de tentatives à avant le blocage de l'IP de l'intrus avec le
paramètre maxretry.
Le paramètre port contient pour l'instant "ssh" qui est en réalité un alias de 22, qui est le
port par défaut de SSH sous linux.
[apache]
enabled = false
port = http,https
filter = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6
On peut aussi des prisons fail2ban pour se premunir r contre les scans d'url à la recherche
de faille de sécurité et contre les attaques de type DDOS sur beaucoup de services réseaux.
Tester la configuration
Commençons par redémarrer le service pour que notre configuration soit prise
en compte :
fail2ban-client reload
Maintenant nous allons consulter le fichier log de fail2ban pour vérifier que tout
est OK :
tail -n 300 /var/log/fail2ban.log
o Interdire les utilisateurs sans mot de passe (ce sont d’énormes failles
potentielles)
o toujours choisir de bons mots de passe : 8 caractères minimum, pas un
mot qui se trouve dans le dictionnaire, si possible des chiffres, des
majuscules, des symboles... au besoin, un outil comme pwgenvous en
génèrera automatiquement des bons (apt-get install pwgen)
maintenir son système à jour (apt-get update et apt-get upgrade) ;
toujours utiliser ssh pour l’accès à distance (et non telnet ou des services
graphiques, sauf s’ils sont en tunnel à travers ssh).
SSH
En premier lieu, il faut regarder du côté de ssh, puisque c’est tout de même un accès direct
à votre machine.
Pour ce faire...
o nano /etc/ssh/sshd_config
o Port : le port par défaut est 22... et n’importe quel attaquant le sait. Changer le port
force à effectuer un scan (ou équivalent) avant de réfléchir à attaquer (attention de
bien changer le port dans le firewall) ;
Et on redémarre :
o /etc/init.d/ssh restart
Apache
Apache est :
o le serveur web le plus courant
Vu que cela ne sert à rien que votre serveur web donne au monde votre
distribution Linux, autant limiter cela :
o nano /etc/apache2/apache2.conf
Passez ServerSignatureà « off » et ServerTokensà « Prod » pour rendre votre serveur web
plus discret.
o /etc/init.d/apache2 restart
Autres
service conseil
mysql
interdire les accès sans mot de passe (on peut exécuter l’utilitaire
/usr/bin/mysql_secure_installation fourni avec mysql-server)
Les backdoors. Si par malheur un attaquant arrive à prendre possession d‘une machine il y laisse
une backdoor(porte dérobée) qui lui permettrait d’en reprendre le contrôle plus tard, ainsi qu’un
rootkitpour la dissimuler : l’attaquant maintient ainsi un accès frauduleux à la machine a laquelle
il ya eu intrusion.
Un rootkit est un programme qui maintient un accès frauduleux à un système informatique et cela
le plus discrètement possible, leur détection est difficile, parfois même impossible tant que le
système d'exploitation fonctionne. Certains rootkits résistent même au formatage car ils peuvent
s'introduire directement dans le BIOS. Ils existent sous Linux depuis longtemps (car le noyau est
ouvert et modulaire).
Un Webkit quant à lui permet de prendre l'accès d'une machine via une faille puis par port http et
de prendre l'accès sur le système.
Rkhunterest un utilitaire qui est chargé de détecter d’éventuels rootkitssur votre serveur. Il est
relativement léger (s’exécute une fois par jour par défaut).
nano /etc/default/rkhunter
Notez que Rkhunter se trompe parfois en déclarant comme infectés des fichiers sains (« faux
positifs »), donc il faut être critique à l’égard des rapports. Par contre, s’il s’avère que l’alerte est
justifiée, cela signifie que vous avez un rootkit ainsi qu’une faille de sécurité qui a été découverte et
exploitée.
L’utilitaire nmap permet de découvrir des ports qui sont ouverts sur une machine
donnée :
L’utilitaire netstat aussi de donner des informations sur un service qui tourne
sur un serveur
Netstat –anp | grep –w 80 : permet de voir le service qui tourne sur port 80 de la
machine
a) Créer les utilisateurs toto, bouki et leuk en ligne de commande en tant que root
b) Créer un groupe nommé liberte et y ajouter bouki
c) Utiliser la commande groups pour connaitre les groupes d’appartenances de bouki
d) Se connecter en tant que bouki par la commande su bouki et essayer d’ajouter leuk dans le
groupe liberte. Que constatez-vous ?
e) Se déconnecter et en tant que root nommer leuk administrateur de groupe liberte
f) Se connecter en tant que leuk et ajouter toto dans le groupe liberte et retirer bouki du
groupe liberte.
g) Un administrateur de groupe fait il partit nécessairement d’un groupe(penser aux peuhls et
aux moutons)
2.3.1. Gestion des droits sur les répertoires et fichiers sous linux
On utilise la commande chmod pour gérer les droits et permissions sur les fichiers.
Donc on utilise généralement deux modes de chmod :
Caractère et décimal
Formule générale au mode décimal
SNMP est un protocole de gestion réseaux proposé par l’IETF (Internet Engineering Task Force)
C‘est un protocole de niveau applicatif du modèle TCP/IP .
Il s’appuie sur 3 composantes principales :
Les nœuds administrés
Les stations d’administration
Les information d’administration
Un nœud administré est une entité qui est capable de communiquer des informations sur ses états
Par exemple : Machines, switches, routeurs,imprimantes
un nœud administré exécute un agent SNMP qui gère une base de données locale de variables
donnant l’état et l’historique.
Une station d’administration est une machine particulière qui communique avec les agents des
nœuds en leur envoyant des requêtes et réceptionne , par conséquant des réponses venant des agents
L’Information d’administration appelée MIB (Management Information Base) est une base de
donnée des variables donnant l’état d’un nœud administré.
Chaque variable est appelé objet
Une station d’administration est dotée d’un service appelé manager qui écoute en UDP sur le port
162 alors qu'un agent SNMP écoute en UDP sur le port 161.
Le nom de communauté de "lecture" est souvent "public", par défaut Envoyé sous forme de
chaîne de texte ASCII dans les PDU Quiconque possédant un analyseur de protocole peut le
capturer
La section "données" contient une des cinq PDU SNMP
On définit seulement deux formats de PDU GetRequest, GetNextRequest, GetResponse,
SetRequest utilisent le même format de PDU
Le Trap de SNMP utilise un format de PDU différent
Encodage TLV
Le SMI (Structure of Management Information) définit toutes les propriétés d’un objet de la MIB
Pour la transmettre des informations de gestion, SNMP utilise un encodage TLV (Type, Longueur,
Valeur).
Les objets d’une MIB peuvent etre des tables de routage, le nombre de collisions, la taille des files
d'attentes ou des compteurs donnant la charge du CPU ou les paquets reçus etc,
SNMP procède de deux façons pour nommer les objets d'une MIB :
la première est un nom unique par objet (ex: sysUpTime),
la seconde utilise les notations d'ASN.1
Organisation des objets MIB
Les objets MIB sont organisés sous forme d’arborescence et chaque objet est identifié par le
chemin qui conduit à cet objet comme le montre la figure ci-apres :
Par exemple, pour accéder à un objet d'administration, son identificateur appelé OID commencera
par 1.3.6.1.2 (iso.org.dod.internet.mgmt).
Lorsqu’une entreprise veut définir son propre ensemble de variables de gestion, elle va enregistrer
son numéro d’objet sous le noeud :
iso.org.dod.internet.private.entreprise.
Ces MIB seront dites privées. Elles correspondent à la racine 1.3.6.1.4.1.
On peut donc dire que la MIB standard désigne le plus petit dénominateur commun entre tous les
types de matériel que l'on peut rencontrer sur un réseau.
Le premier standard utilisé pour la définition des objets d'administration de la MIB standard fut la
MIB-I.
Son OID est : 1.3.6.1.2.1 et sa définition est la suivante :
Tableau 3.1 Standard MIB I
Un second standard fut défini pour rajouter des objets dans quelques unes des catégories de la MIB
standard. Ce standard est appelé MIB-II et, fort de ses 172 éléments, a remplacé actuellement la
MIB I. Son OID est aussi : 1.3.6.1.2.1
Le tableau suivant donne des information importantes sur les objets system de la MIB II
Quelques Cas d’interrogation d’une MIB par la commande snmpget sous linux
1.3.6.1.2.1.1.3.0 : " l'uptime " de la machine locale (le temps depuis lequel le système est en
service)
si on se trompe dans le chemin, nous aurions obtenu : [root@gw mibs]# snmpget -v 1 -c public
localhost .1.3.6.1.2.1.1.3.1 Error in packet Reason: (noSuchName) There is no such variable name
in this MIB. Failed object: system.sysUpTime.1
SNMP : Avantages
L'avantage majeur dans le fait d'utiliser SNMP est qu'il est de conception simple ; il est donc
aisé de l'implémenter sur un réseau, puisqu'il ne prend pas longtemps à configurer et qu'il est
de petite taille.
Un autre avantage de SNMP est qu'il est vraiment beaucoup répandu aujourd'hui. Presque
tous les grands constructeurs de matériel hardware inter -réseaux, tels que les ponts ou les
routeurs, conçoivent leurs produits de manière à ce qu'il supportent SNMP, rendant ce
dernier très facile à implémenter
Enfin, SNMP est basé sur le protocole de transport UDP ce qui nécessite moins de
ressources et de connexions simultanées qu'avec TCP. Il n'y a pas de récupération d'erreurs
et un faible overhead UDP au niveau des messages. Et enfin, c'est une solution peu chère.
SNMP : Inconvénients
Le premier défaut de SNMP est qu'il contient quelques gros trous de sécurité à travers
lesquels des intrus peuvent accéder aux informations transitant sur le réseau. Ces intrus
pourraient aussi bien provoquer un shut-down sur certains terminaux. La solution à ce
problème est apportée dans SNMPv2 qui implémente des mécanismes de sécurité en ce qui
concerne le caractère privé des données, l'authentification et le contrôle d'accès.
Puisque SNMP se trouve au dessus de UDP, il n'y a pas de reprise sur erreur, ni de
contrôle de flux. La requête ou la réponse peut être égarée, ce qui peut être génant
dans le cas du trap. Le Manager surveille donc son environnement en procédant à
des interrogations régulières de ses agents, c'est ce que l'on appelle le Polling. SNMP
est donc un protocole bavard. Cette surcharge de traffic n'est pas trop gênante sur
un réseau local mais devient embarrassante via le réseau public.
4.1 Présentation de Nagios
Nagios est un logiciel de supervision de réseau libre sous licence GPL qui fonctionne sous
Linux. Il a pour fonction de surveiller les hôtes et services spécifiés, alertant
l'administrateur des états des machines et équipements présents sur le réseau. Bien qu'il
fonctionne dans un environnement Linux, ce logiciel est capable de superviser toutes
sortes de systèmes d'exploitation (Windows , Linux, Mac OS entre autres) et également des
équipements réseaux grâce au protocole SNMP. Cette polyvalence permet d'utiliser Nagios
dans toutes sortes d'entreprises, quelque soit la topologie du réseau et les systèmes
d'exploitation utilisés au sein de l'entreprise.
Ce logiciel est composé de trois parties:
Le moteur de l'application, qui gère et ordonnance les supervisions des différents
équipements
Les Plugins qui servent d'intermédiaire entre les ressources que l'on souhaite
superviser et le moteur de Nagios. Il faut bien noter que pour accéder à une
certaine ressource sur un hôte, il faut un plugin coté Nagios et un autre coté hôte
administré. -L'interface web qui permet d'avoir une vue d'ensemble des états de
chaque machine du parc informatique supervisé et ainsi pouvoir intervenir le plus
rapidement possible en ciblant la bonne panne.
Nagios possède une importante communauté sur Internet. Grâce à celle-ci, de nombreux
utilisateurs ont créés des plugins permettant à Nagios d'aller récupérer des informations
sur des équipements du réseau (PC, routeurs, serveurs, …)
Les plugins n'utilisent pas tous le même protocole pour échanger les informations. Le
protocole utilisé est dans la plupart des cas un facteur décisif sur le choix des plugins à
utiliser.
Un seul plugin Nagios ne peut pas aller chercher toutes les informations sur les
équipements du réseau: En effet, chaque plugin n'a accès qu'à certaines informations
(exemple: un plugin peut aller chercher l'occupation du disque dur, et un autre
l'occupation du processeur d'un PC).
Pour superviser un parc informatique, il est donc nécessaire de mettre en place plusieurs
plugins. De plus, certains plugins peuvent aller chercher des informations sur des clients
uniquement sur certains systèmes d'exploitation (c'est le cas du plugin check_nt qui peut
chercher des informations uniquement sur des équipements Windows).
4.4.1. check_nt
Le plugin Check_nt est un plugin récent qui permet de superviser très facilement des PC
dont le système d'exploitation est Windows.
Check_nt permet de récupérer sur un système Windows les informations suivantes :
L'espace occupé sur le disque dur, le temps depuis le démarrage de l'ordinateur
Pour cela, il faut installer sur les machines Windows à superviser
Lorsque Nagios veut connaître une information sur un PC Windows avec NSClient++
installé, il exécute le plugin check_nt. Celui envoie une requête au PC. Sur le PC, le
programme NSClient++ reçoit la requête, va chercher les informations dans les ressources
du PC et renvoie le résultat au serveur Nagios.
Usage : Pour aller chercher les informations sur un PC grâce à check_nt, Nagios exécute
une commande ayant la syntaxe suivante :
check_nt -H host -v variable [-p port] [-w warning] [-c critical][-l params]
Avec :
-H : Adresse IP de l'hôte à superviser
-v : ce qu'il faut superviser (ex : CPULOAD
-p : Port sur lequel il faut envoyer la requête
-w : Seuil pour lequel le résultat est considéré comme une alerte
-c : Seuil pour lequel le résultat est considéré comme critique
-l : Paramètres supplémentaires (nécessaire ou non en fonction du paramètre "v")
4.4.2. Check_nrpe
Le plugin Check_nrpe est un plugin qui permet de superviser des PC dont le système
d'exploitation est Windows ou Linux. Check_nrpe utilise une connexion SSL (Secure
Socket Layout) pour aller chercher les informations sur les postes. Ceci permet de crypter
les trames d'échanges.
Fonctionnement de check_nrpe
Lorsque Nagios veut connaître une information sur un PC, il exécute le plugin check_nrpe.
Celui envoie une requête au PC. Sur le PC, le programme NSClient++ (ou nrpe si linux)
reçoit la requête, va chercher les informations dans les ressources du PC et renvoie le
résultat au serveur Nagios.
Usage : Pour aller chercher les informations sur un PC grâce à check_nrpe, Nagios
exécute une commande ayant la syntaxe suivante :
check_nrpe -H <adresse de l'hôte à superviser> -c <nom de la commande à exécuter sur le
serveur>
Puis sur les postes à superviser, dans le fichier de configuration (NSClient pour Windows,
nrpe.cfg
pour Linux), on doit définir la commande à exécuter pour chaque nom de commande.
Exemple pour Windows: command [check_cpu]=inject checkCPU warn=80 crit=90 5 10
15
Ces deux commandes vérifient la charge du processeur. On remarque alors que la mise en
place de nrpe dans une grande entreprise est très complexe car il faut configurer toutes les
commandes sur chaque hôte à superviser (contrairement à check_nt qui ne nécessite pas
de configuration). En revanche, nrpe offre une meilleure sécurité puisque les échanges
client – serveur sont sécurisées (grâce à SSL).
4.4.3. check_snmp
Le plugin Check_snmp est un plugin qui permet de superviser tous les équipements.
Nous utiliserons check_snmp pour superviser le routeur.
Usage : Pour aller chercher les informations sur le routeur grâce à check_snmp, Nagios
exécute une commande ayant la syntaxe suivante :
4.4.4. Check_ping Le plugin Check_ping est un plugin qui permet de vérifier qu'un hôte
est bien joignable. Usage : Pour vérifier qu'un hôte est joignable, Nagios exécute une
commande ayant la syntaxe suivante :
Avec:
-w : Seuil pour lequel le résultat est considéré comme une alerte
-c : Seuil pour lequel le résultat est considéré comme critique
4.5. Synthèse de mise en place de Nagios
Apres installation de nagios on peut faire des actions suivantes :
Le démarrer : service nagios3 start
L’arrêter : service nagios3 stop
La recharger : service nagios3 reload
Exemple: cfg_file=/etc/nagios3/commands.cfg
Cette variable détermine le fichier de configuration des objets que Nagios doit utiliser pour
la supervision. Ce fichier contient les définitions pour les hôtes, groupes d'hôtes, contacts
groupes de contacts, services, commandes etc... Vous pouvez éclater votre fichier de
configuration des objets en plusieurs fichiers que vous inclurez, pour leur traitement, en
ajoutant une directive cfg_file= pour chacun d'eux.
Cette variable permet de définir un répertoire qui contiendra les fichiers des configuration
des objets que Nagios doit utiliser pour la supervision. Tous les fichiers dans ce répertoire
avec une extension .cfg seront traités comme des fichiers de configuration d'objets. De
plus, Nagios va récursivement parcourir tous les fichiers .cfg des sous-répertoires de ce
répertoire. Vous pouvez distribuer vos fichiers de configurations en plusieurs répertoires
que vous inclurez, pour leur traitement, par des directives cfg_dir pour chacun d'eux.
Cette variable est utilisée pour indiquer un l'emplacement d'un fichier qui contiendra une
copie en cache des définitions des objets. Ce fichier cache est (re)créé à chaque
(re)démarrage de Nagios et est utilisé par les CGI. Il permet d'accélérer le cache des
fichiers de configuration pour les CGI, et vous permet de modifier les fichiers de
configuration des objets, pendant que Nagios tourne, sans que l'affichage des CGI soit
modifié.
Fichier de ressources
Format: resource_file=<nom_de_fichier>
Exemple : resource_file=/etc/nagios3/resource.cfg
Fichier temporaire
Format : temp_file=<nom_de_fichier>
Exemple : temp_file=/var/cache/nagios3/nagios.tmp
C'est un fichier que Nagios crée périodiquement durant la mise à jour des commentaires de
données, des données d'état etc... Il est supprimé quand il n'est plus nécessaire.
Fichier d'états (journal des états)
Format : status_file=<nom_de_fichier>
Exemple : status_file=/var/cache/nagios3/status.dat
C'est le fichier utilisé par Nagios, pour stocker l'état courant de tous les services supervisés.
L'état de tous les hôtes associés avec ces services, est également enregistré dans ce fichier.
Ce fichier est utilisé par le CGI d'état pour afficher l'état courant de la supervision dans
l'interface web. Les CGI doivent avoir le droit d'accéder en lecture à ce fichier, pour
fonctionner correctement. Ce fichier est supprimé à l'arrêt de Nagios, et recréé au
démarrage.
Format: aggregate_status_updates=<0/1>
Exemple : aggregate_status_updates=1
Cette option détermine, si Nagios doit agréger les données de changement d'état des hôtes,
services, et programmes. Par défaut, les données d'état sont immédiatement mises à jour à
chaque contrôle d'un service ou d'un hôte. Ceci peut causer une charge CPU importante, et
de nombreuses entrées/sorties disque, si vous contrôlez de nombreux services. Si vous
voulez que Nagios ne mette à jour les données d'état (dans le journal des états), que toutes
les quelques secondes (tel que défini par la variable status_update interval), activez cette
option. Si vous voulez des mises à jour immédiates, désactivez-la. Les valeurs possibles de
cette variable sont :
Cette variable, détermine la fréquence (en secondes), à laquelle Nagios mettra à jour les
données d'état dans le journal des états. L'intervalle minimal est de cinq secondes. Si vous
avez désactivé les mises à jour agrégées (grâce à l'option aggregate status updates), cette
variable est sans effet.
Utilisateur de Nagios
Format : nagios_user=<nom_d_utilisateur/UID>
Exemple : nagios_user=nagios
Ceci détermine quel utilisateur doit être le propriétaire du processus de Nagios. Après le
démarrage du programme, et avant toute supervision, Nagios abandonnera ses privilèges
effectifs, et se lancera sous cet utilisateur. Vous pouvez donner un nom d'utilisateur ou un
UID.
Groupe de Nagios
Format : nagios_group=<nom_de_groupe/GID>
Exemple : nagios_group=nagios
Ceci détermine quel groupe doit être propriétaire du processus de Nagios. Après le
démarrage du programme, et avant toute supervision, Nagios abandonnera ses privilèges
effectifs et se lancera sous ce groupe. Vous pouvez donner un nom de groupe ou un GID.
Cette option détermine si Nagios envoie ou non une notification quand il (re)démarre. Si
cette option est désactivée, Nagios n'enverra aucune notification, quel que soit l'hôte ou le
service. Note : si vous avez activé la mémorisation d'état, Nagios ignorera ce paramètre au
(re)démarrage, et utilisera sa dernière valeur connue (telle qu'elle est stockée dans le
fichier de mémorisation d'état ), à moins que vous ne désactiviez l'option
use_retained_program_state. Si vous voulez changer cette variable alors que la
mémorisation d'état est activée, (ainsi que l'option use_retained_program_state), vous
devrez passer par la commande externe appropriée, ou la changer à travers l'interface web.
Les valeurs possibles de cette variable sont :
0 = notification désactivée
Cette option détermine si Nagios accepte les contrôles passsifs de service quand il
(re)démarrera. Si cette option est désactivée, Nagios n'acceptera aucun contrôle passif de
service. Note : si vous avez activé la mémorisation d'état, Nagios ignorera ce paramètre au
(re)démarrage et utilisera sa dernière valeur connue (telle qu'elle est stockée dans le fichier
de mémorisation d'état), à moins que vous ne désactiviez l'option use_retained_program
state. Si vous voulez changer cette variable alors que la mémorisation d'état est activée
(ainsi que l'option use_retained_program state), vous devrez passer par la commande
externe appropriée ou la changer à travers l'interface web. Les valeurs possibles de cette
variable sont :
Cette option détermine si Nagios effectuera les contrôles des hôtes - à la demande ou de
manière régulière - lorsqu'il (re)démarrera. Si cette option est désactivée, Nagios
n'effectuera aucun contrôle sur les hôtes et restera dans un mode "de sommeil" (il peut
quand même recevoir les contrôles passifs d'hôtes à moins qu'ils ne soient désactivés).
Cette option est surtout utile pour définir des serveurs de supervision de secours, comme
l'explique la documentation sur la redondance, ou pour mettre en place un environnement
de supervision répartie. Note : si vous avez activé la mémorisation d'état, Nagios ignorera
ce paramètre au (re)démarrage, et utilisera sa dernière valeur connue (telle qu'elle est
stockée dans le fichier de mémorisation d'état), à moins que vous ne désactiviez l'option
use_retained_program state. Si vous voulez changer cette variable alors que la
mémorisation d'état est activée (ainsi que l'option use_retained_program state), vous
devrez passer par la commande externe appropriée, ou la changer à travers l'interface web.
Les valeurs possibles de cette variable sont :
Cette option détermine si Nagios accepte les contrôles passifs d'hôtes quand il
(re)démarrera. Si cette option est désactivée, Nagios n'acceptera aucun contrôle passif
d'hôte. Note : si vous avez activé la mémorisation, Nagios ignorera ce paramètre au
(re)démarrage, et utilisera sa dernière valeur connue (telle qu'elle est stockée dans le
fichier de mémorisation d'état), à moins que vous ne désactiviez l'option
use_retained_program state. Si vous voulez changer cette variable alors que la
mémorisation d'état est activée (ainsi que l'option use_retained_program state), vous
devrez passer par la commande externe appropriée, ou la changer à travers l'interface web.
Les valeurs possibles de cette variable sont :
C'est la méthode de rotation que vous voulez que Nagios utilise pour le fichier journal. Les
valeurs possibles de cette variable sont :
n = Aucune [None] (ne pas effectuer de rotation sur le journal - par défaut)
h = Toutes les heures [Hourly] (effectuer une rotation du journal au début de
chaque heure)
d = Tous les jours [Daily] (effectuer une rotation du journal à minuit chaque jour)
w = Toutes les semaines [Weekly] (effectuer une rotation du journal à minuit le
samedi)
m = Tous les mois [Monthly] (effectuer une rotation du journal à minuit le dernier
jour du mois)
Un objet est un ensemble de tous les éléments entrants en compte dans la logique de
surveillance et de notification,
Types d’objet :
Les types d’objet possibles de nagios sont :
Services
Groupes de services
Hôtes
Groupes d'hôtes
Contacts
Groupes de contacts
Commandes
Périodes de temps
Escalades de notifications
Dépendances d'exécution et de notification
4.7.1. Hôtes
Les hôtes sont en général des composants physiques sur le réseau (serveurs,
ordinateurs de bureau, routeurs, switchs, imprimantes, etc.).
Les hôtes ont une adresse (une adresse IP ou MAC par exemple).
Les hôtes peuvent avoir des relations de type parent/enfant avec d'autres hôtes,
représentant souvent les connexions réelles entre ces hôtes, qui sont utilisées dans
la logique de rupture de la continuitité du réseau.
4.7.2. Groupes d'hôtes
Les Groupe d'Hôtes permettent de regrouper un ou plusieurs hôtes ensemble. Les groupes
d'hôtes peuvent vous rendre la vue d'état plus facile pour plusieurs hôtes en relation dans
l'interface web de Nagios (1) et simplifient votre configuration (2)
4.7.3. Services
Les Services sont un des objets les plus importants dans la logique de supervision. Les
services sont associés à un hôte et peuvent être:
Des attributs d'hôtes (charge CPU, utilisation disque, temps écoulé depuis le dernier
(re)démarrage, etc.).
Des services fournis par l'hôte (HTTP, POP3, FTP, SSH, etc.)
4.7.5. Contacts
Les Contacts sont les personnes impliquées dans le processus de notification:
Les contacts reçoivent des notifications pour les hôtes et services dont ils sont
responsables
4.7.6. Groupes de contacts
Les Groupes de Contacts permettent de regrouper un ou plusieurs contacts ensemble. Les
groupes de contacts peuvent vous aider à définir de façon plus simple qui doit être notifié
quand surviennent des problèmes sur un hôte ou un service.
4.7.7. Périodes de temps
Les Périodes de temps sont utilisées pour contrôler:
4.7.8. Commandes
Les Commandes sont utilisées pour indiquer à Nagios quels programmes, scripts, etc. il
doit exécuter pour assurer:
Notifications
Gestionnaires d'événements
define host {
host_name bighost1
address 192.168.1.3
use generichosthosttemplate
}
define host {
host_name bighost2
address 192.168.1.4
use generichosthosttemplate
}
Notez que la 1ère définition d'hotes est incomplète car il manque la variable requise
host_name. Nous n'avons pas besoin de définir un nom d'hôte car nous voulons juste
utiliser cette définition comme un gabarit d'hôte générique.
Afin de prévenir nagios que cette définition n’est qu’un gabarit ou Template nous mettons
définir la variable register à 0.
La définition des hôtes bighost1 et bighost2 héritent leurs valeurs de la définition d'hôte
générique. La seule variable que nous avons choisi de surcharger est la variable address.
Cela veut dire que les deux hôtes auront exactement les mêmes propriétés, à l'exception de
leurs variables host_name et address. Une fois que Nagios aura traité les données de
configuration de l'exemple, les définitions d'hôtes résultants seront la même chose que si
nous spécifions :
define host {
host_name bighost1
address 192.168.1.3
check_command check-host-alive
notification_options d,u,r
max_check_attempts 5
}
define host {
host_name bighost2
address 192.168.1.4
check_command check-host-alive
notification_options d,u,r
max_check_attempts 5
}
Enfin, utiliser une définition de gabarit pour les variables par défaut vous fera
gagner beaucoup de temps. Cela vous évitera aussi beaucoup de maux de tête
ultérieure si vous voulez changer la valeur par défaut d'une variable pour un
grand nombre d'hôtes.
Conclusion
Un logiciel de supervision de réseau comme Nagios est indispensable pour un
administrateur lorsque le réseau devient complexe. Cela lui permet d'avoir une vue globale
et en temps réel sur tout le parc informatique. Mais cela nécessite une configuration qui
devient elle aussi assez complexe en fonction du niveau de supervision que
l'administrateur souhaite mettre en place. En effet, dans Nagios, il n'y a pas d'outils de
simplification de la configuration, qui s'effectue entièrement par modification manuelle
des fichiers de configuration.
Fiche de TP sur le chapitre4
TP1 : Supervision des principaux éléments d‘un réseau
TP2: Superviser une machine Windows
Étapes
Il y a plusieurs étapes à suivre pour pouvoir superviser une nouvelle machine Windows
1. Installez un agent de supervision sur la machine Windows
2. Créez de nouvelles définitions d'hôte et de service pour superviser la machine Windows
3. Redémarrez le démon Nagios
Principal plugin : check_nt ou check_nrpe
Il y a plusieurs étapes à suivre pour pouvoir superviser une nouvelle machine Windows
4. Installez et configurer un agent de supervision (nagios-nrpe-server) sur la machine
Linux
5. Créez de nouvelles définitions d'hôte et de service pour superviser la machine linux
6. Redémarrez le démon Nagios
Le plugin check_hpjd (qui fait partie de la distribution des plugins standards Nagios)
permet de superviser l'état de toutes imprimantes compatibles JetDirect avec SNMP
activé. Le plugin est capable de détecter les états suivants de l'imprimante:
Bourrage papier
Plus de papier
Intervention requise
Mémoire insuffisante
Porte ouverte
Et bien d'autres…
Étapes
Il y a plusieurs étapes à suivre pour pouvoir superviser une nouvelle imprimante réseau.
Les voici:
1. Activer l’agent SNMP de l’imprimante
2. Créez de nouvelles définitions d'hôte et service pour la supervision de l'imprimante
3. Redémarrez le démon Nagios
TP6 : superviser des services de base (HTT¨P, FTP, TFP, SSH, SMTP, POP, IMAP,
MYSQL)
On vous demande :
1. de mettre en place le service de messageries avec postfix, dovecot-pop3d, dovecot-
imapd, squirrelmail
2. de tester que le service de messagerie fonctionne correctement en envoyant et en
recevant des mails par l’intermédiaire du Webmail squirrelmail
3. de définir les hôtes et services pour la supervision des serveurs SMTP, POP, IMAP,
http.
4. De mettre en place un serveur de base de données mysql et tester son
fonctionnement en réseaux
5. De définir les hôtes et les services pour la supervision de mysql.
6. D’installer et de configurer openssh-server sur une machine linux.
7. De définir les hôtes et services pour la supervision de ssh.
8. D’installer et de configurer le serveur vsftpd puis de tester son fonctionnement en
transférant des fichiers avec le client FTP Filezilla
9. De définir les hôtes et les services pour la supervision du serveur FTP
Principaux plugins: