====== 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
createUser SHA
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
On peux voir tous les 'sous-oid' à l'aide de :
snmpwalk
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 ; 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 ||
||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 ||