Configuración Básica De SNMP

Después de introducir SNMP, es hora de que entremos un poco en detalle sobre la configuración y elementos básicos de SNMP.

Elementos básicos

Cuando vamos a configurar un servidor SNMP tenemos que tratar con términos como:

  • Comunidades: Las comunidades son como el “usuario” de un sistema. En base a la comunidad, el administrador podrá determinar que privilegios tendrán los “usuarios” que utilicen la misma.

  • Grupos: Los grupos son las instancias de una comunidad en una configuración determinada, es decir, el “usuario” utilizará una comunidad la cual se “mapeará” en un grupo en la configuración del servicio.

  • Vistas: Las vistas son exactamente eso, vistas. ¿Qué quiere decir esto?. Como ya expliqué en el primer post, SNMP es un servicio para “gestionar y administrar redes” y una de las cosas que realiza un administrador de redes en su día a día es la analizar diferentes “parametros” de red. Estos “parametros” son los que configuraremos con las vistas.

  • MIBS: Las vistas contienen elementos de información. Estos elementos de información están definidos en diferentes “MIBS”. Un MIB es un documento de texto plano en el cual se definen en formato ASN-1 cada uno de los objetos de administración y sus identificadores.

  • OIDS: Un OID es un identificador para cada uno de los objetos de las MIBS. Los OIDS tienen una forma como la siguiente “.1.3.6.1.2.1.1.1.0”. Más tarde veremos como buscar estos OIDS y como utilizarlos.

  • RFC: Un RFC es un “Request For Comments”. Como supongo que sabréis, uno de los elementos que hicieron que Internet triunfará fue su carácter abierto. Para estandarizar y documentar todas las decisiones tomadas en Internet se crearon los RFC los cuales son públicos y se puede buscar desde el siguiente enlace. Los RFC principales a tener en cuenta para SNMP son los siguientes:

    • SNMP [RFC 1157]: RFC de especificación del protocolo.
    • MIB [RFC 1156 RFC 1213]: RFC Con las especificaciones de las MIBS estándar.
    • HOST-RESOURCES [RFC 2790]: RFC Con las especificación de la MIB Host Resources (más tarde hablaremos sobre esta MIB).

Configuración

Bueno, una vez que tenemos más o menos claro los “elementos básicos” de SNMP, ahora queda configurar nuestro agente para que pueda ser administrado por nuestro “monitor”. En mi caso yo he utilizado una máquina virtual con lubuntu y he instalado el servicio como expliqué en el primer post. El monitor del servicio será mi computador personal al que le he instalado el cliente SNMP.

El archivo principal que debemos configurar en el agente es el archivo “/etc/snmp/snmpd.conf”. Este archivo determinará la configuración que utilizará el agente. Seguramente tu instalación vendrá con un archivo de ejemplo. Si quieres puedes renombrar el archivo y crear uno en blanco para seguir el tutorial.

Lo primero que tenemos que hacer en nuestro fichero es configurar el mapeo de comunidad a grupo seguro. Un grupo seguro es un grupo interno a la configuración, en cambio, una comunidad es un “grupo” o “usuario” externo al fichero de configuración, es decir, un usuario accederá mediante una comunidad que será mapeada internamente en un grupo seguro. Para mapear una comunidad a un grupo seguro únicamente ponemos la siguiente línea(una por cada comunidad)

1
com2sec sec_local     localhost       local

El primer campo es una palabra reservada. El segundo campo es el nombre del grupo seguro. El tercer campo es la dirección desde la cual se podrá utilizar esta comunidad. En este campo podemos indicar una dirección de red, una dirección de host o default que indica que es accesible desde cualquier lugar. Por último, el parámetro final es el nombre de la comunidad mediante la cual accederá un “usuario”.

Ahora que ya tenemos el grupo seguro, tenemos que mapear el grupo seguro a un grupo local. Esto nos permite indicar que versiones se permitirán para un grupo determinado. Para configurar este mapeo se debe insertar la siguiente línea:

1
2
group grupo_local v1         sec_local
group grupo_local v2c        sec_local

Mediante estas línea, indicamos que el grupo seguro sec_local ahora se llamará grupo_local y que podrá ser accedido mediante la versión v1 del protocolo o la versión v2.

Ahora viene un punto muy importante que es el de configurar las vistas. Como ya hemos dicho más arriba, una vista únicamente es un elemento de información o un conjunto de información, los cuales son referenciados mediante un OID. Para poder escribir bien la siguiente línea y por tanto configurar nuestro servicio SNMP de una forma correcta, primero debemos hablar sobre como referencia una MIB y como están organizadas las mismas.

Organización e indexado de una MIB

SNMP está organizado en forma de árbol de modo que se establezca una relación jerárquica entre elementos. En la imagen de más abajo, se puede ver una representación de dicha jerarquía.

Como siempre, a mi me gusta buscar una solución que no involucre Internet (puede que esta filosofía os choque, pero tengo mis razones…). Si quieres obtener una representación en árbol, puedes utilizar el siguiente comando:

1
snmptranslate -Tp

Si observas la imagen, habrás podido notar que cada uno de los “nodos” (nodos en el sentido de la estructura de datos ‘árbol’), tiene asociado un número. Este número es el OID y se obtiene de la siguiente manera.

Si queremos obtener el OID de la mib-2 en primer lugar tenemos que pasar por el nodo raíz (.), después ir al grupo ISO (1), después ir al grupo internet (3.6.1), después a mgmt(2), y por último a mib-2 (1), por lo tanto la ruta completa será la concatenación de todos los elementos anteriores, es decir:

1
.1.3.6.1.2.1

Si quieres comprobarlo prueba a escribir el siguiente comando en tu terminal:

1
snmptranslate .1.3.6.1.2.1

Bien, ya sabemos referenciar de forma básica objetos de una MIB. Lo siguiente que tenemos que hacer es ver que objetos son los que nos interesan. Para ello tenemos dos maneras, en este caso y como ya os he metido mucha teoría intentaré enseñaros alguna herramienta más amigable (más tarde os enseñaré otras formas de obtener la misma información mediante consola). Bueno continúo, una herramienta mediante la que podemos obtener toda la información instanciable por una MIB es snmplink.

Mediante esta web podemos ver la descripción de cada uno de los objetos de las MIBS estandar. En la foto de más abajo se puede observar una captura de la herramienta.

Captura del sitio SNMPLink

Lo elementos más importante de esta captura son:

  • Textual OID: Representación textual del OID que nombramos anteriormente
  • Numerical OID: Representación numérica del OID siguiendo las normas anteriomente citadas.
  • Pestaña MIB: Esta pestaña se abre al seleccionar un elemento en la ventana Tree y seleccionar la opción rfc1213.
  • Descripción de la MIB: Contiene la descripción de la información, indexado y estado de cada uno de los objetos de una MIB. Este documento es lo que se aprueba en los RFC.

Configuración del servicio

Ahora que ya sabemos como está organizado el servicio SNMP y como indexar cada uno de los objetos de una MIB, vamos a configurar el archivo de configuración /etc/snmp/snmp.conf de una manera sencilla. Para configurar el servicio creo que lo mejor es que muestre el archivo de configuración y explique cada uno de los campos.

“Fichero de configuración /etc/snmp/snmpd.conf” (snmpd.conf) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
####
# Mapeado de la comunidad en grupo seguro
# localhost == 127.0.0.1 --> Mi ordenador
# default == 0.0.0.0 --> Todo el mundo
# 192.168.1.0/24 --> Red completa
# 192.168.1.1 --> Host individual

#       sec.name  source          community
com2sec sec_local   localhost       privada
com2sec sec_casa    192.168.1.0/24  casa
com2sec sec_elemento 192.168.1.1    elemento
com2sec sec_todos   default         public

####
# Mapeado de grupos locales en grupos SNMP
# v1 --> Versión 1
# v2c --> Versión 2

#               sec.model  sec.name
group grupo_local v1         sec_local
group grupo_local v2c        sec_local

group grupo_casa v1          sec_casa
group grupo_casa v2c         sec_casa

group grupo_todos v1         sec_todos
group grupo_todos v2c        sec_todos

####
# Creamos las vistas, estas vistas determinarán que pueden ver
# cada uno de los grupos que se asigne en la última parte
# se puede referenciar los OID tanto en textual como en numérico
# en mi caso lo haré númerico, al final te acostumbras.
# ¡IMPORTANTE! Se da derechos a partir de esa rama hasta la hoja, es decir
# el subarbol a partir del OID especificado

#           incl/excl subtree                              mask
view vista_todo    included  .1

view vista_mib included  .1.3.6.1.2.1

####
# Asignamos los derechos. En este caso tenemos la siguiente configuración:
# grupo_local (pueden acceder por versión v1 y v2 desde el mismo ordenador del servidor) tienen acceso de escritura a todo el árbol y de lectura a todo el árbol
# grupo_todos (pueden acceder por versión v1 y v2 desde cualquier red) no tienen derechos de escritura y sí los tienen a lecura en vista_mib
# grupo_casa (pueden acceder por versión v1 y v2 desde la red 192.168.1.0/24) tienen acceso de lectura a todo el árbol pero no tienen derecho de escritura 


#                context sec.model sec.level match  read     write  notif
access grupo_local ""      any       noauth    exact  vista_todo      vista_todo    none
access grupo_todos ""      any       noauth    exact  vista_mib  none   none
access grupo_casa ""      any       noauth    exact  vista_todo  none   none

En base a lo explicado anteriormente no debería haber ningún problema para entender este fichero, si no entendieras algo ¡comenta!.

Probando la configuración

Una vez que hemos configurado el servicio ahora podemos probar si todo funciona, para ello lo primero que tenemos que hacer es reiniciar el demonio de SNMP en el agente, esto lo puedes hacer de dos maneras dependiendo de tu sistema:

1
sudo systemctl restart snmpd
1
sudo service snmpd restart

Para saber si todo está bien configurado puede utilizar el comando siguiente (utiliza el que se adapte a tu sistema):

1
sudo systemctl status snmpd
1
sudo service snmpd status

Si el estado es “Running” todo va bien =).

Una vez reiniciado el servicio en el agente podemos empezar a realizar las pruebas. Para ello instala net-snmp en otro pc y prueba el siguiente comando:

1
snmpwalk -v1 -c public ip_del_agente

Este comando recorrerá todos los objetos a los que tengamos acceso desde la comunidad public. A continuación describo cada uno de los parámetros:

  • -v1: Accedemos desde la versión 1, SNMP tiene tres versiones aunque hoy en día las más utilizadas son la 1 y la 2 la 3 nos ofrece encriptación. Recuerda que cuando realizamos el mapeo de grupos seguros a grupos snmp, seleccionamos las versiones desde las cuales se puede acceder desde esta comunidad.
  • -c public: Elegimos la comunidad, en nuestro caso probamos la comunidad public, recuerda que podemos utilizar privada, casa, elemento, public cada una de ellas desde una red determinada (ver fichero de configuración)

Ahora vamos a probar si podemos obtener algún objeto desde la comunidad privada (solo deberíamos poder acceder desde el agente, es decir, desde el mismo pc que tiene el servicio corriendo).

1
snmpwalk -v1 -c privada ip_del_agente

Nos debería dar error, de lo contrario algo está mal configurado en nuestro fichero de configuración. Puedes hacer más pruebas con las diferentes comunidades. En siguientes tutoriales mostraremos como escribir en los objetos y navegar con ellos de una forma rápida. Además veremos herramientas gráficas que nos permiten abstraernos de este sin fin de números.

Nos vemos en el siguiente post.

Un saludo.

Comentarios

Copyright © 2015 José Antonio de la Torre las Heras .