SNMP – Simple Network Management Protocol
Hoy vamos a hablar un poco sobre que es, y para que podemos utilizar el Protocolo Simple de Administración de Red o SNMP. Se trata de un protocolo que va ayudar a los administradores de red a gestionar de una forma más eficiente las redes. Nos va a permitir administrar y monitorizar diferentes elementos que conforman nuestra arquitectura de red, como pueden ser Switches, Routers, Firewalls, Servidores…Técnicamente hablando la arquitectura propuesta por el protocolo consta de tres elementos:
- Dispositivos Administrados : Nodo que contiene un agente (Routers, Firewall…)
- Agentes : Software que reside en el dispositivo
- Sistema de administración de Red (NMS) : Software para las tareas de administración.
Para que nos entendamos un poco todos, imaginemos que tenemos un Router del cual nos interesa monitorizar aspectos como uso de CPU, Memoria, Estado de las interfaces…Para ello podemos hacer uso del protocolo SNMP.
.
Tenemos que activar el agente en el Router, y este enviara las variables que nos interesen a una aplicación que nosotros tengamos instalada, la cual ira procesando y mostrando esa información. Para enviar esos datagramas o pequeños mensajes se basa en UDP que es un protocolo sin conexión.
En el caso del SNMP no es necesaria la complejidad que aportaría TCP. El puerto por defecto que utiliza SNMP es el 161 y se trata de un protocolo que lógicamente ha ido evolucionando con el tiempo: SNMPv1, SNMPv2 y actualmente SNMPv3.
Como es lógico pensar, la última versión incorpora múltiples mejoras, sobre todo en temas relacionados con la seguridad. En versiones 2 por ejemplo los datos se presentan en texto claro con los peligros que ello conlleva (escuchas en la red..), cosa que en versión 3 podemos estar hablando de mejoras tales como autenticación y encriptación de la información. El problema en estos casos seria el de siempre: tendremos dispositivos que su Firmware no soporten versión 3.
Básicamente el protocolo SNMP nos va a permitir realizar 3 funciones:
- Recoger valores del dispositivo (GetRequest)
- Escribir valores en el dispositivo (SetRequest)
- Recoger eventos (Trap) que generen los agentes.
Podemos completar esto último, añadiendo las siguientes operaciones:
- GetRequest
- GetNextRequest
- GetResponse
- SetRequest
- Trap
Ahora os preguntareis: ¿ Como conseguimos preguntar a los dispositivos ?. Para ello debemos de definir comunidades, que serian como las password que nos van a indicar las diferentes operaciones que nos va a permitir realizar el dispositivo.
La siguiente pregunta que os podeis hacer podría ser: ¿ Sobre que podemos preguntar a un dispositivo ?. La respuesta esta en las siglas MIB Management Information Base, que la prodriamos definir como una base de datos con estructura de árbol, en la que están definidas todas las variables sobre las que podemos preguntar.
Muchos dispositivos suelen tener por defecto activadas las comunidades de public (que nos va a permitir consultar las variables) y private que nos permitirán alterar la configuración. Debemos tener mucho cuidado con ello, ya que estas comunidades son bien sabidas por muchos y pueden aportar información no deseada.
Si no se va a hacer uso del protocolo SNMP es mejor desactivarlo y en caso de ser necesario habrá que securizarlo todo lo posible, empezando por cambiar las comunidades que se presentan por defecto.
Ya me empiezo a enrollar un poquito pero es interesante conocer al menos algo en referencia a los protocolos para luego poder empezar a jugar con ellos.
Vamos a lo que puede resultar interesante para nosotros. Implementar todo esto en la práctica. Por centrarnos un poco lo vamos a hacer utilizando un Router. Por ejemplo si en nuestra red disponemos de Routers de la marca Zyxell, podríamos realizar una conexión remota por telnet o ssh y configurar el snmp de la siguiente manera:
Sys snmp get password_lectura
Sys snmp set password_escritura
Sys snmp trap community password
Sys snmp trushost ip_equipo_permitido_consultar_snmp
Sys display (ver los valores)
Sys snmp save (guardar los cambios)
Si por ejemplo nos encontramos ante un Router de la marca Cisco, podríamos realizar lo siguiente:Definimos una pequeña descripción, junto con una serie de datos de contacto (Este primera parte no seria necesaria, e incluso puede aportar informaron que en un momento dado no nos interesa que sea consultada).
Router(config)#snmp-server contact PediMave
Router(config)#snmp-server location poblacion
Router(config)#snmp-server chassis-id Marca-RouterP
Pasamos ahora a definir una comunidad con permisos de lectura, y a la misma le asignamos una lista de control de acceso que definiremos posteriormente, y en la que se diga que únicamente un determinado Host pueda realizar consultas a través del protocolo SNMP contra el dispositivo.
Router(config)#snmp-server community password ro 12
Ahora definimos la lista de control de acceso
Router(config)#access-list 12 permit host IP_HOST
Router(config)#access-list 12 deny any log
Como podéis ver no es muy complicado y puede aportar mucha información tanto a los Buenos como a los malos.¿ Que nos faltaría ahora por definir ?.
Podríamos instalarnos una aplicación Open Source como CACTI, la cual nos va a permitir recoger toda esa información y procesarla, consiguiendo por ejemplo tener graficas de uso de CPU, Memoria, Anchos de Banda…, como lo que vemos en la siguiente imagen.
Esto lo unimos con otra herramienta de monitorización como puede ser nagios, y las posibilidades en cuanto a funcionalidades se incrementan exponencialmente. Pero ya hablaremos de ello mas tarde. No adelantemos acontecimientos todavía.
A los que guste adentrarse en las entrañas de los protocolos, deferían de darse una vueltecilla por la RFC 1157.
Gracias por aguantar esta pequeña chapa, y hasta la próxima compañeros.