Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Protocolo SNMP
Simple Network Management Protocol
Equipo docente:
Fernando Lorge (florge@unlu.edu.ar)
Santiago Ricci (sricci@unlu.edu.ar)
Alejandro Iglesias (aaiglesias@unlu.edu.ar)
Mauro Meloni (maurom@unlu.edu.ar)
- 2019 -
Estándares
●
Facilita el intercambio de información de administración
entre dispositivos de red.
●
SNMP permite crear herramientas de gestión que:
●
Informen del funcionamiento de la red o subred
●
Detecten fallas y funcionamientos incorrectos
●
Permitan actuar sobre dispositivos de la red (por ejemplo,
modificando su configuración, interfaces activas, etc.)
Arquitectura
agent data
Los
managing “Managed devices”
entity data managed device
contienen
agent data “Managed objects”
network
management
managed device
cuyos datos
protocol
son recolectados
dentro de una
agent data
“Management
agent data managed device Information Base”
managed device usando un
“Network Management
Protocol”
Arquitectura
●
MIB: Management Información Base.
- Colección de objetos identificados para la gestión, sus tipos y
relaciones en una entidad gestionada.
●
SMI: Structure of Management Information.
- Sintaxis usada para especificar una MIB (SMIv2). Define las reglas
generales para nombrar los objetos, definir sus tipos y codificar sus
valores.
●
SNMP.
- Protocolo para gestión. Sintaxis, semántica y temporización.
Permite leer (y modificar) los valores de las variables de los objetos
gestionados.
●
Seguridad, capacidades de administración
- Mayormente en la versión 3
Evolución
SNMPv1
Diseñado a mediados de los 80.
●
Idea: Lograr una solución temporal hasta la llegada de
protocolos de gestión mejores y más completos.
●
Basado en el intercambio de información de red a través
de mensajes (get y set), en texto plano.
●
Agentes y entidad administradora asociados a un grupo
denminado “comunidad”
●
Read-Only, Read-and-write, Trap
●
No estaba pensado para poder gestionar
muchas redes (ni muy grandes)
Evolución
SNMPv2
Diseñado en 1993 y revisado en 1996 (SNMPv2c)
●
Incorpora:
●
Mensajes get-bulk-request (múltiples variables)
●
Mayor detalle en la definición de las variables.
●
Estructuras para facilitar el manejo de los datos.
SNMPv3
Año 2002 - Internet Standard
●
Énfasis en los mecanismos de seguridad.
●
Integridad del Mensaje: Asegura que el paquete no haya
sido alterado durante la transmisión.
●
Autenticación: Asegura la identidad del emisor del
mensaje. (Username, HMAC-MD5 y HMAC-SHA.)
●
Cifrado: Asegurar que el contenido del mensaje sólo sea
visible para las partes autorizadas.
(DES, 3DES, AES128, AES192, AES256)
Componentes
Estructura de la MIB
●
La ISO define una estructura jerárquica (niveles), donde se
identifican los objetos.
●
La MIB y los objetos contenidos en estas son situados en este
árbol siguiendo las normas determinadas.
●
Cada nivel, subnivel y objeto son representados con un nombre y
un número dentro del árbol (OID).
●
Se puede hacer referencia a un objeto empleando una secuencia
de nombres o de números.
●
Esta secuencia de nombres o números contiene la ruta que se
sigue desde la “raiz” del árbol hasta la “hoja”.
●
La hoja hace referencia al objeto que es
la última entidad posible.
Jerarquía
OIDs
●
Siguiendo la secuencia desde la raíz se localiza e identifica a
cada objeto. Dos formas de expresar un OID:
Composición textual de la localización.
OID del objeto (numéricamente).
Ejemplo: para hacer referencia al objeto sysName
MIB-II
RFC 1213
Management Information Base for Network Management
of TCP/IP-based internets: MIB-II
Grupos:
●
System { mib-2 1 }
●
Interfaces { mib-2 2 }
●
Address Translation (deprecated) { mib-2 3 }
●
IP { mib-2 4 }
●
ICMP { mib-2 5 }
●
TCP { mib-2 6 }
●
UDP { mib-2 7 }
●
EGP { mib-2 8 }
●
Transmission { mib-2 10 }
●
SNMP { mib-2 11 }
MIBs
Definición de objetos mediante SMIv2:
<name> OBJECT-TYPE
SYNTAX <datatype>
UnitsParts (Opcional)
MAX-ACCESS <not-accessible, accessible-for-notify, read-only,
read-write, o read-create>
STATUS <current, obsolete, deprecated>
DESCRIPTION <Texto que describe el objeto>
ReferPart (Opcional)
IndexPart (Opcional)
DefValPart (Opcional)
::= { <OID único del objeto> }
ipDefaultTTL OBJECT-TYPE
●
Definir el tipo de valor
SYNTAX INTEGER
ACCESS read-write
●
Control de acceso
STATUS mandatory
DESCRIPTION
●
Tipo de respuesta
Descripción
"The default value inserted into the Time-To-Live
●
field of the IP header of datagrams originated at
this entity, whenever a TTL value is not supplied
by the transport layer protocol."
::= { ip 2 }
ipInReceives OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of input datagrams received from
interfaces, including those received in error."
::= { ip 3 }
Árbol de MIB
Ejemplo
MIBs
Ejemplo
udpTable OBJECT-TYPE
SYNTAX SEQUENCE OF UdpEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"A table containing UDP listener information."
::= { udp 5 }
udpEntry OBJECT-TYPE
SYNTAX UdpEntry udpLocalAddress OBJECT-TYPE
ACCESS not-accessible SYNTAX IpAddress
STATUS mandatory ACCESS read-only
DESCRIPTION STATUS mandatory
"Information about a particular current UDP DESCRIPTION
listener." "The local IP address for this UDP listener. In
INDEX { udpLocalAddress, udpLocalPort } the case of a UDP listener which is willing to
::= { udpTable 1 } accept datagrams for any IP interface associated
with the node, the value 0.0.0.0 is used."
UdpEntry ::= ::= { udpEntry 1 }
SEQUENCE {
udpLocalAddress udpLocalPort OBJECT-TYPE
IpAddress, SYNTAX INTEGER (0..65535)
udpLocalPort ACCESS read-only
INTEGER (0..65535) STATUS mandatory
} DESCRIPTION
"The local port number for this UDP listener."
::= { udpEntry 2 }
Ejemplo Snmpbulkwalk:
●
sysDescr {system1} Descripción del sistema (hardware, SO, version)
●
sysObjectID {system2} Identificación del objeto provista por el "vendor"
●
sysUpTime {system3} Tiempo transcurrido desde el arranque
●
sysContact {system4} Identificación de la persona de contacto
●
sysName {system5} Nombre asignado al nodo (por ej. nombre dns)
●
sysLocation {system6} Ubicación física del nodo
●
sysServices {system7} Servicios provistos por el nodo (en que capa ofrece
servicios)
MIB-II
RFC 1213
Interfaces: { mib-2 2 }
●
ifNumber {interfaces 1} Cantidad de interfaces de red en el sistema
●
ifTable {interfaces 2} Contiene información de las interfaces de red
●
ifDescr {ifEntry 2} Descripción de la interfaz
●
ifType {ifEntry 3} Tipo de interfaz (enlace-fisico)
●
ifMtu {ifEntry 4} Tamaño máximo de datagrama que se puede enviar por la
interfaz
●
ifSpeed {ifEntry 5} Estimación de la tasa de transferencia actual
●
ifPhysAddress {ifEntry 6} Dirección física (por ej MAC en ethernet)
●
ifAdminStatus {ifEntry 7} Estado deseado de la interfaz (up - down - testing)
●
ifOperStatus {ifEntry 8} Estado actual de la interfaz (up - down - testing)
●
ifLastChange {ifEntry 9} Momento del último cambio de estado
●
ifInOctets {ifEntry 10} Número total de bytes recividos
●
...
●
ifOutOctets {ifEntry 16} Número total de bytes enviados
●
ifOutQlen {ifEntry 21} Tamaño de la cola de paquetes de salida
MIB-II
RFC 1213
Ip: { mib-2 4 }
(Implementación obligatoria)
●
ipForwarding {ip 1} Indica si la entidad actúa como ruteador
●
ipDeafultTTL {ip 2} Valor por omisión para el campo Time To Live
●
ipInReceives {ip 3} Número total de paquetes recibidos
●
ipInHdrErrors {ip 4} Número de paquetes descartados (por error en cheksum, ttl
excedido, etc.)
●
ipInAddrErrors {ip 5} Número de paquetes descartados (por dirección destino)
●
ipForwDatagrams {ip 6} Número de paquetes cuya ip destino no es el
dispositivo
●
...
●
ipFragOKs {ip 17} Número de paquetes fragmentados con éxito
●
ipRouteTable {ip 21} Tabla de rutas
●
ipipNetToMediaTable {ip 22} Tabla de traducción de
direcciones IP a direcciones físicas
MIB-II
RFC 1213
ICMP: { mib-2 5 }
(Implementación obligatoria)
●
icmpInMsgs {icmp 1} Número total de mensajes ICMP recividos
●
icmpInErrors {icmp 2} Número total de mensajes ICMP errónes recibidos
●
icmpInDestUnreachs {icmp 3} Número total de mensajes ICMP del tipo destino
inalcazable recibidos
●
icmpInInTimeExcds {icmp 4} Número total de mensajes ICMP del tipo tiempo
excedido recibidos
●
...
●
icmpInEchos {icmp 8} Número total de mensajes ICMP del tipo echo request
recibidos
●
icmpOutDestUnreachs {icmp 16} Número total de mensajes ICMP del tipo
destino inalcazable enviados
●
icmpOutEchoReps {icmp 22} Número total de mensajes ICMP
del tipo echo reply enviados
MIB-II
RFC 1213
TCP: { mib-2 6 }
(Implementación obligatoria para todos los sistemas que implementen TCP)
●
tcpRtoAlgorithm {tcp 1} Algoritmo usado para calcular el valor de timeout para
retransmisión
●
tcpMaxConn {tcp 4} Número máximo de conexiones TCP admitidas
●
tcpActiveOpens {tcp 5} Número de conexiones TCP en estado SYN-SENT
●
tcpCurrEstab {tcp 5} Número de conexiones TCP en estado ESTABLISHED o
CLOSE-WAIT
●
tcpInSegs {tcp 10} Número de segmentos recibidos
●
tcpOutSegs {tcp 11} Número de segmentos enviados
●
tcpRetranSegs {tcp 12} Número de segmentos retransmitidos
●
tcpConnTable {tcp 13} Tabla con información acerca de las conexiones TCP
●
tcpInErrors {tcp 14} Número de segmentos recibidos con error
●
tcpOutTsts {tcp 15} Número de segmentos enviados con el flag RST
MIB-II
RFC 1213
UDP: { mib-2 7 }
(Implementación obligatoria para todos los sistemas que implementen UDP)
●
udpInDatagrams {udp 1} Número total de datagramas enviados a usuarios UDP
●
udpNoPorts {udp 2} Número total de datagramas recibidos para los que no había
aplicación en el puerto destino
●
udpInErrors {udp 3} Número total de datagramas recibidos que no se entregaron
por razón distinta a la falta de aplicación en el puerto destino
●
udpOutDatagrams {udp 4} Número total de datagramas enviados por la
entitdad
●
udpTable {udp 5} Tabla conteniendo información de puertos en escucha
MIB-II
RFC 1213
SNMP: { mib-2 11 }
(Implementación obligatoria para todos los sistemas que implementen una entidad SNMP)
●
snmpInPkts {snmp 1} Número total de mensajes snmp entregados a la entidad
snmp por la capa de transporte
●
snmpOutPkts {snmp 2} Número total de mensajes snmp entregados por la
entidad snmp al servicio de transporte
●
snmpInBadVersions {snmp 3} Número total de mensajes snmp de versión no
soportada
●
snmpInBadCommunityNames {snmp 4} Número total de mensajes snmp con
nombre de comunidad no conocido
●
snmpInGetRequests {snmp 15} Número total de mensajes snmp GET-REQUEST
procesados
●
snmpInGetNets {snmp 16} Número total de mensajes snmp GET-NEXT
procesados
●
snmpInTraps {snmp 17} Número total TRAPS procesados
●
snmpoUTTraps {snmp 17} Número total TRAPS generados
MIB-Ejemplo Cisco
Ejemplo Fabricante – Cisco MIBs
MIB Locator
https://mibs.cloudapps.cisco.com/ITDIT/MIBS/MainServlet
Orden de Carga:
MIB-Ejemplo Cisco
Ejemplo Fabricante – Cisco MIBs
Modos de Operación
managing managing
entity entity
request
trap msg
response
Mensajes SNMP
Operación Función
get-request Solicita el valor de una variable específica
get-next-request Solicita el valor de una variable sin especificar su nombre.
Utilizada para navegar un subárbol en órden lexicográfico
set-request Solicita la modificación del valor de una variable
Tipos de PDUs
Cifrado si se aplica
Formato igual a SNMPv2
Arquitectura SNMPv3
Entidad SNMPv3 y sus componentes
+-------------------------------------------------------------------+
| SNMP entity |
| |
| +-------------------------------------------------------------+ |
| | SNMP engine (identified by snmpEngineID) | |
| | | |
| | +------------+ +------------+ +-----------+ +-----------+ | |
| | | | | | | | | | | |
| | | Dispatcher | | Message | | Security | | Access | | |
| | | | | Processing | | Subsystem | | Control | | |
| | | | | Subsystem | | | | Subsystem | | |
| | | | | | | | | | | |
| | +------------+ +------------+ +-----------+ +-----------+ | |
| | | |
| +-------------------------------------------------------------+ |
| |
| +-------------------------------------------------------------+ |
| | Application(s) | |
| | | |
| | +-------------+ +--------------+ +--------------+ | |
| | | Command | | Notification | | Proxy | | |
| | | Generator | | Receiver | | Forwarder | | |
| | +-------------+ +--------------+ +--------------+ | |
| | | |
| | +-------------+ +--------------+ +--------------+ | |
| | | Command | | Notification | | Other | | |
| | | Responder | | Originator | | | | |
| | +-------------+ +--------------+ +--------------+ | |
| | | |
| +-------------------------------------------------------------+ |
| |
+-------------------------------------------------------------------+
Arquitectura SNMPv3
(traditional SNMP manager)
+-------------------------------------------------------------------+
| +--------------+ +--------------+ +--------------+ SNMP entity |
| | NOTIFICATION | | NOTIFICATION | | COMMAND | |
| | ORIGINATOR | | RECEIVER | | GENERATOR | |
| | applications | | applications | | applications | |
| +--------------+ +--------------+ +--------------+ |
| ^ ^ ^ |
| | | | |
| v v v |
| +-------+--------+-----------------+ |
| ^ |
| | +---------------------+ +----------------+ |
| | | Message Processing | | Security | |
| Dispatcher v | Subsystem | | Subsystem | |
| +-------------------+ | +------------+ | | | |
| | PDU Dispatcher | | +->| v1MP * |<--->| +------------+ | |
| | | | | +------------+ | | | Other | | |
| | | | | +------------+ | | | Security | | |
| | | | +->| v2cMP * |<--->| | Model | | |
| | Message | | | +------------+ | | +------------+ | |
| | Dispatcher <--------->+ | | | |
| | | | | +------------+ | | +------------+ | |
| | | | +->| v3MP * |<--->| | User-based | | |
| | Transport | | | +------------+ | | | Security | | |
| | Mapping | | | +------------+ | | | Model | | |
| | (e.g., RFC 3417) | | +->| otherMP * |<--->| +------------+ | |
| +-------------------+ | +------------+ | | | |
| ^ +---------------------+ +----------------+ |
| | |
| v |
+-------------------------------------------------------------------+
+-----+ +-----+ +-------+
| UDP | | IPX | . . . | other |
+-----+ +-----+ +-------+
^ ^ ^
| | | * One or more models may be present.
v v v
+------------------------------+
| Network |
+------------------------------+
Arquitectura SNMPv3
+------------------------------+
| Network |
+------------------------------+
^ ^ ^
v v v
+-----+ +-----+ +-------+
| UDP | | IPX | . . . | other |
+-----+ +-----+ +-------+ (traditional SNMP agent)
+-------------------------------------------------------------------+
| ^ |
| | +---------------------+ +----------------+ |
| | | Message Processing | | Security | |
| Dispatcher v | Subsystem | | Subsystem | |
| +-------------------+ | +------------+ | | | |
| | Transport | | +->| v1MP * |<--->| +------------+ | |
| | Mapping | | | +------------+ | | | Other | | |
| | (e.g., RFC 3417) | | | +------------+ | | | Security | | |
| | | | +->| v2cMP * |<--->| | Model | | |
| | Message | | | +------------+ | | +------------+ | |
| | Dispatcher <--------->| +------------+ | | +------------+ | |
| | | | +->| v3MP * |<--->| | User-based | | |
| | | | | +------------+ | | | Security | | |
| | PDU Dispatcher | | | +------------+ | | | Model | | |
| +-------------------+ | +->| otherMP * |<--->| +------------+ | |
| ^ | +------------+ | | | |
| | +---------------------+ +----------------+ |
| v |
| +-------+-------------------------+---------------+ |
| ^ ^ ^ |
| v v v |
| +-------------+ +---------+ +--------------+ +-------------+ |
| | COMMAND | | ACCESS | | NOTIFICATION | | PROXY | |
| | RESPONDER |<->| CONTROL |<->| ORIGINATOR | | FORWARDER | |
| | application | | | | applications | | application | |
| +-------------+ +---------+ +--------------+ +-------------+ |
| ^ ^ |
| | | |
| v v |
| +----------------------------------------------+ |
| | MIB instrumentation | SNMP entity |
+-------------------------------------------------------------------+
Arquitectura SNMPv3
+------------------------------+
| Network |
+------------------------------+
^ ^ ^
+-------------------------------------------------------------------+
| +--------------------------------------------------+ |
| | Transport Subsystem | |
| | +-----+ +-----+ +-----+ +-----+ +-------+ | |
| | | UDP | | TCP | | SSH | | TLS | . . . | other | | |
| | +-----+ +-----+ +-----+ +-----+ +-------+ | |
| +--------------------------------------------------+ |
| ^ |
| Dispatcher v |
| +-------------------+ +---------------------+ +----------------+ |
| | Transport | | Message Processing | | Security | |
| | Dispatch | | Subsystem | | Subsystem | |
| | | | +------------+ | | +------------+ | |
| | | | +->| v1MP |<--->| | USM | | |
| | | | | +------------+ | | +------------+ | |
Arquitectura SMNPv3 | |
| |
| | | +------------+ | | +------------+ | |
| | +->| v2cMP |<--->| | Transport | | |
RFC 5590-5591 | | Message | | | +------------+ | | | Security | | |
| | Dispatch <--------->| +------------+ | | | Model | | |
| | | | +->| v3MP |<--->| +------------+ | |
| | | | | +------------+ | | +------------+ | |
| | PDU Dispatch | | | +------------+ | | | Other | | |
| +-------------------+ | +->| otherMP |<--->| | Model(s) | | |
| ^ | +------------+ | | +------------+ | |
| | +---------------------+ +----------------+ |
| v |
| +-------+-------------------------+---------------+ |
| ^ ^ ^ |
| v v v |
| +-------------+ +---------+ +--------------+ +-------------+ |
| | COMMAND | | ACCESS | | NOTIFICATION | | PROXY | |
| | RESPONDER |<->| CONTROL |<->| ORIGINATOR | | FORWARDER | |
| | Application | | | | Applications | | Application | |
| +-------------+ +---------+ +--------------+ +-------------+ |
| ^ ^ |
| v v |
| +----------------------------------------------+ |
| | MIB instrumentation | SNMP entity |
+-------------------------------------------------------------------+
Códigos del Protocolo
Ejemplos
●
Se “cae” una interfaz
●
Se estropea el ventilador de un router
●
La carga de procesos excede un límite
●
Se llena una partición de disco
●
Un UPS cambia de estado
●
Intento de acceso no autorizado
●
...
RMON
Remote Monitoring
Define una MIB de monitorización remota ampliando
su funcionalidad.
• Objetivos:
- Operación off-line
- Detección y notificación de problemas (Monitoreo preventivo)
- Datos de valor añadido
- Gestores múltiples
Bibliografía:
Essential SNMP (2da Ed.), Douglas R. Mauro and Kevin J. Schmidt. O’Reilly Media, 2005
The Illustrated Network: How TCP/IP Works in a Modern Network, Chapter 24. Walter
Goralski. Morgan Kaufmann, 2008
Próxima: Laboratorio