Vous êtes sur la page 1sur 64

Chapitre 1 : Concepts généraux sur la Gestion des réseaux

1.1. Gestion des fautes


1.2. Gestion de configuration
1.3. Gestion de l’utilisation (accounting)
1.4. Gestion des performances
1.5. Gestion de la sécurité
1.6. Supervision réseaux et lien avec la gestion des réseaux
1.7. Méthodes de supervision réseaux :
1.7.1. Méthodes Ad hoc
1.7.2. La méthode basée Utilisation de Protocoles de Gestion de réseaux (SNMP et
CMIP)
1.8. Notion de Qualité de Services (Qos)
1.8.1. Définition de la qualité de services
1.8.2. Les mesures de Qualité
1.8.3. Exigence de Qos selon les types d’applications
1.8.4. Les Techniques classiques de gestion de Qualité de services
1.8.5. Les différentes techniques de mesures des caractéristiques de flux réseau

Chapitre 2 : Présentation de quelques outils de gestion Ad hoc des Réseaux

2.1. Surveillance des logs


2.2. Surveillance de log de services de base
2.3. Les firewalls
2.4. protection contre les intrusions

Chapitre 3 : Étude du protocole SNMP


3.1. Rôles des composants SNMP
3.2. Architecture générale
3.3. Types de messages
3.4. Etude détaillée du MIB

Chapitre 4 : Étude détaillée d’un outil de supervision réseau (NAGIOS)


4.1. Présentation de NAGIOS
4.2. Fonctionnement de nagios
4.3. Installation de l'interface graphique de nagios
4.4. Utilisation de quelques plugins importants
4.5. Synthèse de mise en place de nagios
4.6. Configuration de nagios version 3 sous ubuntu ou Debian
4.7. Précisions sur les objets nagios
4.8. Déclaration des données des objets
 TP1-Méthode ad-hoc1 (utilitaires)
 TP2-Méthode ad-hoc2 (gestion des fichiers log de serveurs)
 TP3-Système de journalisation syslog et syslog-ng
 TP4- Installation de nagios 4
 TP5 - supervision des machines linux
 TP6- supervision des machines Windows
 TP7- supervision des services de bases (HTTP, SMTP, POP, IMAP....)
 TP8- supervision des switches et des routeurs Cisco
 TP9- supervision des bandes passantes des liaisons
 TP10- Gestion des TRAPs SNMP (Alerte)
 TP11- Alerte par mail et par SMS avec nagios+smstools ou kannel
 TP 12-1- supervision d'un softswitch SIP (tests des outils tels que sipp ...)
 TP 12-2 - Supervision d'un softswitch SIP (charge du serveur, tracé de graphes de
charge, évolution de la charge du processeur, évolution de l'utilisation de la RAM
etc...)
 TP: projet de supervision du coeur de réseau (NOC) d'un opérateur de télécoms
Il est important de bien identifier les principales tâches de gestion de réseaux, à savoir :

1.1. La gestion des fautes


Qui consiste à :
o identifier les sources d’un problème réseaux, par exemple la cause
d’inaccessibilité a un service réseau
o Résoudre le problème
o Capitaliser de l’expérience de résolution de problèmes réseaux

1.2. La gestion de configuration


Qui consiste à :
o Déployer et à maintenir la configuration des ressources du réseau
o Sauvegarder les configurations des ressources dans une base de données
pour mieux gérer la surveillance de ces ressources

1.3. La gestion de l‘utilisation


Qui consiste à mettre en œuvre un mécanisme ou règles permettant de garantir une
utilisation équitable des outils de calcul et de communication entre les utilisateurs

1.4. La gestion de la performance


Qui consiste à :
o Définir les mesures de Qualité de services
o Collecter ou estimer continuellement les mesures définies
o Définir les seuils d’alarme au-delà desquels une intervention est nécessaire

1.5. La gestion de la sécurité


Qui consiste à :
o Mettre en place un mécanisme de contrôle d‘accès aux ressources du réseau
en terme de droits d‘accès
o Mettre en place de mécanisme de détection d‘intrusion
o Mettre en place des différents outils de protection des ressources des réseaux
(firewall, de technique de chiffrement, anti-virus …)

1.6. Supervision réseaux et lien avec la gestion des réseaux


Définition de la supervisons réseau
La supervision réseau consiste à mettre en place un dispositif permettant de
surveiller le bon fonctionnement des éléments actifs du réseau
Objectifs de la supervision réseau
La supervision vise à :
o Faciliter la gestion du réseau
o Améliorer la Qos, la fiabilité et la disponibilité du réseau
o Garantir le respect du contrat de service signé avec les prestataires
o Prévenir les tentatives d’intrusion non autorisées

1.7. Méthodes de supervision Réseau

Il existe principalement deux méthodes de supervision réseau :


1.7.1. La méthode Ad hoc qui consiste à utiliser des outils classiques tels que :
Ping, traceroute, netstat, telnet, ssh, whois, dig, nslookup … et les fichiers log et les
systèmes de log

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

1.8.2. Les mesures de Qualité


Définition d‘un flux réseau
On définit un flux par un ensemble de paquets envoyés d’une source à une
destination
Un flux réseau peut se caractériser par :
o Sa fiabilité
o le délai de propagation des paquets
o La variation du temps d’arrivée de paquets appelée Gigue
o la Bande passante occupée par le flux
Caractéristiques des flux à privilégier selon les types d’application

1.8.3. Exigence de Qos selon les types d’applications

1.8.4. Les Techniques classiques de gestion de Qualité de services

Plusieurs techniques de gestion de qualité de services existent dont :


o La réservation en excès de ressources
o La mise en tampon au niveau du récepteur (Cas de la TOIP ou il faut attendre que les
paquets arrivent et qu’on les remet en ordre)
o La canalisation du trafic
o La réservation des ressources

1.8.5. Les différentes techniques de mesures des caractéristiques de flux réseau


La méthodologie générale adoptée pour la détermination des métriques réseaux consiste à :
o définir l’objectif des mesures
o Définir les points de mesures et placer les sondes à ces points de mesures
o observer le système de mesures
o collecter les mesures et les analyser
On utilise pour cela, globalement, trois techniques de mesures
o Les mesures intrusives qui consistent à éjecter du trafic
o La capture et l’analyse des traces (estimation)
o on met en place de modèles mathématiques qu’on simule
2.1. Surveillance des logs
Il est important pour un administrateur de savoir exploiter les fichiers de
journalisation de ses serveurs. Typiquement un administrateur pourrait etre amené
à activer ou à exploiter les fichiers log suivants :
 /var/log/auth.log qui contient toutes les tentatives d’accès au serveur. Il peut
être utile de filtrer le contenu, par exemple : cat /var/log/auth.log |
grepauthenticationfailure ;

 /var/log/message et /var/log/syslog contient un peu de tout (erreurs, bugs,


informations, etc) ;

 /var/log/fail2ban est le log d’alerte du service fail2ban qui permet de


controler les tentatives de connexion sur des services linux. Cherchez
notamment : cat /var/log/fail2ban | grep ban ;

 /var/log/snort/alert vous indiquera les logs d’alertes de Snort qui est un


detecteur d’intruision;

 /var/log/rkhunter pour voir les rapports quotidiens de Rkhunter qui est un


detecteur de programme qui accède frauduleusement à un système appelé
rootkit. Faites attention aux erreurs trouvées, ce n’est pas bon signe (même si le
risque de faux positifs existe ici).

2.2. Surveillance de log de services de base :


2.2.1. Les fichiers log : serveurs de bases de données, serveurs Web,
serveurs de mail, serveur FTP etc...

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 redémarre le service mysql

Ouvrons un autre terminal et connectons-nous en tant que root.


Ouvrons mysql avec la commande mysql –u root –p et Créons la base de donnée base1 on
ferme mysql avec exit en se reconnectant en mettant un faut mot de passe on constate que
l’accès est réfugé.
Pour visualiser tout le travail qu’on a fait avec mysql on tape la commande tail –f
/var/log/mysql/mysql.log

 Activation du fichier log d’apache2


Par défaut les lignes permettant de voir le fichier log d’apache2 dans /var/log/apache2/
sont activées dans /etc/apache2/site-avaible/000-default.conf

.
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

 Activation du fichier log de postfix


On vérifie si la visualisation du fichier log de postfix est activer pour cela on se
rend dans /etc/postfix/postfix.script
Après avoir effectué quelque configuration on se rend dans /var/log/ puis on lance
les commandes suivants avec tail.

2.3. Les firewalls

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

 On ne ferme pas les connexions déjà établies :

o iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT


o iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j
ACCEPT

 On autorise le loopback (on ne va pas se bloquer nous-mêmes !)

o iptables -t filter -A INPUT -i lo -j ACCEPT


o iptables -t filter -A OUTPUT -o lo -j ACCEPT

 Ouvrir les ports utilisés

À partir de maintenant, observons plus en détail les paramètres de iptables :

o -t : vaudra par défaut « filter » ;

o -A : servira à indiquer le sens du trafic : INPUT (entrant) ou OUTPUT (sortant) ;

o -p : indique le protocole (TCP ou UDP en principe) ;

o --dport et --sport : respectivement port destination et port source (comme nous


sommes le serveur, nous utiliserons principalement dport) ;

o -j : comment traiter le paquet (nous nous servirons d'ACCEPT et de DROP pour


respectivement accepter et refuser le paquet).
Plus nous serons précis, plus nous serons sécurisés. Renseigner ces quelques options est
donc le minimum. Ainsi, une règle simple aura la forme suivante :

o iptables -t filter -A INPUT/OUTPUT -p protocole --dportport_a_ouvrir -j


ACCEPT

Notez enfin que si vous voulez un échange, il faut toujours ouvrir le port dans les deux sens
(INPUT et OUTPUT)... logique.

Exemple si l’on a un serveur web (port 80) :


o iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
o iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT

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 :

o iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT

2.3. Protection contre les intrusions

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

a) le scan de port (plus généralement, la collecte d’informations) afin de trouver les


vulnérabilités.

b) les attaques « simples », témoins d’une faible sécurité.

c) l’intrusion (via des techniques qui ne seront pas décrites ici car dépassant notre
cadre de travail).

d) L’installation d’un moyen de se logguer sur le serveur à volonté (si l’attaquant


parvient jusqu’ici avec succès, on peut dire que la machine lui appartient).

o L’outil Portsentry (scan de ports)

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 :

o apt-get install portsentry

Pour le configurer :

o nano /etc/portsentry/portsentry.conf

 Commentez les lignes KILL_HOSTS_DENY.

 Décommentez la ligne KILL_ROUTE="/sbin/iptables -I INPUT -s


$TARGET$ -j rejectnan ".

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.

 Comment surveiller un service


Cela se fait dans le fichier de configuration /etc/fail2ban/jail.conf
Définition : prison ou jail
Une prison est un bloc de 5 lignes concernant un service donné
[ssh]
enabled = false
port = ssh

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.

Ce qui nous donne une fois terminé notre configuration :

Passons maintenant à Apache, il suffit de modifier la prison apache.

[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

Vous devriez avoir :


fail2ban.filter : INFO Set maxRetry = 3

fail2ban.filter : INFO Set findtime = 600


fail2ban.actions: INFO Set banTime = 600

fail2ban.jail : INFO Jail 'ssh' started

fail2ban.jail : INFO Jail 'apache' started

fail2ban.actions: WARNING [ssh] Ban XXX.yyy.zzz.ttt

 Quelques règles de bon sens

90 % des problèmes informatiques relèvent de l’utilisateur. C’est pourquoi, avant même


de penser à sécuriser sa machine, il faut garder en mémoire quelques règles de bon
sens :

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

 Configurer les logiciels


Il peut aussi être bon d’améliorer un peu la sécurité des logiciels installés sur la
machine, car il seront en première ligne pour traiter les paquets autorisés.

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

Et il est conseillé de changer les champs suivants :

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

o PermitRootLogin: mettre à « no » afin d’interdire le login en root ;


o AllowUsers: indique une liste d’utilisateur autorisé à se connecter via ssh. Cela
peut être utile si vous avez des utilisateurs qui ne sont pas censés se connecter sur la
machine.

Et on redémarre :
o /etc/init.d/ssh restart

 Apache
Apache est :
o le serveur web le plus courant

o donne par défaut de nombreuses informations à quiconque s’y connecte.

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

Pour la plupart des logiciels de base, il existe quelques recommandations de prudence.


Voici une liste non exhaustive :

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)

FTP ne surtout pas créer de FTP anonymes

utiliser un anti-spam (spamassassinpar exemple) et - si possible - utiliser les


Mail connexions sécurisées (SSL ou TLS) offertes par tout serveur de mail qui se
respecte

Et bien d’autres, à vous de vous renseigner


 L’outilRkhunter (rootkit et backdoor)

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.

Il existe néanmoins des programmes pour les détecter

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

Apt-get install rkhunter

Il est conseillé de modifier un peu la configuration :

nano /etc/default/rkhunter

o REPORT_EMAIL : indiquez un mail pour recevoir des alertes de


Rkhunter;

o CRON_DAILY_RUN : mettez « yes » pour une vérification quotidienne de


votre machine via un cron.

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.

 Les utilitaires nmap netstat et top

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

L’utilitairetop permet de surveiller l’utilisation des ressources serveur

 Quelques cas pratiques de gestion de sécurité :


 Gestion des utilisateurs et groupes sous linux
Il est important pour un administrateur de bien gerer les utilisateurs de groupes de son système.
Sous linux on peut utiliser les commandes suivants pour gerer les utilisateurs et les groupes :
o Adduser : pour ajouter un utilisateur
o Usermod : pour modifier un compte utilisateur
o Userdel : pour supprimer un utilisateur
o Passwd : pour modifier le mot de passe d’un utilisateur
o Groupadd : pour ajouter un groupe
o Groupmod : pour modifier un groupe
o Groupdel : pour supprimer un groupe
o Groups user : pour connaitre les groupes d’appartenance des utilisateurs
o Newgrp groupe1 : pour faire momentanément le groupe1 son groupe principal
o Gpasswd : avec les options a, d, Apermet respectivement d’ajouter de supprimer ou
de nommer un administrateur de groupe(faites un man sur gpasswd pour avoir les
details)
TP : gestion utilisateurs et groupes

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

Chmod a1a2a3 chemin_fichier permet de fixer des droits sur fichier.


Dans ce mode on affecte à : lecture (r) la valeur 4, écriture(w) la valeur 2,
exécution(x) la valeur 1.
a1représente la somme des droits du propriétaire des fichiers, a2 la somme des
droite du groupe propriétaire du fichier et a3 la somme des droits des autres
Exemple: chmod 754 fichier
Donne tous les droits au propriétaire du fichier, les droits de lecture et d’exécution
auaux membres du groupe propriétaire du fichier tandis que ce qui ne sont ni
propriétaire ni dans le groupe propriétaire du fichier n’ont que le droit de lecture.

 Droits spéciaux sous Linux (Setuid, setgid,sticky bit)

o Setuid : il arrive que l’administrateur veut faire en sorte que


contrairement à la normale, quand un utilisateur lance un
programme au lieu que celui-ci s’exécute avec les droits de celui qui
la lancé qu’il s’exécute avec les droits de l’utilisateurpropriétaire de
la commande :Pour cela on applique à la commande : les droits dits
setuid.

Chmod u+s commande


o Setgid ou la maison africaine: il arrive que l’administrateur veut
faire en sorte que tout fichiers crée dossier ait comme groupe
propriétaire le groupe propriétaire du dossier.Pour cela on applique
sur le dossier les droits dits segid par la commande :

Chmod g+s dossier


o Sticky bit : sous linux avoir le droit d’écriture sur un dossier c’est
aussi avoir le droit de suppression de contenu de ce dossier. Pour ne
pas permettre à un utilisateur ayant les droits d’écriture sur un
dossier de supprimer un fichier dans ce dossier qui ne lui appartient
pas on applique aux dossiers les droits dits sticky bit par la
commande:

Chmod o+t dossier


En ce moment il y a que le propriétaire d’un fichier dans ce dossier qui peut le
détruire.
TP: partage de connexion internet par translation
d’adresse ou de port sous linux avec la commande
iptables.
Vous disposez d’une connexion internet soit par filaire ou par 3G et d’une carte wifi sur
votre machine linux.
En utilisant la commande man sur iptables et en lisant les explications par rapport à la
cible POSTROUTING, faites en sorte que vos amis qui ont des machine linux et Windows
avec des cartes wifi puissent bénéficier de votre connexion internet
Introduction

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

3.1 Roles des composantes SNMP

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

3.2 Architecture générale d’administration SNMP

Le schema ci-apres donne l'architecture générale de supervision réseau avec SNMP

On remarque la présence de trois principales composantes.


fig, 3,1 architecture de supervision SNMP

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.

comme le montre la figure 3.2

fig, 3,2 Echange de messages SNMP

3.3 Les types de messages SNMP

Il existe trois type de messages SNMP :


 Des messages servant a faire des recherches
le message GetRequest sert à rechercher une variable sur un agent.
Le message GetNextRequest sert à rechercher la variable suivante.
le message GetBulkRequest sert à rechercher un groupe de variables

 Des messages servant à modifier des objets MIB


SetRequest : permet de changer la valeur d’une variable d’un agent

 Des messages servant à informer sur un incident


Trap : permet d’informer sur un incident

Il existe plusieurs versions du protocole SNMP :

 SNMPv1 (ancien standard) : Première version apparue en 1989.


 SNMPsec (historique): Ajout de sécurité par rapport à la version 1
 SNMPv 2 p (historique) : Ajout de nouveau type de données.
 SNMPv2c (expérimental) : Amélioration des opérations du protocole
 SNMPv3 (nouveau standard) :cette version integre des mecanismes de sécurité

Format des messages SNMP


Les messages SNMP ont le format suivant :

 Le champ version permet de s'assurer que l'administrateur et l'agent utilisent la même


version du SNMP
 La communauté est une authentification triviale utilisée par SNMPv1, La plupart des
équipements permettent de configurer des noms de communauté différents en lecture et en
écriture

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

Formats des PDU : Get, Set et Response

Voici le format de 3 types PDU:

Format de la PDU Trap

Voici le format de la PDU Trap


 Le champ “identificateur” identifie l‘objet de l’équipement qui a émis le Trap
Par exemple : Le préfixe OID 1.3.6.1.4.1.121 identifie FTP Software comme objet dans l’émission
du Trap
 Le champ “Agent Address” contient l'adresse IP de l'agent envoyant le Trap
 Le champ “Specific Trap Type” précise le type de trap constructeur, quand le champ
“generic” indique trap constructeur (enterprise specific)
 Le champ “Timestamp” contient la valeur de l'objet sysUpTime de l’agent au moment de
l’envoi de ce trap

Encodage TLV
Le SMI (Structure of Management Information) définit toutes les propriétés d’un objet de la MIB

ASN.1 définit le type d'un objet et éventuellement des limites de valeurs

Pour la transmettre des informations de gestion, SNMP utilise un encodage TLV (Type, Longueur,
Valeur).

3.4 Etude detaillée de la MIB


La MIB est la base de données des informations de gestion maintenue par l’agent, auprès de
laquelle le manager va venir pour s’informer.
Un fichier MIB est un document texte écrit en langage ASN.1 qui décrit les variables, les tables et
les alarmes gérées au sein d'une MIB

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,

Mode de nommage d’objet SNMP

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 :

fig 3.4 Arborescence MIB

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

Type d’information d’une MIB

Les objets MIB sont de 2 types : Standard et privé


Les objets de type privé sont specifiques à un agent donné

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.

Le schema suivant donne un apercu de la branche internet d’une MIB

fig 3.5 Brache Internet de la MIB

Standards de définition de la MIB

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

Numéro Objet Nombre de sous-objets


1 System 3
2 Interfaces 23
3 at 3
4 ip 33
5 icmp 26
6 tcp 17
7 udp 4
8 egp 6

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

fig 3.6 Arborescence MIB II


La définition de MIB II

Numéro Objet Numéro de Description


sous-objets
1 System 7 (3) Information générale concernant l'agent à travers le
système
2 Interfaces 23 Information concernant chaque interface IP de l'agent
3 Address 3 Table de translation d'adresse qui réalise la
translation correspondance entre l'adresse MAC et l'adresse IP
4 IP 38 (33) Compteurs IP
5 ICMP 26 Compteurs ICMP
6 TCP 19 (17) Compteurs TCP
7 UDP 7 (4) Compteurs UDP
8 EGP 18 (6) Compteurs EGP
9 CMOT 0 Compteurs CMOT(Protocole OSI équivalent à SNMP)
10 Transmissio 0 Mode de transmission et protocoles d'accès de chaque
n interface. Remplacera at
11 SNMP 30 Statistiques du trafic SNMP

Dans le groupe Interfaces, vous pourrez trouver les variables suivantes :


ifIndex numéro de l'interface
ifDescr description de l'interface
ifType type de l'interface
ifInOctets / ifOutOctets nombre total d'octets reçus / emis par l'interface

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

Les objets du groupe « Protocole IP » de MIB II

Le schéma suivant représente la branche associée à l'Internet et on s'intéresse au protocole IP.


ipInDelivers : donne le nombre de paquets correctement délivrés (22763 paquets)

L’OID de l'objet ipInDelivers est : 1.3.6.1.2.1.4.9.


GetRequest (1.3.6.1.2.1.4.9) produit la réponse: GetResponse ((ipInDelivers = 22763))

ipRouteTable: la table de routage


ipRoutedest: le destinataire à atteindre
ipRouteMetric1 : Le coût du chemin pour atteindre le destinataire (un entier).
ipRouteNextHop : L'adresse du prochain routeur pour rejoindre le destinataire

On souhaite maintenant consulter la table de routage par la commande GetRequest et


GetNextRequest .
GetRequest (ipRoutedest, ipRouteMetric1,ipRouteNextHop) produit la réponse :
GetResponse ( ( ipRoutedest.8.6.7.4="8.6.7.4 " ), (ipRouteMetric8.6.7.4=" 5" ), (ipRouteNextHop
8.6.7.4="80.3.76.5")) .
Conclusion

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.

4.2 Fonctionnement de Nagios


Le principe de supervision de Nagios repose sur l'utilisation de plugins, l'un installé sur la
machine qui supporte Nagios, et l'autre sur la machine que l'on souhaite superviser. Un
plugin est un programme modifiable, qui peut être écrit dans plusieurs langages possibles,
selon les besoins, et qui servent à récupérer les informations souhaitées. Nagios, par
l'intermédiaire de son plugin, contact l'hôte souhaité et l'informe des informations qu'il
souhaite recevoir. Le plugin correspondant installé sur la machine concernée reçoit la
requête envoyée par Nagios et ensuite va chercher dans le système de sa machine les
informations demandées. Il renvoi sa réponse au plugin Nagios, qui ensuite le transmet au
moteur de Nagios afin d'analyser le résultat obtenu et ainsi mettre à jour l'interface web. Il
existe deux types de récupération d'informations: La récupération active et la récupération
passive. La différence entre les deux types est l'initiative de la récupération. Dans le
premier type, à savoir le type actif, c'est Nagios qui a toujours cette initiative. C'est lui qui
décide quand il envoie une requête lorsqu'il veut récupérer une information. Alors que lors
d'une récupération passive, l'envoi d'information est planifié en local, soi à partir d'une
date, soit en réaction à un événement qui se déroule sur la machine administrée. Pour ce
cours, nous avons décidé d'utiliser le type de récupération active, c'est à dire que Nagios
prend l'initiative d'envoyer une requête pour obtenir des informations. Ceci évite donc de
configurer les postes à superviser.
La demande d'informations se fait grâce à l'exécution d'une commande de la part de
Nagios. Une commande doit obligatoirement comporter des arguments afin de pouvoir
chercher les bonnes informations sur les bonnes machines. Ces arguments sont l'adresse
IP de l'hôte sur lequel aller chercher l'information, la limite de la valeur de l'information
recherchée pour laquelle l'état 'attention' sera décidé, idem pour la valeur 'critique', et
enfin d'autres options qui varient selon le plugin utilisé. Pour ne pas devoir à créer une
commande par machine supervisée et par information recherchée, nous pouvons
remplacer les arguments par des variables, et ainsi réutiliser la commande plusieurs fois,
en remplaçant la bonne variable. Nous avons alors la possibilité de travailler avec des
services. Lors de la création d'un service, il faut l'associer à un ou plusieurs hôtes puis à
une commande. Ensuite Nagios remplace automatiquement la variable de l'adresse IP
dans la commande, grâce à la liste d'hôtes associée au service. Puis on doit définir
manuellement dans le service les autres variables nécessaires à la commande.
Un fois que Nagios à reçu les informations dont il avait besoin sur l'état des hôtes, celui-ci
peut construire des notifications sur l'état du réseau, afin d'en informer l'administrateur.
Lorsque Nagios effectue une notification, il attribut des états aux hôtes, ainsi qu'aux
services.
Un hôte peut avoir les états suivants:
 -Up : en fonctionnement
 -Down : éteint
 -Inaccessible
 -En attente
 Les différents états d'un service sont:
- OK
Attention
- Critique
- En attente
- Inconnu
LES PLUGLINS

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

Les principaux plugins utilisés par nagios sont :


 check_disk : Vérifie l'espace occupé d'un disque dur
 check_http : Vérifie le service "http" d'un hôte
 check_ftp : Vérifie le service "ftp" d'un hôte
 check_mysql : Vérifie l'état d'une base de données MYSQL
 check_nt : Vérifie différentes informations (disque dur, processeur …) sur un
système d'exploitation Windows
 check_nrpe: Permet de récupérer différentes informations sur les hôtes
 check_ping: Vérifie la présence d'un équipement, ainsi que sa durée de réponse
 check_pop: Vérifie l'état d'un service POP (serveur mail)
 check_snmp : Récupère divers informations sur un équipement grâce au protocole
SNMP (Simple Network Management Protocol)

4.3. Installation et interface graphique de nagios :

 Installer les prérequis


Apache2, php5, build-essential

 Apt-get install nagios nagios-nrpe-plugin


Lors de l’installation on vous demandera le mot de passe de l’administrateur nagiosadmin
puis le confirmé
Pour vérifier l’installation de nagios on se rend dans le navigateur et on tape l’adresse du
serveur / nagios3.

Une identification sera demandée et on utilise le profil «nagiosadmin» et le mot de passe


saisi lors de l’installation «passer».
L'interface graphique de Nagios est utilisée uniquement pour visualiser l'état du réseau
supervisé. Cette interface ne peut en aucun cas servir pour la configuration de Nagios.
L'interface se compose d'une partie "menu" à gauche, et une partie centrale, beaucoup plus
grande sur le reste de l'écran, qui servira à afficher les informations souhaitées. Dans le
menu, nous retrouvons en premier des liens vers le site de Nagios, et vers la
documentation de ce logiciel. Ces liens sont dans la partie 'General'. Puis une partie
'Monitoring' dans laquelle il est possible de sélectionner les informations que l'on souhaite
visualiser. Il y a de nombreux sous-menus dans cette partie ce qui permet d'afficher
vraiment les informations précises qui nous intéressent. Il y a également la possibilité de
visualiser des statistiques que Nagios a construit, ce qui est très intéressant pour
l'administrateur. Dans la partie "Reporting" il y a la possibilité de créer des rapports et des
historiques des évènements qui se sont produits sur le réseau. Et enfin dans la dernière
partie "Configuration", il est possible de visualiser toutes les configuration grâce à laquelle
Nagios sait qui et quoi supervisé.

4.4. Utilisation de quelques plugins importants

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

Le plugin NSClient ++ qui permet d’avoir des informations sur l’occupation du


processeur, l’occupation de la mémoire et l’état d'un service

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.

Mise en place de check_nrpe (sur Windows) :


1. Le plugin check_nrpe est à installer sur la machine NAGIOS. Dans notre cas,
check_nrpe a été installé automatiquement (dans le dossier /usr/lib/nagios/plugins
) et vient du paquet nagios-nrpe-plugin lors de l'installation de Nagios.
2. Sur les machines à superviser, on doit installer un logiciel permettant de dialoguer
avec check_nrpe. Le logiciel NSClient++ permet aussi de faire des échanges avec le
plugin check_nrpe. Sur les machines à superviser, on doit configurer le fichier
"NSClient". C'est dans ce fichier que l'on doit définir :
Les adresses des machines qui ont le droit de dialoguer avec NsClient++ (les
machines qui ont le droit de récupérer les informations sur ce poste)

Mise en place de check_nrpe (sur Linux) :


Même procédure que sur Windows sauf qu'on n'utilise pas NSClient ++ sur l'hôte à
superviser mais le programme "nagios-nrpe-server" à installer par la commande
apt-get install nagios-nrpe-server

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

Exemple pour Linux: command [check_cpu]=/usr/local/nagios/libexec/check_load -w


15,10,5 -c 30,25,20

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.

Mise en place de check_snmp

1/ Le plugin check_snmp est à installer sur la machine NAGIOS.


2/ Il faut configurer le routeur pour qu'il accepte les échanges snmp
Fonctionnement de check_snmp

Usage : Pour aller chercher les informations sur le routeur grâce à check_snmp, Nagios
exécute une commande ayant la syntaxe suivante :

check_snmp -H <adresse de l'hote à superviser> –o<adresse de l'information


à récupérer dans la MIB> -C <communauté SNMP>

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 :

check_ping -H <adresse de l'hote>-w <temps maxi de reponse>,<Pourcentage


de réussite des pings>-c <temps maxi de reponse>,<Pourcentage de réussite
des pings>

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

Action d’un administrateur de nagios :


Définir :
 les hôtes à superviser
 les groupes d'hôtes
 les commandes de supervision
 les services de supervision
 les contacts (les personnes qui reçoivent les alertes)
L'interface graphique de Nagios ne permet pas de configurer celui-ci. La seule manière de
le configurer, (sans utiliser d'autres outils) est de remplir les fichiers de configurations
manuellement (dans le dossier /etc/nagios3/conf,d).
Notifications
L’administrateur de nagios devait aussi paramétrer des alertes par l’envoi de mail ou de
sms.
Pour cela il doit installer sur le serveur nagios des paquets tels que swaks ou gsm-utils
 apt-get install swaks
 apt-get install gsm-utils
Les détails de mise en œuvre de notifications seront faits en Travaux pratiques

4.6. Configuration de Nagios version 3 sous Ubuntu ou Debian

Le Fichier de configuration de Nagios est :


/etc/nagios3/nagios.fg

Fichier de configuration des objets


Format : cfg_file=<nom_de_fichier>

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.

Répertoire des fichiers de configuration des objets


cfg_dir=<nom_de_répertoire>
Format :
Exemple : cfg_dir=/etc/nagios3/conf.d

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.

Fichier de cache des objets


Format: object_cache_file=<nom_de_fichier>
Exemple : object_cache_file=/var/cache/nagios3/objects.cache

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

Le fichier de ressources optionnel qui contient des définitions de macros du type


$USERn$. Les macros $USERn$ permettent de stocker des noms d'utilisateurs, des mots
de passe, et les éléments couramment utilisés dans les commandes (comme les chemins
d'accès). Les CGI ne lisent pas les fichiers de ressources, si bien que vous pouvez y mettre
des droits d'accès restrictifs (600 ou 660) pour protéger les données sensibles. Vous
pouvez inclure de nombreux fichiers de ressources en ajoutant des directives
resource_file au fichier de configuration principal - Nagios les traitera tous. Référez-
vous au fichier resource.cfg d'exemple situé à la racine de la distribution de Nagios, pour
voir comment utiliser les macros $USERn$.

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.

Option d'agrégation des changements d'état

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 :

 0 = Désactiver les mises à jour agrégées (par défaut)


 1 = Activer les mises à jour agrégées

Intervalle de mise à jour des états agrégés


Format: status_update_interval=<secondes>
Exemple : status_update_interval=15

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.

Option des notifications


Format : enable_notification=<0/1>
Exemple : enable_notification=1

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

 1 = notification activée (par défaut)

Option d'exécution des contrôles de service


Format : execute_service_checks=<0/1>
Exemple : execute_service_checks=1
Cette option détermine, si Nagios effectuera les contrôles des services lorsqu'il
(re)démarrera. Si cette option est désactivée, Nagios n'effectuera aucun contrôle de service,
et restera dans un mode "de sommeil" (il peut quand même recevoir les contrôles passifs à
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 :

 0 = Ne pas exécuter les contrôles de service

 1 = Exécuter les contrôles de service (par défaut)

Option d'acceptation des contrôles passifs de service


Format : accept_passive_service_checks=<0/1>
Exemple : accept_passive_service_checks=1

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 :

 0 = Ne pas accepter les contrôles passifs de service

 1 = Accepter les contrôles passifs de service (par défaut)


Option d'exécution des contrôles d'hôtes
Format: execute_host_checks=<0/1>
Exemple : execute_host_checks=1

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 :

 0 = Ne pas exécuter les contrôles d'hôtes

 1 = Exécuter les contrôles d'hôtes (par défaut)

Option d'acceptation des contrôles passifs d'hôte


Format: accept_passive_host_checks=<0/1>
Exemple : accept_passive_host_checks=1

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 :

 0 = Ne pas accepter les contrôles passifs d'hôte


 1 = Accepter les contrôles passifs d'hôte (par défaut)

Option de gestion d'événement


Format : enable_event_handlers=<0/1>
Exemple : enable_event_handlers=1

Cette option détermine si Nagios activera les gestionnaires d'évenements quand il


(re)démarrera. Si cette option est désactivée, Nagios ne lancera aucun gestionnaire
d'événement lié aux hôtes ou aux services. Note : si vous avez activé 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 = Désactiver les gestionnaires d'événements

 1 = Activer les gestionnaires d'événements (par défaut)

Méthode de rotation du journal


Format : log_rotation_method=<n/h/d/w/m>
Exemple : log_rotation_method=d

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)

Chemin d'accès aux archives du journal


Format : log_archive_path=<chemin_d_accès>
Exemple : log_archive_path=/var/log/nagios3/archives
C'est le répertoire où Nagios doit enregistrer les fichiers journaux ayant fait l'objet d'une
rotation. Cette option est ignorée si vous n'avez pas activé la rotation du journal.

Option de contrôle des commandes externes


Format : check_external_commands=<0/1>
Exemple : check_external_commands=1

Cette option détermine si Nagios va vérifier le contenu du fichier des commandes à la


recherche de commandes à exécuter. Cette option doit être activée si vous avez prévu
d'utiliser le CGI de commande pour envoyer des commandes via l'interface web. Des
programmes tiers peuvent également envoyer des commandes à Nagios en écrivant dans le
fichier de commande, sous réserve que les droits nécessaires à l'accès au fichier ait été
donnés,

 0 = Ne pas vérifier les commandes externes (par défaut)

 1 = Vérifier les commandes externes

4.7. Précisions sur les Objets Nagios

Définition d’un objet

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 ont un ou plusieurs services qui leur sont associés.

 Les hôtes ont un ou plusieurs services qui leur sont associés.

 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.)

 D'autres choses associées à un hôte (DNS enregistrements, etc.)

4.7.4. Groupes de services


Les Groupes de Services permettent de regrouper un ou plusieurs services ensemble. Les
groupes de services peuvent vous rendre la vue d'état plus facile pour plusieurs services en
relation dans l'interface web de Nagios (1) et simplifient la configuration (2)

4.7.5. Contacts
Les Contacts sont les personnes impliquées dans le processus de notification:

 Les contacts peuvent avoir un ou plusieurs moyens de notification (mobile, pager,


courrier électronique, messagerie instantanée, etc.)

 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:

 Quand les hôtes et services sont supervisés

Quand les contacts reçoivent des notifications

4.7.8. Commandes
Les Commandes sont utilisées pour indiquer à Nagios quels programmes, scripts, etc. il
doit exécuter pour assurer:

 Contrôles d'hôtes et de services

 Notifications

 Gestionnaires d'événements

4.8. Déclaration des données des objets


Les données des objets sont définies dans un ou plusieurs fichiers de configuration qu’on
déclare en utilisant les paramètres cfg_file et/ou cfg_dir dans le fichier de configuration
principal de nagios,

4.8.1. Syntaxe de déclaration des données des objets


Les définitions des objets se font à travers un système de gabarit(template) qui vous
permet une gestion beaucoup plus aisée de vos fichiers de configuration sur le long terme
Exemples
define host {
check_command check-host-alive
notification_options d,u,r
max_check_attempts 5
name generichosttemplate
register 0
}

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

TP3 : Superviser une machine Linux

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

TP4 : Superviser un routeur ou un switch manageable


Étapes
Il y a plusieurs étapes à suivre pour pouvoir superviser un nouveau routeur ou switch. Les
voici:
1. Activation su le switch ou le routeur à superviser l’agent snmp tout en créant les
communautés.
2. créez de nouvelles définitions d'hôte et service pour la supervision du routeur ou du
switch.
3. Redémarrez le démon Nagios
Principal plugin :
Check_snmp

TP5 : Superviser une imprimante

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

 Imprimante hors ligne

 Intervention requise

 Toner presque vide

 Mémoire insuffisante

 Porte ouverte

 Le plateau de sortie papier est plein

 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:

check_http, check_ftp, check_ssh, check_smtp, check_pop, check_imap

TP7 : Notification nagios


Le but de ce TP est d’arrêter certains services et hôtes et de paramétrer nagios pour que les
administrateurs puissent être alertés par mail et sms

Vous aimerez peut-être aussi