# Ejercicios con SNMP

# Introducción

## Objetivos:

- Instalar y utilizar los comando SNMP
- Explorar e identificar partes estandar o enterprise del arbol MIB
- Instalar MIB especificas de fabricantes y utilizarlas con comandos SNMP

## Nota:

- Los comandos precedidos por el signo de pesos “$”, deben ser ejecutados como un usuario general - y no como superusuario (root).
- Los comandos precedidos por el signo de número “#”, deben ser ejecutados por el superusuario (root).
- Si la línea de comandos termina con una barra invertida “", quiere decir que el comando continua en la próxima línea y todas líneas deben ser tratadas como un comando de sola línea.

# Instalación de herramientas de cliente (administrador)

Comience por instalar las herramientas de net-snmp en su servidor individual. Conéctese mediante ssh a hostX-campusY:

    $ sudo apt install snmp
    $ sudo apt install snmp-mibs-downloader

El segundo paquete (snmp-mibs-downloader) baja los MIBs estandares de IANA y de IETF que no estan incluidos por defecto.

Nota: Para que esto funciona tiene que habilitar el fuente “multiverse” en su configuracion de APT - hemos hecho esto para Ud para este taller.

Ahora tiene que editar el archivo `/etc/snmp/snmp.conf

    $ sudo editor /etc/snmp/snmp.conf

y cambiar esta linea:

    mibs :

… para que se vea así:

    # mibs :

Ahora, guarde el archivo y salga del editor.

Esta accion deshabilito la linea de mibs vacia que estaba indicando a las herramientas de SNMP de no cargar automaticamente los mibs en el directorio /usr/share/mibs/.

Ahora, en su directorio de inicio, haga un directorio `.snmp` con el archivo `snmp.conf` dentro de él, hágalo legible solo por usted y añádale las credenciales:

    $ cd
    $ mkdir .snmp
    $ chmod 700 .snmp/
    $ editor .snmp/snmp.conf

Adiciones las siguientes lineas al final:

    defVersion 3
    defSecurityLevel authNoPriv
    defSecurityName admin
    defAuthPassphrase NetManage
    defAuthType SHA
    defPrivType AES
    # Default community when using SNMP v2c
    defCommunity NetManage

Al crear este archivo de configuración, no tendrá que ingresar sus credenciales cada vez que use una de las utilidades de SNMP. De lo contrario, tendría que agregar todos estos valores en la línea de comando de esta manera:

(solo ejemplo, este comando no funciona todavia)

    snmpstatus -v3 -l authNoPriv -a SHA -u admin -A NetManage hostX-campusY

# Configuración de SNMP en el enrutador

Para este ejercicio, debe trabajar en conjunto como un grupo. Estará habilitando y configurando SNMP para que se ejecute en cada uno de los 4 dispositivos de red de su campus. Esto incluye:

    * bdr1-campusY
    * core1-campusY
    * dist1-b1-campusY
    * dist1-b2-campusY

Los comandos para habilitar ssh son los mismos en cada cuadro, así que divida el trabajo entre su miembro de grupo.

Ahora conéctese a los dispositivos de red de su campus y en cada uno haga lo siguiente:

    $ ssh campusY@DEVICE-campusY.ws.nsrc.org

    username: campusY
    password: <CLASS PASSWORD>

    DEVICE-campusY> enable
    Password: <CLASS PASSWORD>
    DEVICE-campusY# configure terminal                      (conf t)

Ahora es necesario agregar una lista de control de acceso (ACL) para acceso a SNMP. Luego iniciaremos el agente SNMP, asignaremos una “comunidad” de sólo lectura, así como un usuario y grupo SNMPv3 y le indicaremos al enrutador que nunca cambie los índices de interfaces al reiniciarse.

Para ello, haremos lo siguiente:

    DEVICE-campusY(config)# snmp-server community NetManage ro 99
    DEVICE-campusY(config)# snmp-server group ReadGroup v3 auth access 99
    DEVICE-campusY(config)# access-list 99 permit 100.68.Y.128 0.0.0.15
    DEVICE-campusY(config)# access-list 99 permit 100.64.0.0 0.0.3.255
    DEVICE-campusY(config)# snmp-server user admin ReadGroup v3 auth sha NetManage
    DEVICE-campusY(config)# snmp-server ifindex persist

Ahora salgamos del modo configuración y grabemos:

    DEVICE-campusY(config)# exit
    DEVICE-campusY# write memory                                    (wr mem)
    DEVICE-campusY# exit                                            (until you return to your pc)

Si tiene preguntas sobre qué restringe la declaración de la lista de acceso pregunte a sus instructores

# Comprobación de SNMP

Para verificar que su instalación de SNMP funciona, ejecute el comando ‘snmpstatus’ en cada uno de los siguientes nodos desde su maquina virtual:

    $ snmpstatus <IP_ADDRESS>

Donde <IP_ADDRESS> es cada uno de los siguientes:

    * Campus border router:                 100.68.Y.1
    * Campus core switch:                   100.68.Y.2
    * Building 1 distribution switch:       10.1.0.2
    * Building 2 distribution switch:       10.2.0.2

Note que se ha utilizado SNMPv3. No todos los dispositivos que implementan SNMP soportan la version 3. Intentelo de nuevo, adicionando “-v2c” como parametro El comando automaticamente utiliza la comunidad definida en el fichero snmp.conf y no las credenciales de la version 3. Pruebe “-v1”.

    $ snmpstatus -v2c <IP_ADDRESS>

y

    $ snmpstatus -v1 <IP_ADDRESS>

Qué pasa si intenta usando la comunidad incorrecta (ej. cambie “NetManage” por algo diferente) usando las opciones” -v2c -c NetWrong “?

    $ snmpstatus -v2c -c NetWrong <IP_ADDRESS>

# SNMP Walk y los OIDs

Ahora, utilizará el comando ‘snmpwalk’, parte de la suite SNMP, para listar las tablas asociadas con los OIDs más abajo, para cada dispositivo que probó más arriba:

    .1.3.6.1.2.1.2.2.1.2
    .1.3.6.1.2.1.31.1.1.1.18
    .1.3.6.1.4.1.9.9.13.1
    .1.3.6.1.2.1.25.2.3.1
    .1.3.6.1.2.1.25.4.2.1

Intentarás esto con dos formas del comando `snmpwalk`:

    $ snmpwalk  <IP_ADDRESS> <OID>

y

    $ snmpwalk -On <IP_ADDRESS> <OID>

… Donde <OID> es uno de los OIDS más arriba: .1.3.6…

… Donde puede ser su enrulado…

Nota: la opcion `-On` habilita salida numerica, no hara traduccion del OID <-> MIB.

Con estos OIDs:

1. Responden todos los dispositivos ?
2. Nota algo interesante en los OIDS de las respuestas ?

# Configuración de snmpd en su PC (hostX-campusY.ws.nsrc.org)

Para este ejercicio su grupo necesita verificar que el servicio SNMP está activo y respondiendo a solicitudes desde todas las máquinas de su grupo. Primero active el demonio snmpd en su máquina, luego pruebe si su máquina está respondiendo, y luego compruebe cada máquina de sus compañeros de grupo.

- Instalar el agente SNMP (demonio) en su PC.

    $ sudo apt install snmpd
    $ sudo apt install libsnmp-dev

- Configuración:

Haremos una copia de respaldo del archivo que viene con el paquete, y luego crearemos uno propio, (asegúrese de que mv “snmpd.conf” y not “snmp.conf”):

    $ cd /etc/snmp
    $ sudo mv snmpd.conf snmpd.conf.dist
    $ sudo editor snmpd.conf

Luego, copiar/pegar lo siguiente, (cambie hostX-campusY a su propio servidor y número de campus)

    #  Listen for connections on all interfaces (both IPv4 *and* IPv6)
    agentAddress udp:161,udp6:[::1]:161

    # For SNMPv2: Configure Read-Only community and restrict who can connect
    rocommunity NetManage 100.64.0.0/22
    rocommunity NetManage 100.68.Y.128/28
    rocommunity NetManage  127.0.0.1
    rocommunity6 NetManage 2001:db8:Y:1::/64
    rocommunity6 NetManage ::1

    # Information about this host
    sysLocation    NSRC Taller de Gestion de Redes
    sysContact     sysadm@hostX-campusY.ws.nsrc.org

    # Which OSI layers are active in this host
    # (Application + End-to-End layers)
    sysServices    72

    # Include proprietary dskTable MIB (in addition to hrStorageTable)
    includeAllDisks  10%

    # Include all *.conf files in a directory
    includeDir /etc/snmp/snmpd.conf.d

Ahora guarde el fichero y salga del editor.

Ahora, adicione el mismo usuario SNMPv3 en su computadora. Se necesita detener snmpd antes de adicionar el usuario y reinicarlo para aplicar los cambios y el nuevo usuario

    $ sudo systemctl stop snmpd
    $ sudo net-snmp-create-v3-user -a SHA -A NetManage admin
    $ sudo systemctl start snmpd

# Compruebe que está funcionando:

    $ snmpstatus localhost

Qué puede observar?

# Pruebe con sus vecinos

Compruebe que ahora puede ejecutar snmpstatus con cada uno de los servidores de su grupo (campus):

    $ snmpstatus host[1..6]-campusY.ws.nsrc.org

Por ejemplo, para el grupo 5, usted deberia verificar:

    * host1-campus5.ws.nsrc.org
    * host2-campus5.ws.nsrc.org
    * host3-campus5.ws.nsrc.org
    * host4-campus5.ws.nsrc.org
    * host5-campus5.ws.nsrc.org

y así sucesivamente.

# Configuración de snmpd en su servidor srv1-campusY.ws.nsrc.org

Es posible que desee instalar el daemon snmp en su servidor del campus en este momento. Si es así, selecciona a alguien de tu grupo para hacer esto. Si no, se configurará durante el ejercicio posterior.

# Agregar MIBs

Recuerde que cuando ejecutó:

    $ snmpwalk 100.68.Y.1 .1.3.6.1.4.1.9.9.13.1

Vio’ que el cliente SNMP (snmpwalk) no pudo interpretar todos los OIDS que venían en la respuesta?:

    SNMPv2-SMI::enterprises.9.9.92.1.1.1.1.1 = STRING: "Cisco"
    SNMPv2-SMI::enterprises.9.9.92.1.1.1.2.1 = STRING: "92D8PBYYIWNV8D4765QH3"
    SNMPv2-SMI::enterprises.9.9.92.1.1.1.3.1 = STRING: "IOSv"
    SNMPv2-SMI::enterprises.9.9.92.1.1.1.4.1 = STRING: "1.0"

Que’ es `9.9.92.1.1.1.4.1` ?

Para poder interpretar esta información, necesitamos instalar MIBs adicionales:

Utilizaremos las siguientes MIBs (no las descargue todavía!):

MIBS de Cisco

    https://raw.githubusercontent.com/cisco/cisco-mibs/f55dc443daff58dfc86a764047ded2248bb94e12/v2/CISCO-SMI.my
    https://raw.githubusercontent.com/cisco/cisco-mibs/f55dc443daff58dfc86a764047ded2248bb94e12/v2/CISCO-ENTITY-ASSET-MIB.my

Para hacerlo más fácil, tenemos una copia local en `http://www.ws.nsrc.org/mibs/`

Descargalos así:

    $ cd /usr/share/snmp/mibs
    $ sudo mkdir cisco
    $ cd cisco

    $ sudo wget http://www.ws.nsrc.org/downloads/mibs/CISCO-SMI.my
    $ sudo wget http://www.ws.nsrc.org/downloads/mibs/CISCO-ENTITY-ASSET-MIB.my

Ahora tenemos que decirle a las herramientas de snmp que tenemos los MIBS que deberia cargar. Edite el archivo /etc/snmp/snmp.conf y agrega las dos siguiente lineas:

    mibdirs +/usr/share/snmp/mibs/cisco
    mibs +CISCO-SMI:CISCO-ENTITY-ASSET-MIB

Grabe el archivo y salga.

Ahora, pruebe de nuevo (el ejemplo usa bdr1-campusY.ws.nsrc.org. pero usted puede igualmente utilizar el dispositivo que esta configurando)

    $ snmpwalk 100.68.Y.1 .1.3.6.1.4.1.9.9.92.1

Qué puede notar?

# SNMPwalk - el resto de MIB-II

Intente ejecutar snmpwalk en cualquiera de los nodos (enrutadores, switches, PCs) que no haya probado todavía, en la red 100.68.Y.X.

Note el tipo de información que obtiene.

(Para los switches de distribución de su edificio use 10.1.0.2 y 10.2.0.2)

    $ snmpwalk 100.68.Y.1 ifDescr
    $ snmpwalk 100.68.Y.1 ifAlias
    $ snmpwalk 100.68.Y.1 ifTable | less
    $ snmpwalk 100.68.Y.1 ifXTable | less
    $ snmpwalk 100.68.Y.1 ifOperStatus
    $ snmpwalk 100.68.Y.1 ifAdminStatus
    $ snmpwalk 100.68.Y.1 if

(Recuerda que con “less” apreta la barra del espacio por la proxima pagina, ‘b’ para ir atras una pagina y ‘q’ para salir)

Puede ver la diferencia entre `ifTable` y `ifXTable`?

Cual puede ser la diferencia entre ‘ifOperStatus’ y ‘ifAdminStatus’ ? Puede imaginar en qué escenario esto sería útil?

1. Más entretenimiento con las MIBs

- Use SNMP para examinar lo siguiente:

1. los procesos activos en un servidor vecino (hrSWRun)
2. el espacio de disco disponible en un servidor vecino (hrStorage)
3. las interfaces en un servidor vecino (ifIndex, ifDescr)

Puede usar nombres cortos para “caminar” estas tablas?

- Experimente con el comando “snmptranslate”, ejemplo:

    $ snmptranslate .1.3.6.1.4.1.9.9.92.1

- Pruebe con otros varios OIDs