Introduction
Configuration
Pour définir le module source Discovery:
- Configurer la source dans le fichier /etc/shinken/sources/discovery.cfg
- La source discovery est déclarée dans le fichier /etc/shinken/synchronizers/synchronizer-master.cfg.
| Info | ||
|---|---|---|
| ||
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
source_name
order
import_interval
modules
enabled
1 - Active la source
0 - Désactive la source. Elle est visible dans l'interface, mais ne collecte pas de données.
Editer et ajouter une plage réseau
Les plages réseau scannées par le collecteur discovery peuvent être créées et modifiées dans l'interface de Configuration.
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 | ||
|---|---|---|
| ||
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 |
|---|
| Anchor | ||||
|---|---|---|---|---|
|
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/
Exemple de définition:
| Code Block | ||
|---|---|---|
| ||
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 |
|---|
Dans l'onglet "Liste des plages réseaux définies", le bouton "+ Ajouter" permet d'ajouter une nouvelle plage réseau à scanner.
| Panel |
|---|
Puis vous verrez la page de configuration d'une nouvelle plage réseau dans une popup.
Vous devez définir les paramètres suivants:
| Info | ||
|---|---|---|
| ||
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 |
|---|
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
- 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"
}
]
} |
- discovery_rules.json
Une règle de découverte est séparée en 4 parties:
- 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)
| 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"
}
]
} |
Onglet des règles de découverte
Un onglet listant les règles de découvertes (par défaut et définies par l'utilisateur) est disponible dans la page du collecteur discovery.
Les règles sont affichées sous forme de la liste:
- Triée par ordre de priorité: Lorsque les règles 1 et 2 s'appliquent, la règle 1 s'applique avant la règle 2 (ajout du préfixe et des modèles d'hôtes)
- La couleur de fond de chaque ligne indique le type de règle:
- Blanc : règle par défaut
- Bleu: règle définie par l'utilisateur
- Gris: règle affichée dans la liste mais sans effet (désactivée volontairement, syntaxe incorrecte, ...).
| Panel |
|---|
Il existe 6 statuts pour les règles de découvertes :
| Cas | Statut |
|---|---|
| La règle est en un seul exemplaire dans votre fichier | Définie par l'utilisateur |
| Le nom de la règle existe déjà dans le fichier par défaut | Surchargée par l'utilisateur |
| Le nom de la règle est défini plusieurs fois dans le fichier utilisateur | Dé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ôtes | Dé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.
Ecriture d'une règle de découverte
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 (=^...)
Termine par (=...$)
Est égal (=^...$)
Contient (=...)
Condition_1 ET condition_2 (condition_1 AND condition_2)
Cas spécifique des openports (X|X)
Liste des règles par défaut
Lors de l'installation, Shinken livre un certain nombre de règles par défaut pour la détection des objets via le collecteur discovery.
Ces règles par défaut sont les suivantes:
| Règle | Condition | Modèle d'hôte appliqué |
|---|---|---|
| aix | os=aix | aix |
| cisco | os=cisco | cisco |
| dns | openports=53 | dns |
| ftp | openports=21 | ftp |
| HPAsm | macvendor=hewlett packard AND openports=2301 | hp-asm |
| HPBladeChassis | os=embedded AND ostype=remote management AND osvendor=hp | hp-blade-chassis |
| HPPrinterState | openports=631 AND openports=9100 | printer-hp |
| HpUx | os=hp-ux | hpux |
| Http | openports=80 | http |
| Https | openports=443 | https |
| Imap | openports=143 | imap |
| Imaps | openports=993 | imaps |
| Ldap | openports=389 | ldap |
| Ldaps | openports=636 | ldaps |
| linux | os=linux | linux |
| mongodb | openports=27017 | mongodb |
| mssql | openports=1433 | mssql |
| mysql | openports=3306 | mysql |
| Oracle | openports=1521|1526 | oracle |
| pop3 | openports=110 | pop3 |
| pop3s | openports=995 | pop3s |
| smtp | openports=25 | smtp |
| smtps | openports=465 | smtps |
| ssh | openports=22 | ssh |
| switch | ostype=switch | switch |
| ESX | isesxhost=1 | esx |
| VMware-VM | isesxvm=1 | vmware-vm |
| Windows | os=windows | windows |
| Windows 2000 | os=windows AND osversion=2000 | windows2000 |
| Windows 2003 | os=windows AND osversion=2003 | windows2003 |
| Windows 2008 | os=windows AND osversion=vista | windows2008 |
| Windows 2008r2 | os=windows AND osversion=7 | windows2008,windows2008r2 |
| Windows 2012 | os=windows AND osversion=2012 | windows2012 |
| Windows 2016 | os=windows AND osversion=2016 | windows2016 |
Le fichier des règles par défaut est le suivant: discovery_rules.json
Le résultat d'une découverte (onglet Détail du dernier lancement)
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 | 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 | Liste des ports identifiés comme ouverts | 22,80,137,139,161,161,443,445,548,3261,5000,5001,5353 |
os | Famille du système d'exploitation 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 "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 | 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 |
| Anchor | ||||
|---|---|---|---|---|
|
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 constructeur, nmap utilise un fichier nommé nmap-mac-prefixes qui comporte des adresses MAC associées à des constructeurs (macvendor).
Par exemple, si votre machine récupérée par la discovery a pour adresse MAC "0050BAXXXXX", le constructeur détecté (macvendor) est "D-Link".
Shinken fournit par défaut un fichier nmap-mac-prefixes qui sert de réference à nmap. Ce fichier est mis à jour à chaque mise à jour de Shinken.
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/, qui surchargera celui que Shinken met à disposition lors de l'installation.
Ce fichier doit être au format de l'exemple donné et peut contenir des commentaires en commençant la ligne par un #.
Votre fichier surcharger la liste présente par défaut dans l'installation de Shinken Entreprise.
Le fichier par défaut à utiliser comme modèle est le suivant: nmap-mac-prefixes.
| Panel |
|---|
L'exemple suivant fournit une illustration sur la découverte d'un NAS Synology et la détection automatique du constructeur.
| Panel |
|---|
Configuration avancée
Pour définir le module source Discovery:
- Configurer la source dans le fichier /etc/shinken/sources/discovery.cfg
- La source discovery est déclarée dans le fichier /etc/shinken/synchronizers/synchronizer-master.cfg.
| Info | ||
|---|---|---|
| ||
Durant l'installation de Shinken Enterprise une source effectuant des découvertes réseau appelée discovery est créée. |
| Propriété | Valeur par défaut | Description |
|---|---|---|
source_name | discovery | Nom de la source. doit être unique (non modifiable pour le moment) |
order | 10 | Ordre dans la consolidation de l'algorithme pour cette source . Voir dans la page Synchronizer page pour plus d'information |
import_interval | 5 | Intervalle en minutes de chargement de la source. |
modules | discovery-import | Module 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_backend | mongodb | Backend où les données de la source est stockée |
| mongodb_url | mongodb://localhost/?safe=false | URL d'accès à MongoDB |
| mongodb_database | synchronizer | Base Mongo où sont stockées les données de la source |
| rules_path | /etc/shinken-user/configuration/daemons/synchronizers/sources/discovery/discovery_rules.json | Fichier 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-prefixes | Fichier comportant vos propres nmap-mac-prefixes (voir mécanisme de correspondance entre adresse MAC et constructeur) |
Exemple de définition:
| Code Block | ||
|---|---|---|
| ||
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
}
|
Onglet des règles de découverte
Un onglet listant les règles de découvertes (par défaut et définies par l'utilisateur) est disponible dans la page du collecteur discovery.
Les règles sont affichées sous forme de la liste:
- Triée par ordre de priorité: Lorsque les règles 1 et 2 s'appliquent, la règle 1 s'applique avant la règle 2 (ajout du préfixe et des modèles d'hôtes)
- La couleur de fond de chaque ligne indique le type de règle:
- Blanc : règle par défaut
- Bleu: règle définie par l'utilisateur
- Gris: règle affichée dans la liste mais sans effet (désactivée volontairement, syntaxe incorrecte, ...).
| Panel |
|---|
Il existe 6 statuts pour les règles de découvertes :
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.
Ecriture d'une règle de découverte
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)
L'écriture d'une condition pour la propriété openports est un cas spécifique.
Sur cette propriété, les conditions de type "contient, commence par ou termine par" ne peuvent pas être utilisées.| Code Block |
|---|
openports=1|2 |
Liste des règles par défaut
Lors de l'installation, Shinken livre un certain nombre de règles par défaut pour la détection des objets via le collecteur discovery.
Ces règles par défaut sont les suivantes:
os=aixos=ciscoopenports=53openports=21macvendor=hewlett packard AND openports=2301os=embedded AND ostype=remote management AND osvendor=hpopenports=631 AND openports=9100os=hp-uxopenports=80openports=443openports=143openports=993openports=389openports=636os=linuxopenports=27017openports=1433openports=3306openports=1521|1526openports=110openports=995openports=25openports=465openports=22ostype=switchisesxhost=1isesxvm=1os=windowsos=windows AND osversion=2000os=windows AND osversion=2003os=windows AND osversion=vistaos=windows AND osversion=7os=windows AND osversion=2012os=windows AND osversion=2016Le fichier des règles par défaut est le suivant: discovery_rules.json
Le résultat d'une découverte (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 respectivement:
Les informations collectées par nmapToutes les informations présentes dans ce tableau peuvent être utilisées dans les conditions d'une règle- Si une valeur a été modifiée par une règle, la colonne "Informations supplémentaires" indique le mécanisme utilisé
| Panel |
|---|
Les données collectés par nmap
fqdn
DiskStation
mac
00:11:32:9F:09:44
macvendor
Synology Incorporated
openports
22,80,137,139,161,161,443,445,548,3261,5000,5001,5353
os
Famille du système d'exploitation 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 "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
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
3.X
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 constructeur, nmap utilise un fichier nommé nmap-mac-prefixes qui comporte des adresses MAC associées à des constructeurs (macvendor).Par exemple, si votre machine récupérée par la discovery a pour adresse MAC "0050BAXXXXX", le constructeur détecté (macvendor) est "D-Link".
Shinken fournit par défaut un fichier nmap-mac-prefixes qui sert de réference à nmap. Ce fichier est mis à jour à chaque mise à jour de Shinken.
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/, qui surchargera celui que Shinken met à disposition lors de l'installation.
Ce fichier doit être au format de l'exemple donné et peut contenir des commentaires en commençant la ligne par un #.
Votre fichier surcharger la liste présente par défaut dans l'installation de Shinken Entreprise.
Le fichier par défaut à utiliser comme modèle est le suivant: nmap-mac-prefixes.
| Panel |
|---|
L'exemple suivant fournit une illustration sur la découverte d'un NAS Synology et la détection automatique du constructeur.
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 : Détection des systèmes d'exploitation
- -oX : Export XML (utilisé pour l’interprétation de données par Shinken)
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
Résolution des problèmes courants
Le fichier de règles n'est pas correctement chargé
Il peut y avoir plusieurs problèmes à l'ouverture de votre fichier de règles:
| Problèmes | Résultat |
|---|---|
| Votre fichier n'est pas au format json | Le fichier n'est pas lu et une erreur apparaît |
| Votre fichier est introuvable | Le fichier n'est pas lu et une erreur apparaît |
| Votre fichier comporte des clés inconnues | Le fichier n'est pas lu et une erreur apparaît |
| Votre fichier est vide | Le fichier n'est pas lu mais aucune erreur n'apparaît |
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 |
|---|
Le fichier de préfixes nmap n'est pas chargé
Il peut y avoir plusieurs problèmes à l'ouverture de votre fichier de préfixes nmap qui empêcheront la source discovery de lancer son import:
| Problèmes | Résolution |
|---|---|
| Votre fichier est introuvable | Vérifiez que l'emplacement et le nom de votre fichier correspond à celui renseigné dans la configuration de votre discovery. |
| Votre fichier comporte des erreurs (adresse mac sans macvendor par exemple) | Vérifiez que toutes vos adresse mac sont bien suivies d'une macvendor et comportent bien 6 caractères. |
| Panel |
|---|
| Panel |
|---|









