Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Principe

Ce collecteur vous permet de détecter automatiquement des équipements réseau et des serveurs physiques dans votre infrastructure pour faciliter et accélérer leur import dans la configuration,

  • En utilisant la commande nmap pour la découverte des équipements, la commande 
    • Scanne les machines présentes sur le réseau et détecte les ports ouverts,
    • Essaye de déterminer le constructeur de l'équipement en fonction de son adresse MAC 
    • Si possible, détermine son FQDN

  • Permet de définir des règles qui suivant les valeurs remontées par nmap apporte un complément d'informations sur les équipements découverts.
    • Ajout de modèles d'hôtes
    • Ajout d'un préfixe au nom de l'équipement.

Les équipements qualifiés sont alors présentés en tant que nouveautés ou différences.


Tip
iconfalse
titleSur cette page

Table of Contents
maxLevel3


Configuration

Pour définir le module source Discovery:

  1. Configurer la source dans le fichier  /etc/shinken/sources/discovery.cfg
  2. La source discovery est déclarée dans le fichier /etc/shinken/synchronizers/synchronizer-master.cfg.


Info
titleNote

Durant l'installation de Shinken Enterprise une source effectuant des découvertes réseau appelée discovery est créée.


/etc/shinken/sources/discovery.cfg



PropriétéValeur par défautDescription

source_name

discoveryNom de la source. doit être unique (non modifiable pour le moment)

order

10Ordre dans la consolidation de l'algorithme pour cette source . Voir dans la page Synchronizer page pour plus d'information

import_interval

5Intervalle en minutes de chargement de la source.

modules

discovery-importModule utilisé

enabled

0

1 - Active la source

0 - Désactive la source. Elle est visible dans l'interface, mais ne collecte pas de données.

data_backendmongodbBackend où les données de la source est stockée
mongodb_urlmongodb://localhost/?safe=falseURL d'accès à MongoDB
mongodb_databasesynchronizerBase Mongo où sont stockées les données de la source
rules_path/etc/shinken-user/configuration/daemons/synchronizers/sources/discovery/discovery_rules.jsonFichier json comportant vos règles de découvertes (voir règles de découvertes)
nmap_mac_prefixes_path/etc/shinken-user/configuration/daemons/synchronizers/sources/discovery/nmap/nmap-mac-prefixesFichier comportant vos propres nmap-mac-prefixes (voir nmap)


Exemple de définition:

Code Block
languagejs
define source {
    source_name             discovery
    order                   10
    import_interval         5
    module_type             discovery-import
    data_backend            mongodb
    mongodb_uri             mongodb://localhost/?safe=false
    mongodb_database        synchronizer
    rules_path              /etc/shinken-user/configuration/daemons/synchronizers/sources/discovery/discovery_rules.json
    nmap_mac_prefixes_path  /etc/shinken-user/configuration/daemons/synchronizers/sources/discovery/nmap/nmap-mac-prefixes
}


Editer et ajouter une liste de scan réseau

Le scan réseau peut être défini dans la Page Principale

Commencez par cliquer sur la source "discovery" dans la page principale.


Panel

Image Modified


Dans l'onglet "Liste des plages réseaux définies", le bouton "+ Ajouter" permet d'ajouter une nouvelle plage réseau à scanner.


Panel

Image Modified


Puis vous verrez la page de configuration d'une nouvelle plage réseau dans une popup.


Vous devez définir les paramètres suivants:

  • Nom
  • Plage IP: Plage(s) d'adresses à scanner dans le format accepté par la command nmap.

Info
titleExemples

172.16.1.1-254

172.16.0.0/24

172.16.0.0/24 192.168.1.10-100

  • Plage de ports: Plage de ports scanné pour chaque adresse. Les 1000 ports les plus répandus sont utilisés par défaut
    • Vous pouvez restreindre les ports scannés, avec une liste.
    • Plusieurs plages peuvent être définies séparés par des virgules.
    • Ex: 1-1024,2000-8000
  • Notes: Texte descriptif au sujet de cette plage réseau
  • Activé: Activer ou désactiver les scans sur cette plage réseau


Panel

Image Modified


Anchor
discovery_rules
discovery_rules
Les règles de découvertes

Les mécanismes de règles permet d'enrichir les équipements détectés.

  • Par défaut, une installation fournit une liste de règles prédéfinies.
  • Vous pouvez définir vos propres règles ou surcharger les règles prédéfinies.
    Vous devez pour cela éditer le fichier JSON
    • /etc/shinken-user/configuration/daemons/synchronizers/sources/discovery/discovery_rules.json


Il y a 4 parties dans une règle:

  • name: le nom et l'id de votre règle ( doit être unique )
  • condition[1-9]: représente une condition qui applique la règle si elle est remplie
    il suffit qu'une seule condition soit bonne pour que la règle soit appliquée )
  • prefix_name: ce préfixe est ajouté au nom des éléments pour lesquels la règle s'applique ( optionnel )
  • use: Les modèles d'hôtes ajoutés en cas d'application de la règle. Vous pouvez en mettre autant que vous voulez en les séparant d'une virgule.
    • Les modèles d'hôtes sont ajoutés à la suite de ceux déjà présents sur l'hôte ( ajoutés par d'autres règles


Voici un exemple qui est disponible par défaut dans Shinken:


Code Block
{
	"rules":[
			{
			"name": "myRuleExample",
			"condition1": "os=myOS AND osversion=^2",
			"condition2": "osversion=^2.6.0$",
			"condition3": "macvendor=^myMacVendor",
			"condition4": "ostype=myType$",
			"condition5": "openports=1|2",
			"prefix_name": "myRulePrefix",
			"use": "myTemplate,myTemplate2"
			}
	]
}


Il peut y avoir plusieurs problèmes à l'ouverture de votre fichier de règles:


ProblèmesRésultat
Votre fichier n'est pas au format jsonLe fichier n'est pas lu et une erreur apparaît
Votre fichier est introuvableLe fichier n'est pas lu et une erreur apparaît
Votre fichier comporte des clés inconnuesLe fichier n'est pas lu et une erreur apparaît
Votre fichier est videLe fichier n'est pas lu mais aucune erreur n'apparaît


Onglet de règles

Un onglet listant les règles de découvertes (par défaut et celles de définies par l'utilisateur) est disponible dans la page du collecteur discovery.

Si le fichier de règles est correctement chargé

Les règles sont listées les unes sous les autres:

  • dans leur ordre de priorité (la règle 1 étant prioritaire sur la règle 2)
  • Les lignes ont des couleurs:
    • Blanc : règle par défaut 
    • Bleu: règle utilisateur
    • Gris: règle affichée dans la liste mais sans effet.


Panel

Image Modified


Il existe 6 statuts pour les règles de découvertes :

CasStatut
La règle est en un seul exemplaire dans votre fichierDéfinie par l'utilisateur
Le nom de la règle existe déjà dans le fichier par défautSurchargée par l'utilisateur
Le nom de la règle est défini plusieurs fois dans le fichier utilisateurDéfinie plusieurs fois
La règle comporte une erreur (comme une des clés obligatoires)Invalide
La règle ne comporte pas de conditions ou de modèles d'hôtesDésactivé


Vous pouvez rafraîchir la liste des règles directement en appuyant sur le bouton de rafraîchissement en haut à droite , ou en appuyant sur F5.

Si le fichier de règles n'est pas correctement chargé

Dans le cas où le fichier de règles n'est pas correctement chargé ( voir les problèmes liés aux règles dans les règles de découvertes ), seules les règles par défaut sont prises en compte et un message d'erreur apparaît en haut du tableau.

Image Removed

Ecriture d'une règle de découverte

Le mécanisme de condition porte sur les données collectés

Les conditions

Le mécanisme de condition porte sur les données collectés par nmap. En fonction des ces valeurs, vous allez pouvoir modifier l'hôte à proposer au Synchronizer.

Il existe plusieurs possibilités pour les conditions de vos règles :

Commence par (=^...)

Si l'expression commence par '^', la condition signifie que le résultat attendu DOIT commencer par l'expression.


Code Block
macvendor=^myMacVendor


Termine par (=...$)

Si l'expression termine par '$', la condition signifie que le résultat attendu DOIT terminer par l'expression.


Code Block
ostype=myType$


Est égal (=^...$)


Si l'expression commence par '^' ET termine par '$', la condition signifie que le résultat attendu DOIT être l'expression exacte.


Code Block
osversion=^2.6.0$


Contient (=...)

Si l'expression ne contient aucun des paramètres précédents, la condition signifie que le résultat attendu DOIT contenir l'expression


Code Block
os=myOS


Condition_1 ET condition_2 (condition_1 AND condition_2)

Si la condition contient un ou plusieurs AND, cela signifie que tout ce qui est dans cette condition doit être respecté pour que la règle soit appliquée.


Code Block
os=myOS AND osversion=^2


Cas spécifique des openports (X|X)

La condition openports est un cas spécifique.

  • En terme de port on ne fait pas de contient, commence ou termine par.
    • Il faut donc rentrer simplement le port exact.
    • la présence des caractères ^' et '$' sera donc considérée comme une erreur.

  • Si vous souhaitez faire un OU, il suffit de mettre un '|' entre les ports.


Code Block
openports=1|2


Le résultat ( dans l'onglet Détail du dernier lancement )

Dans l'onglet "Détail de dernier lancement" est listé chaque équipement détecté par le collecteur discovery en fonction des plages réseau actives lors de l'import.

Pour chaque équipement, l’œil à droite vous permet de voir le détail de l'opération. Deux tableaux fournissent

  • Les informations collectées par nmap
    • Toutes les informations présentes dans ce tableau peuvent être utilisées dans les conditions d'une règle

  • L'Hôte proposé au Synchronizer:
    • Si une valeur a été modifiée par une règle, la colonne "Informations supplémentaires" indique le mécanisme utilisé


Panel

Image Modified


Les données collectés par nmap

Les scans réalisés par nmap remontent les informations suivantes:

Nom
Exemple

fqdn

Nom de domaine complètement qualifié

DiskStation

mac

Adresse MAC de l'équipement

00:11:32:9F:09:44

macvendor

En fonction de l’adresse MAC, nmap associe le nom d'un constructeur.
Nom du constructeur associé à l'adresse MAC (voir le chapitre suivant pour plus de détails sur la correspondance adresse MAC ↔ Constructeur

Synology Incorporated

openports

Les Liste des ports identifiés comme ouverts

22,80,137,139,161,161,443,445,548,3261,5000,5001,5353

os

Concepteur

Famille du système d'exploitation

ou périphérique (par exemple Apple, Cisco, Microsoft et Linksys). Pour les projets communautaires tels qu'OpenBSD et Linux sans fournisseur de contrôle, le nom de l'osvendor est utilisé pour cette valeur.

Linux

détectée, comme par exemple Windows, Linux, IOS (routeurs Cisco), Solaris ou OpenBSD. Ils y a des centaines d'autres familles de systèmes comme des routeurs, imprimantes ou autres systèmes propriétaires.

Lorsque la famille du système d'exploitation ne peut pas être déterminée avec une confiance suffisante, la valeur embedded est utilisée.

Linux

ostype

Le type de système d'exploitation est une classification large selon l'usage prévu de ce système comme

ostype

Le type de périphérique est une classification large telle que "router", "printer", ou "game console". Les systèmes d'exploitation universels tels que Linux et Windows, qui ont de nombreux cas d'utilisations sont classés en tant que "general purpose".

general purpose

osvendor

l'osvendor comprend des produits tels que Windows, Linux, IOS (pour routeurs Cisco), Solaris et OpenBSD.
Il existe également des centaines d'appareils tels que des commutateurs, des routeurs à large bande et des imprimantes qui utilisent des systèmes d'exploitation non divulgués. Lorsque le système d'exploitation sous-jacent n'est pas clair, "embedded" est utilisé.

Linux

osversion

la version de l'os détéctée

3.X

Le mécanisme de correspondance entre macAddress et MacVendor

Entreprise ou entité qui produit le système d'exploitation ou équipement (par exemple Apple, Cisco, Microsoft, Linksys). Pour les projets communautaires comme Linux ou les différents BSD, la valeur de l'information "os" est répétée ici.

Linux

osversion

Version de l'os détectée

3.X


Correspondance entre l'adresse MAC et le constructeur

Lors du scan d'une plage réseau, le collecteur discovery peut remonter le constructeur du matériel à l'aide de nmap.

Cette détection du constructeur se fait par identification de l'adresse MAC de l'équipement détecté sur le réseau. Pour la correspondance entre adresse MAC et constructeurLors du scan nmap effectué par la discovery, nmap utilise un fichier nommé nmap-mac-prefixes prefixes qui comporte des adresses mac associés MAC associées à des macvendor (ce qui sera récupéré par nmapconstructeurs (macvendor).

Par exemple, si votre machine récupérée par la discovery a pour adresse MAC -address : "0050BAXXXXX, sa mac-vendor sera ", le constructeur détecté (macvendor) est "D-Link".
Shinken fourni fournit par défaut un fichier nmap-mac-prefixes qui sera la référence d'nmap. Il sera sert de réference à nmap. Ce fichier est mis à jour à chaque update mise à jour de Shinken.Vous pouvez cependant

Pour créer des associations entre adresses MAC et constructeur personnalisées, il est possible créer un fichier nmap-mac-prefixes dans /etc/shinken-user/configuration/daemons/synchronizers/sources/discovery/nmap/

par défaut

qui surchargera celui que

shinken

Shinken met

à votre disposition

à  disposition lors de l'installation.

Votre Ce fichier doit être au format de l'exemple donné et peut contenir des commentaires en commençant la ligne par un #.


Votre fichier viendra surchargé surcharger la liste présente par défaut dans l'installation de Shinken Entreprise.

Voici le

Le fichier par défaut

( nmap-mac-prefixes )

à utiliser comme modèle est le suivant: nmap-mac-prefixes.


Panel

Image Added


L'exemple suivant fournit une illustration sur la découverte d'un NAS Synology et la détection automatique du constructeur.


Panel
Image Removed

Image Modified


Liste des règles par défaut 

Voici la liste des règles par défaut mise en place dans l'installation de Shinken Entreprise.


RégleCondition Modèle d'hôte appliqué
aixos=aixaix
ciscoos=ciscocisco
dnsopenports=53dns
ftpopenports=21ftp
HPAsmmacvendor=hewlett packard AND openports=2301hp-asm
HPBladeChassisos=embedded AND ostype=remote management AND osvendor=hphp-blade-chassis
HPPrinterStateopenports=631 AND openports=9100printer-hp
HpUxos=hp-uxhpux
Httpopenports=80http
Httpsopenports=443https
Imapopenports=143imap
Imapsopenports=993imaps
Ldapopenports=389ldap
Ldapsopenports=636ldaps
linuxos=linuxlinux
mongodbopenports=27017mongodb
mssqlopenports=1433mssql
mysqlopenports=3306mysql
Oracleopenports=1521|1526oracle
pop3openports=110pop3
pop3sopenports=995pop3s
smtpopenports=25smtp
smtpsopenports=465smtps
sshopenports=22ssh
switchostype=switchswitch
ESXisesxhost=1esx
VMware-VMisesxvm=1vmware-vm
Windowsos=windowswindows
Windows 2000os=windows AND osversion=2000windows2000
Windows 2003os=windows AND osversion=2003windows2003
Windows 2008os=windows AND osversion=vistawindows2008
Windows 2008r2os=windows AND osversion=7windows2008,windows2008r2
Windows 2012os=windows AND osversion=2012windows2012
Windows 2016os=windows AND osversion=2016windows2016


Précisions techniques

Sécurité: paramètres de la commande nmap

La commande nmap lancée par la source discovery utilise les paramètres suivants:

  • -PE : Ping Scan (Echo Request)
  • -sU : Scan UDP
  • -sT : Scan TCP
  • --min-rate 1000 : Envoie un minimum de 1000 paquets par secondes
  • --max-retries 3 : Effectue au maximum 3 retransmissions en cas d'erreur sur les scan de ports
  • -T4 : Optimisation de performances
  • -O : Detection Détection des systèmes d'exploitation
  • -oX : Export XML (utilisé pour l’interprétation de données par Shinken)

Précisions techniques

Clés de synchronisation

Les clés de synchronisation sont des propriétés des objets utilisées pour les identifier dans les sources. Le fonctionnement et l'utilité des clés de synchronisation sont décrits de manière plus détaillée dans la page de documentation dédiée: Précision techniques sur le fonctionnement de l'import des sources.

Les informations suivantes de la découverte réseau sont ajoutées en tant que clés de synchronisation de l'objet dans Shinken:

  • host_name
  • address

    sont décrits de manière plus détaillée dans la page de documentation dédiée: Précision techniques sur le fonctionnement de l'import des sources.


    Les informations suivantes de la découverte réseau sont ajoutées en tant que clés de synchronisation de l'objet dans Shinken:

    • host_name
    • address

    Résolution des problèmes courants


    Si le fichier de règles n'est pas correctement chargé

    Dans le cas où le fichier de règles n'est pas correctement chargé ( voir les problèmes liés aux règles dans les règles de découvertes ), seules les règles par défaut sont prises en compte et un message d'erreur apparaît en haut du tableau.


    Panel

    Image Added