Table des matières
Le SNMP (SimpleNetManagementProtocol)
C'est un système de management et monitoring par le réseau. Basé sur l'udp, il ne requiert que très peu de puissance de calcul.
C'est un système client-serveur : le serveur expose ses variables d'administration (et de monitoring), caractérisées par leur OID, au client, qui peut:
- récupérer la liste des variables
- récupérer des valeurs (load, occupation disque…)
- modifier la valeur de certaines variables (typiquement de configuration)
SNMPv1
Introduction
Les connexions avec le serveur ne sont pas sécurisées, il est possible de sniffer la connexion. L'authentification se fait avec l'IP source et la communauté.
Cette version est bien adaptée pour des données publiques.
Directives de configuration
Création d'un modèle de sécurité (paranoïaque ici) avec :
- la communauté (ici, public)
- les ip sources autorisées (ici, les ip de la classe 138.231.136.0/24 et 127.0.0.1).
# sec.name source community com2sec paranoid 138.231.136.0/24 public com2sec paranoid 127.0.0.1 public
Création des groupes d'accès (ici le group MyROSystem en snmpv1 avec le modèle de sécurité paranoid) :
# sec.model sec.name group MyROSystem v1 paranoid
Création des groupes d'autorisation (ici la view
monitor qui permet les oid définis ci-dessous)
# load machine view monitor included .1.3.6.1.4.1.2021.10.1 # espace disques view monitor included .1.3.6.1.4.1.2021.9.1
Liaison groupe d'accès et groupes d'autorisation (ici le groupe MyROSystem aura accès aux oid définis dans les view
monitor) :
# context sec.model sec.level match read write notif access MyROSystem "" any noauth exact monitor none none
Bilan
La communauté public aura accès aux oid permettant de monitorer l'espace disque et le load de la machine, cela depuis localhost ou des adresses en 138.231.136.*
SNMPv3
Introduction
SNMPv3 permet de sécuriser les échanges client-serveur.
L'authentification est sécurisée (cryptage MD5 ou SHA) et les communiquations peuvent être encodées en DES.
On utilisera seulement l'authentification avec SHA pour le crans. Les données n'étant pas confidentielles (ordre de restart fw…), de plus le snmp passe par le vlan adm qui n'est pas exposé aux adhérents.
Mise en place
Il faut tout d'abord créer un utilisateur dans la conf de SNMP :
rouser <username> createUser <username> SHA <pass>
Ensuite, on peux supprimer la seconde ligne, l'utilisateur sera créé avec avec le pass donné.
Configuration des réponses snmp
Les différentes directives sont décrites dans la partie suivante.
Il peux y avoir plusieurs fois la même directive, il y a une numérotation implicite de celles-ci dans leur ordre d'apparition.
Les requêtes
On utilise la commande suivante (avec /etc/snmp.conf correctement écrit) :
snmpget <host> <oid>
On peux voir tous les 'sous-oid' à l'aide de :
snmpwalk <host> <oid de base>
Il y a une multitude d'OID, nous utiliseront les suivantes. La colonne de droite correspond aux directives à placer dans /etc/snmpd.conf :
Vérification des processus tournant sur une machine | .1.3.6.1.4.1.2021.2.1.x | x=prNames.y : nom du process n°y | x=prCount.y : nombre de process n°y | proc <nom du processus> ; le nom doit être le nom 'complet ' vu par ps-auxw}. | |||||||||||||
Load de la machine *100 | .1.3.6.1.4.1.2021.10.1.laLoadInt.x | x=1 moyenne sur 1 seconde | x=2 moyenne sur 5 secondes | x=3 moyenne sur 15 secondes | Aucune directive de configuration particulière | ||||||||||||
Exécution d'une commande | .1.3.6.1.4.1.2021.8.1.x | x=extNames.y : nom de la commande n°y | x=extResult.y : exécution de la commande n°y, le code d'erreur est retourné | exec <nom de la commande> <commande à excécuter avec ses arguments> | |||||||||||||
Comptage trafic d'une interface réseau | interfaces.ifTable.ifEntry.x | x=ifInOctets.y : nombre d'octets en entrée de l'interface n°y | x=ifOutOctets.y : nombre d'octets en sortie de l'interface n°y | x=ifInErrors.y : nombre d'erreurs en entrée de l'interface n°y | x=ifOutErrors.y : nombre d'erreurs en sortie de l'interface n°y | x=ifDescr.y : nom interface n°y | Aucune directive de configuration particulière | ||||||||||
Monitoring espace disque | .1.3.6.1.4.1.2021.9.1.x | x=dskPath.y : point de montage partition n°y | x=dskAvail.y : espace libre partition n°y | x=dskUsed.y : espace utilisé partition n°y | < | 3>disk <point de montage> |