11 de diciembre de 2008

Echando a andar snmpd en mi Slackware Linux

Por diversos motivos, me vi en la necesidad de echar a volar un par de servicios de snmp en mi linux box, de entrada el snmpd, que es un agente de snmp; y por otro lado, snmptrapd que es un demonio que se encarga de recibir y procesar los traps de snmp enviados por otros equipos, es digamos, la base para construír un sistema de gestión de fallas de elementos de red.

Veamos, ¿qué es snmp?
Según la wikipeadia:
El Protocolo Simple de Administración de Red o SNMP es un protocolo de la capa de aplicación que facilita el intercambio de información de administración entre dispositivos de red. Es parte de la familia de protocolos TCP/IP. SNMP permite a los administradores supervisar el desempeño de la red, buscar y resolver sus problemas, y planear su crecimiento.
Lea el artículo completo aquí: http://es.wikipedia.org/wiki/SNMP

Coninuemos. Para este proyecto utilicé Slackware 12.1.0, el cual ya contiene dentro de sus paquetes el net-snmp-5.4 lo que agiliza las cosas pues ya no es necesario bajarlo. Si este no es su caso, puede obtener las fuentes de: http://www.net-snmp.org

Ok, de entrada vamos a configurar el agente de snmp (snmpd), para esto, me guié del artículo Cómo configurar SNMP escrito por Joel Barrios Dueñas.
Les aconsejo también tener a la mano la página manual de este archivo, pueden consultarla en: http://www.net-snmp.org/docs/man/snmpd.conf.html

Ahora, armados con nuestros manuales de referencia vamos al archivo de configuración, localizado en /etc/snmp/snmpd.conf.

Primero que nada debemos crear una política de acceso, de seguridad pues.
En general podríamos usar solamente las directivas rocommunity y rwcommunity, pero, son muy básicas y solamente van a servirnos para definir las comunidades para lectura/escritura y sólo lectura. Si deseamos generar reglas de acceso un poco más refinadas podríamos utilizar listas de control de acceso:
com2sec localHost 127.0.0.1/32   private
com2sec redLocal 192.168.1.0/24 public
En este caso, creamos dos ACLs, definidas por rangos de ip's, la primera se llama localHost y se refiere al ip 127.0.0.1 y la segunda se llama redLocal y se refiere a la red 192.168.1.0/24
Así mismo, indico que a localHost se le asigna la comunidad "private", y a redLocal se le asigna la comunidad "public".

Posteriormente asigno un grupo RWGroup y un ACL a un acceso, ya sea v1, v2c o usm. v1 es para SNMP v1, v2c para SNMP v2c y usm, en realidad no tengo una idea clara. Aunque asumo que es algo como "Unespecified Security Model".
#Se asigna local al grupo de lectura escritura
group RWGroup v1 localHost
group RWGroup v2c localHost
group RWGroup usm localHost

Lo mismo aplica para el bloque de abajo, en el que asignamos la ACL redLocal al grupo ROGroup, para los accesos v1, v2 y usm.

#Se asigna miredlocal al grupo de solo lectura
group ROGroup v1 redLocal
group ROGroup v2c redLocal
group ROGroup usm redLocal
Después se asignan los permisos para las ramas que se desean ver:

## name   incl/excl subtree   mask(optional)
view all included .1 80

En este caso, creamos una vista llamada "all", a la cual se le indica que tendrá incluída la subrama .1 (que es básicamente la raíz de cualquier OID de SNMP, lo que sinifica que podremos ver todo el árbol), después de esto viene la máscara, que según entiendo da a entender que todo se podrá observar.

Posteriormente asignamos permisos a los grupos:
## group         context  sec.model sec.level prefix read   write notif
access ROGroup "" any noauth exact all none none
access RWGroup "" any noauth exact all all all
Aquí, todo parece claro, ¿cierto?

Finalmente, unas cuantas directivas de configuración

agentaddress 127.0.0.1
sysLocation MiCasita
sysContact AlfredoCampos (alfredo.campos en gmail.com)
sysDescr La PCera Linuxista del Alfredo
trapcommunity public
transink 127.0.0.1
Prometo describirlas con un poco más de calma.

Ahora, el archivo de inicio del servicio.
Como cualquier linuxero podría saberlo, éste se encuentra en /etc/rc.d/rc.snmpd y sólo comentaré que la línea para hacer que esto funcioe es:

/usr/sbin/snmpd -C -a -A -c /etc/snmp/snmpd.conf

¿Cómo sé que funciona?

Bueno, podemos ejecutar el siguiente comando:

snmpwalk -v1 127.0.0.1 -c private .1
Con lo cual podremos observar una lista bastante grande de los datos del árbol de SNMP disponibles para su linuxbox.

Al menos funciona y el demonio se levanta sin mayores complicaciones, claro que falta ponerle opciones paa que guarde un log y algunas monerías más. Eso lo haré próximamente.

¡Saludos!

No hay comentarios.: