El Protocolo simple de administración de redes ( SNMP ) es un protocolo estándar de Internet para recopilar y organizar información sobre dispositivos administrados en redes IP y para modificar dicha información para cambiar el comportamiento del dispositivo. Los dispositivos que normalmente admiten SNMP incluyen módems de cable , enrutadores , conmutadores de red , servidores, estaciones de trabajo, impresoras y más. [1]
El SNMP se utiliza ampliamente en la gestión de redes para la monitorización de redes . El SNMP expone datos de gestión en forma de variables en los sistemas gestionados organizados en una base de información de gestión (MIB), que describe el estado y la configuración del sistema. Estas variables pueden ser consultadas de forma remota (y, en algunas circunstancias, manipuladas) por las aplicaciones de gestión.
Se han desarrollado e implementado tres versiones importantes de SNMP. SNMPv1 es la versión original del protocolo. Las versiones más recientes, SNMPv2c y SNMPv3, presentan mejoras en el rendimiento, la flexibilidad y la seguridad.
SNMP es un componente del conjunto de protocolos de Internet según lo define el Grupo de trabajo de ingeniería de Internet (IETF). Consiste en un conjunto de estándares para la gestión de redes, que incluye un protocolo de capa de aplicación , un esquema de base de datos y un conjunto de objetos de datos . [2]
En los usos típicos de SNMP, una o más computadoras administrativas llamadas administradores tienen la tarea de monitorear o administrar un grupo de hosts o dispositivos en una red de computadoras . Cada sistema administrado ejecuta un componente de software llamado agente que informa información a través de SNMP al administrador.
Una red administrada por SNMP consta de tres componentes clave:
Un dispositivo administrado es un nodo de red que implementa una interfaz SNMP que permite el acceso unidireccional (solo lectura) o bidireccional (lectura y escritura) a información específica del nodo. Los dispositivos administrados intercambian información específica del nodo con los NMS. A veces llamados elementos de red, los dispositivos administrados pueden ser cualquier tipo de dispositivo, incluidos, entre otros, enrutadores , servidores de acceso , conmutadores , módems de cable , puentes , concentradores , teléfonos IP , cámaras de video IP , hosts de computadora e impresoras .
Un agente es un módulo de software de administración de red que reside en un dispositivo administrado. Un agente tiene conocimiento local de la información de administración y traduce esa información hacia o desde un formato específico de SNMP.
Una estación de administración de red ejecuta aplicaciones que monitorean y controlan los dispositivos administrados. Las NMS proporcionan la mayor parte de los recursos de procesamiento y memoria necesarios para la administración de la red. En cualquier red administrada pueden existir una o más NMS.
Los agentes SNMP exponen los datos de gestión de los sistemas gestionados como variables. El protocolo también permite realizar tareas de gestión activa, como cambios de configuración, mediante la modificación remota de estas variables. Las variables a las que se puede acceder mediante SNMP están organizadas en jerarquías. SNMP en sí no define qué variables debe ofrecer un sistema gestionado. En cambio, SNMP utiliza un diseño extensible que permite a las aplicaciones definir sus propias jerarquías. Estas jerarquías se describen como una base de información de gestión (MIB). Las MIB describen la estructura de los datos de gestión de un subsistema de dispositivo; utilizan un espacio de nombres jerárquico que contiene identificadores de objetos (OID). Cada OID identifica una variable que se puede leer o configurar mediante SNMP. Las MIB utilizan la notación definida por Structure of Management Information Version 2.0 (SMIv2, RFC 2578), un subconjunto de ASN.1 .
SNMP opera en la capa de aplicación del conjunto de protocolos de Internet . Todos los mensajes SNMP se transportan a través del Protocolo de datagramas de usuario (UDP). El agente SNMP recibe solicitudes en el puerto UDP 161. El administrador puede enviar solicitudes desde cualquier puerto de origen disponible al puerto 161 en el agente. La respuesta del agente se envía de vuelta al puerto de origen en el administrador. El administrador recibe notificaciones ( Traps e InformRequests ) en el puerto 162. El agente puede generar notificaciones desde cualquier puerto disponible. Cuando se utiliza con Seguridad de la capa de transporte o Seguridad de la capa de transporte de datagramas , las solicitudes se reciben en el puerto 10161 y las notificaciones se envían al puerto 10162. [3]
SNMPv1 especifica cinco unidades de datos de protocolo (PDU) principales. En SNMPv2 se agregaron otras dos PDU, GetBulkRequest e InformRequest , y en SNMPv3 se agregó la PDU de informes . Todas las PDU de SNMP se construyen de la siguiente manera:
Los siete tipos de PDU SNMP identificados por el campo de tipo PDU son los siguientes:
RFC 1157 especifica que una implementación SNMP debe aceptar un mensaje de al menos 484 bytes de longitud. En la práctica, las implementaciones SNMP aceptan mensajes más largos. [8] : 1870 Si se implementa correctamente, un mensaje SNMP se descarta si la decodificación del mensaje falla y, por lo tanto, las solicitudes SNMP mal formadas se ignoran. Una solicitud SNMP decodificada correctamente se autentica luego utilizando la cadena de comunidad. Si la autenticación falla, se genera una trampa que indica un error de autenticación y el mensaje se descarta. [8] : 1871
SNMPv1 y SNMPv2c utilizan comunidades para establecer la confianza entre los administradores y los agentes. La mayoría de los agentes admiten tres nombres de comunidad, uno para cada uno de los modos de solo lectura, lectura y escritura y trap. Estas tres cadenas de comunidad controlan diferentes tipos de actividades. La cadena de comunidad de solo lectura se aplica a las solicitudes de obtención . La cadena de comunidad de lectura y escritura se aplica a las solicitudes de establecimiento . La cadena de comunidad de trap se aplica a la recepción de traps . SNMPv3 también utiliza cadenas de comunidad, pero permite la autenticación y la comunicación seguras entre el administrador y el agente de SNMP. [9]
En la práctica, las implementaciones de SNMP suelen admitir múltiples versiones: normalmente SNMPv1, SNMPv2c y SNMPv3. [10] [11]
La versión 1 de SNMP (SNMPv1) es la implementación inicial del protocolo SNMP. El diseño de SNMPv1 fue realizado en la década de 1980 por un grupo de colaboradores que consideraban que el esfuerzo patrocinado oficialmente por OSI/IETF/NSF (National Science Foundation) (HEMS/CMIS/CMIP) no era implementable en las plataformas informáticas de la época, y que además era potencialmente inviable. SNMP se aprobó con la creencia de que era un protocolo provisional necesario para dar pasos hacia la implementación a gran escala de Internet y su comercialización.
La primera solicitud de comentarios (RFC) para SNMP, ahora conocida como SNMPv1, apareció en 1988:
En 1990, estos documentos fueron reemplazados por:
En 1991, el RFC 1156 (MIB-1) fue reemplazado por el más utilizado:
SNMPv1 se utiliza ampliamente y es el protocolo de gestión de red de facto en la comunidad de Internet. [12]
SNMPv1 puede ser transportado por protocolos de capa de transporte como el Protocolo de datagramas de usuario (UDP), el Servicio de red en modo sin conexión OSI (CLNS), el Protocolo de entrega de datagramas AppleTalk (DDP) y el Intercambio de paquetes entre redes de Novell (IPX).
La versión 1 ha sido criticada por su poca seguridad. [13] De hecho, la especificación permite que se utilice autenticación personalizada, pero las implementaciones ampliamente utilizadas "sólo admiten un servicio de autenticación trivial que identifica todos los mensajes SNMP como mensajes SNMP auténticos". [14] Por lo tanto, la seguridad de los mensajes depende de la seguridad de los canales por los que se envían. Por ejemplo, una organización puede considerar que su red interna es lo suficientemente segura como para que no sea necesario ningún cifrado para sus mensajes SNMP. En tales casos, el nombre de la comunidad , que se transmite en texto sin formato , tiende a verse como una contraseña de facto, a pesar de la especificación original.
SNMPv2, definido por RFC 1441 y RFC 1452, revisa la versión 1 e incluye mejoras en las áreas de rendimiento, seguridad y comunicaciones entre administradores. Introdujo GetBulkRequest , una alternativa a GetNextRequests iterativos para recuperar grandes cantidades de datos de administración en una sola solicitud. El nuevo sistema de seguridad basado en partes introducido en SNMPv2, visto por muchos como demasiado complejo, no fue ampliamente adoptado. [13] Esta versión de SNMP alcanzó el nivel de madurez del Estándar Propuesto, pero las versiones posteriores lo consideraron obsoleto. [15]
El Protocolo de administración de red simple basado en la comunidad versión 2 , o SNMPv2c , se define en RFC 1901– RFC 1908. SNMPv2c comprende SNMPv2 sin el nuevo y controvertido modelo de seguridad SNMP v2, utilizando en su lugar el esquema de seguridad simple basado en la comunidad de SNMPv1. Esta versión es uno de los relativamente pocos estándares que cumplen con el nivel de madurez del borrador del estándar de la IETF y fue ampliamente considerado el estándar SNMPv2 de facto . [15] Más tarde se reformuló como parte de SNMPv3. [16]
El Protocolo de administración de red simple basado en el usuario versión 2 , o SNMPv2u , se define en RFC 1909– RFC 1910. Se trata de un compromiso que intenta ofrecer mayor seguridad que SNMPv1, pero sin incurrir en la alta complejidad de SNMPv2. Una variante de esto se comercializó como SNMP v2* , y el mecanismo finalmente se adoptó como uno de los dos marcos de seguridad en SNMP v3. [17]
La versión 2 de SNMP introduce la opción de contadores de datos de 64 bits. La versión 1 fue diseñada únicamente con contadores de 32 bits, que pueden almacenar valores enteros desde cero hasta 4,29 mil millones (precisamente4 294 967 295 ). Un contador de la versión 1 de 32 bits no puede almacenar la velocidad máxima de una interfaz de 10 gigabits o mayor, expresada en bits por segundo. De manera similar, un contador de 32 bits que realiza un seguimiento de las estadísticas de una interfaz de 10 gigabits o mayor puede volver a cero en menos de un minuto, lo que puede ser un intervalo de tiempo más corto que el que se tarda en sondear un contador para leer su estado actual. Esto daría como resultado datos perdidos o no válidos debido a la renovación de valores no detectados y la corrupción de los datos de seguimiento de tendencias.
El contador de la versión 2 de 64 bits puede almacenar valores desde cero hasta 18,4 trillones (precisamente 18 446 744 073 709 551 615), por lo que actualmente es poco probable que experimente una renovación del contador entre eventos de sondeo. Por ejemplo, se prevé que Ethernet de 1,6 terabits esté disponible en 2025. Un contador de 64 bits que se incremente a una velocidad de 1,6 billones de bits por segundo podría retener información para una interfaz de este tipo sin renovarse durante 133 días.
SNMPv2c es incompatible con SNMPv1 en dos áreas clave: formatos de mensajes y operaciones de protocolo. Los mensajes SNMPv2c utilizan formatos de encabezado y unidad de datos de protocolo (PDU) diferentes a los de los mensajes SNMPv1. SNMPv2c también utiliza dos operaciones de protocolo que no están especificadas en SNMPv1. Para superar la incompatibilidad, RFC 3584 define dos estrategias de coexistencia SNMPv1/v2c: agentes proxy y sistemas de administración de red bilingües.
Un agente SNMPv2 puede actuar como agente proxy en nombre de dispositivos administrados por SNMPv1. Cuando un NMS SNMPv2 emite un comando destinado a un agente SNMPv1, lo envía al agente proxy SNMPv2 en su lugar. El agente proxy reenvía los mensajes Get
, GetNext
y Set
al agente SNMPv1 sin cambios. El agente proxy convierte los mensajes GetBulk en GetNext
mensajes y luego los reenvía al agente SNMPv1. Además, el agente proxy recibe y asigna mensajes de trap SNMPv1 a mensajes de trap SNMPv2 y luego los reenvía al NMS.
Los sistemas de administración de red SNMPv2 bilingües admiten tanto SNMPv1 como SNMPv2. Para admitir este entorno de administración dual, una aplicación de administración examina la información almacenada en una base de datos local para determinar si el agente admite SNMPv1 o SNMPv2. Según la información de la base de datos, el NMS se comunica con el agente utilizando la versión adecuada de SNMP.
Aunque SNMPv3 no hace cambios en el protocolo aparte de la incorporación de seguridad criptográfica, se ve muy diferente debido a las nuevas convenciones textuales, conceptos y terminología. [1] El cambio más visible fue definir una versión segura de SNMP, agregando mejoras de seguridad y configuración remota a SNMP. [18] El aspecto de seguridad se aborda ofreciendo tanto autenticación fuerte como cifrado de datos para la privacidad. Para el aspecto de administración, SNMPv3 se centra en dos partes, a saber, los originadores de notificaciones y los reenvíos de proxy. Los cambios también facilitan la configuración y administración remotas de las entidades SNMP, además de abordar problemas relacionados con la implementación a gran escala, la contabilidad y la gestión de fallas.
Características y mejoras incluidas:
La seguridad era una de las mayores debilidades de SNMP hasta la versión 3. La autenticación en las versiones 1 y 2 de SNMP no es más que una contraseña (cadena comunitaria) enviada en texto claro entre un administrador y un agente. [1] Cada mensaje SNMPv3 contiene parámetros de seguridad que están codificados como una cadena de octetos. El significado de estos parámetros de seguridad depende del modelo de seguridad que se utilice. [20] El enfoque de seguridad en la versión 3 apunta a: [21]
La v3 también define USM y VACM, que luego fueron seguidos por un modelo de seguridad de transporte (TSM) que proporcionó soporte para SNMPv3 sobre SSH y SNMPv3 sobre TLS y DTLS.
A partir de 2004, [update]la IETF reconoce el Protocolo simple de administración de redes versión 3 , tal como se define en RFC 3411– RFC 3418 [22] (también conocido como STD0062), como la versión estándar actual de SNMP. La IETF ha designado a SNMPv3 como un estándar de Internet completo , [23] el nivel de madurez más alto para un RFC. Considera que las versiones anteriores son obsoletas (las designa como históricas u obsoletas ). [15]
Las potentes capacidades de escritura de SNMP, que permitirían la configuración de dispositivos de red, no están siendo aprovechadas en su totalidad por muchos proveedores, en parte debido a la falta de seguridad en las versiones de SNMP anteriores a SNMPv3, y en parte porque muchos dispositivos simplemente no pueden configurarse mediante cambios individuales en los objetos MIB.
Algunos valores SNMP (especialmente valores tabulares) requieren un conocimiento específico de los esquemas de indexación de tablas, y estos valores de índice no son necesariamente consistentes en todas las plataformas. Esto puede causar problemas de correlación al obtener información de varios dispositivos que pueden no emplear el mismo esquema de indexación de tablas (por ejemplo, al obtener métricas de utilización de disco, donde un identificador de disco específico es diferente en todas las plataformas). [24]
Algunos de los principales proveedores de equipos tienden a extender excesivamente sus sistemas de control y configuración centrados en la interfaz de línea de comandos (CLI) patentada. [25] [ verificación fallida ]
En febrero de 2002, el Centro de coordinación del equipo de respuesta a emergencias informáticas (CERT-CC) del Instituto de ingeniería de software Carnegie Mellon (CM-SEI) emitió un aviso sobre SNMPv1, [26] después de que el Grupo de programación segura de la Universidad de Oulu realizara un análisis exhaustivo del manejo de mensajes SNMP. La mayoría de las implementaciones de SNMP, independientemente de la versión del protocolo que admitan, utilizan el mismo código de programa para decodificar las unidades de datos de protocolo (PDU) y se identificaron problemas en este código. Se encontraron otros problemas con la decodificación de los mensajes de trampa SNMP recibidos por la estación de administración SNMP o las solicitudes recibidas por el agente SNMP en el dispositivo de red. Muchos proveedores tuvieron que emitir parches para sus implementaciones de SNMP. [8] : 1875
Debido a que SNMP está diseñado para permitir a los administradores monitorear y configurar dispositivos de red de forma remota, también se puede utilizar para penetrar en una red. Una cantidad significativa de herramientas de software pueden escanear toda la red utilizando SNMP, por lo tanto, los errores en la configuración del modo de lectura y escritura pueden hacer que una red sea susceptible a ataques. [27] : 52
En 2001, Cisco publicó información que indicaba que, incluso en modo de solo lectura, la implementación SNMP de Cisco IOS es vulnerable a ciertos ataques de denegación de servicio . Estos problemas de seguridad se pueden solucionar mediante una actualización de IOS. [28]
Si no se utiliza SNMP en una red, se debe desactivar en los dispositivos de red. Al configurar el modo de solo lectura de SNMP, se debe prestar especial atención a la configuración del control de acceso y a las direcciones IP desde las que se aceptan mensajes SNMP. Si los servidores SNMP se identifican por su IP, SNMP solo puede responder a estas IP y se rechazarán los mensajes SNMP de otras direcciones IP. Sin embargo, la suplantación de direcciones IP sigue siendo un problema de seguridad. [27] : 54
SNMP está disponible en diferentes versiones, y cada versión tiene sus propios problemas de seguridad. SNMP v1 envía contraseñas en texto simple a través de la red. Por lo tanto, las contraseñas se pueden leer con rastreo de paquetes . SNMP v2 permite el hash de contraseñas con MD5 , pero esto tiene que configurarse. Prácticamente todo el software de administración de red admite SNMP v1, pero no necesariamente SNMP v2 o v3. SNMP v2 se desarrolló específicamente para proporcionar seguridad de datos , es decir, autenticación , privacidad y autorización , pero solo la versión 2c de SNMP obtuvo el respaldo del Grupo de trabajo de ingeniería de Internet (IETF), mientras que las versiones 2u y 2* no obtuvieron la aprobación de IETF debido a problemas de seguridad. SNMP v3 usa MD5, algoritmo hash seguro (SHA) y algoritmos con clave para ofrecer protección contra modificaciones de datos no autorizadas y ataques de suplantación de identidad . Si se necesita un mayor nivel de seguridad, se puede usar opcionalmente el Estándar de cifrado de datos (DES) en el modo de encadenamiento de bloques de cifrado . SNMP v3 se implementa en Cisco IOS desde la versión 12.0(3)T. [27] : 52
SNMPv3 puede estar sujeto a ataques de fuerza bruta y de diccionario para adivinar las claves de autenticación, o claves de cifrado, si estas claves se generan a partir de contraseñas cortas (débiles) o contraseñas que se pueden encontrar en un diccionario. SNMPv3 permite tanto proporcionar claves criptográficas distribuidas uniformemente aleatorias como generar claves criptográficas a partir de una contraseña proporcionada por el usuario. El riesgo de adivinar cadenas de autenticación a partir de valores hash transmitidos por la red depende de la función hash criptográfica utilizada y de la longitud del valor hash. SNMPv3 utiliza el protocolo de autenticación HMAC - SHA-2 para el modelo de seguridad basado en el usuario (USM). [29] SNMP no utiliza un protocolo de autenticación de desafío-intercambio más seguro . SNMPv3 (al igual que otras versiones del protocolo SNMP) es un protocolo sin estado , y ha sido diseñado con una cantidad mínima de interacciones entre el agente y el administrador. Por lo tanto, la introducción de un protocolo de desafío-respuesta para cada comando impondría una carga al agente (y posiblemente a la red misma) que los diseñadores del protocolo consideraron excesiva e inaceptable. [ cita requerida ]
Las deficiencias de seguridad de todas las versiones de SNMP se pueden mitigar mediante mecanismos de autenticación y confidencialidad de IPsec . [ cita requerida ] SNMP también se puede transmitir de forma segura a través de la seguridad de la capa de transporte de datagramas (DTLS). [10]
Muchas implementaciones de SNMP incluyen un tipo de descubrimiento automático donde un nuevo componente de red, como un conmutador o enrutador, se descubre y sondea automáticamente. En SNMPv1 y SNMPv2c esto se hace a través de una cadena de comunidad que se transmite en texto claro a otros dispositivos. [10] Las contraseñas en texto claro son un riesgo de seguridad significativo. Una vez que la cadena de comunidad se conoce fuera de la organización, podría convertirse en el objetivo de un ataque. Para alertar a los administradores de otros intentos de obtener cadenas de comunidad, SNMP se puede configurar para pasar trampas de falla de autenticación de nombre de comunidad. [27] : 54 Si se utiliza SNMPv2, el problema se puede evitar habilitando el cifrado de contraseñas en los agentes SNMP de los dispositivos de red.
La configuración predeterminada común para las cadenas de comunidad es "pública" para acceso de solo lectura y "privada" para lectura y escritura. [8] : 1874 Debido a los valores predeterminados bien conocidos, SNMP encabezó la lista de problemas de configuración predeterminada común del SANS Institute y fue el número diez en la lista de las 10 amenazas de seguridad de Internet más críticas de SANS para el año 2000. [30] Los administradores de sistemas y redes con frecuencia no cambian estas configuraciones. [8] : 1874
Ya sea que se ejecuten sobre TCP o UDP, SNMPv1 y v2 son vulnerables a ataques de suplantación de IP . Con la suplantación, los atacantes pueden eludir las listas de acceso de dispositivos en agentes que se implementan para restringir el acceso SNMP. Los mecanismos de seguridad de SNMPv3, como USM o TSM, pueden prevenir ataques de suplantación.
Una PDU InformRequest se genera y transmite a petición de una aplicación en una entidad SNMPv2 que actúa en un rol de administrador y desea notificar a otra aplicación (en una entidad SNMPv2 que también actúa en un rol de administrador) información en la Vista MIB de una parte local a la aplicación que envía.