====== 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 ||