09
octubre
2020

Seguridad del Protocolo SNMP

El Protocolo SNMP (Simple Network Management Protocol o Protocolo Simple de Gestión de Redes), está compuesto por 3 elementos fundamentales:

  • Agentes: entendidos como aplicaciones preinstaladas por los fabricantes en los dispositivos gestionados (routers, switches, estaciones de trabajo, por ejemplo), que constituyen una interfaz entre el protocolo SNMP y la configuración de cada equipo.
  • Administrador: o Sistema de Gestión de Red basado en el Protocolo SNMP, que consulta (o configura) las variables de cada equipo de la red, interactuando con cada Agente respectivo de los dispositivos gestionados.
  • MIB: Management Information Base o Base de Información de Administración. Conjunto de especificaciones de los dispositivos de la red, organizado jerárquicamente en forma de árbol, donde la raíz contiene las variables más globales de lo que sucede en la red, y las hojas corresponden a la información detallada de cada nodo gestionado. Su empleo es conceptual, recopilándose desde el Administrador o Sistema de Gestión de Red, que accede la información de los dispositivos mediante los Agentes, utilizando propiamente el Protocolo SNMP.

Es oportuno señalar que los mecanismos utilizados para definir la información relativa a los dispositivos gestionados mediante el Protocolo SNMP, apenas han sufrido modificaciones desde su aparición a finales de los años 80 del pasado siglo, lo que se debe en lo fundamental a la flexibilidad del protocolo, pues su diseño responde a que la información definida pueda utilizarse por otros protocolos diferentes, o incluso, por distintas versiones del mismo protocolo.

Como el requisito fundamental del diseño del protocolo SNMP fue la sencillez (de ahí su nombre), ha sido necesario implementar varias revisiones para adaptarlo a la dinámica de las necesidades actuales, entre las que cabe destacar las exigencias en cuanto a la seguridad del sistema.

Amenazas a la Seguridad

El protocolo SNMP proporciona mecanismos para el acceso a una base de información jerárquica compuesta por un conjunto de variables. Se distinguen dos tipos distintos de acceso a dicha información: un acceso para lectura que permite consultar los valores asociados a cada una de las variables, y un acceso para escritura que permite modificar dichos valores.

El acceso a los dispositivos de la primera versión del protocolo SNMP, se realiza mediante una cadena de caracteres denominada “nombre de comunidad”, que se utiliza como un sencillo mecanismo de control de acceso a la información, el cual puede ser configurado incluso por el administrador del sistema.

Toda la seguridad proporcionada por el sistema se basa en el hecho de que es necesario conocer el nombre de comunidad asignado a un dispositivo, para conseguir el acceso a la información proporcionada por sus variables.

El nivel de protección ofrecido por la versión original del protocolo SNMP es, por tanto, muy débil. Más aún si se tiene en cuenta que los nombres de comunidad incluidos en los mensajes del protocolo SNMP viajan por la red en texto plano, y por consiguiente, pueden ser obtenidos como resultado de ataques pasivos o escuchas malintencionadas.

Además, está muy extendido el uso del nombre de comunidad configurado por defecto en los dispositivos, por lo que un usuario ajeno al sistema puede obtener gran cantidad de información acerca del mismo utilizando el protocolo SNMP.

Con el fin de aumentar la seguridad del protocolo fue necesario realizar cambios en su primera versión, para introducir conceptos de autentificación, integridad y privacidad, así como para mejorar el control de acceso a la información, que permitieran frenar amenazas como la modificación de los mensajes en tránsito, o su orden, la suplantación de identidad, y escuchas o ataques pasivos.

Evolución hacia SNMPv2

El primer intento serio de dotar al protocolo SNMP de un cierto grado de seguridad se corresponde con la versión denominada SNMPsec. Los elementos introducidos en dicha versión forman la base de todas las versiones posteriores y se siguen utilizando en la actualidad.

Las principales innovaciones propuestas por SNMPsec son la identificación unívoca de las entidades que participan en las comunicaciones SNMP, lo que permitió grandes mejoras y mayor flexibilidad en cuanto al control de acceso, así como la utilización de mecanismos criptográficos para conseguir autentificación, integridad de los mensajes y privacidad.

Dicha versión introduce, entre otros conceptos, los siguientes:

  • Party SNMP: contexto virtual de ejecución cuyas operaciones se encuentran restringidas a las permitidas en el dispositivo.
  • Política de control de acceso: conjunto de operaciones o mensajes del protocolo SNMP cuyo uso se permite entre dos elementos participantes en una comunicación de gestión.
  • Protocolo de autentificación: Sirve al mismo tiempo para autentificar los mensajes y para poder comprobar su integridad. Se suele utilizar el algoritmo MD5, que aplica una función hash al mensaje, e incluye el valor respuesta entre los datos transmitidos a la hora de llevar a cabo una comunicación.
  • Protocolo de privacidad: Sirve para proteger las comunicaciones contra escuchas malintencionadas. Se utiliza, con frecuencia, el algoritmo simétrico de encriptación DES.
La versión SNMPsec se adopta inicialmente con la introducción de la versión 2 del protocolo SNMP y pasa a denominarse SNMPv2p (Party-based SNMPv2).

Posteriormente el marco de trabajo SNMPv2, cuya definición no contiene ningún estándar en cuanto a seguridad, se asocia con otros modelos administrativos referentes a seguridad, y aparecen tres nuevas versiones del protocolo: SNMPv2c, SNMPv2u y SNMPv2*.

La versión SNMPv2c (Community-based SNMPv2) utiliza el mismo modelo administrativo que la primera versión del protocolo SNMP, y como tal no incluye mecanismos de seguridad. Las únicas mejoras introducidas en la nueva versión consisten en una mayor flexibilidad de los mecanismos de control de acceso, ya que se permite la definición de políticas de acceso consistentes en asociar un nombre de comunidad con un perfil de comunidad formado por una vista MIB y unos derechos de acceso a dicha vista: de lectura o de lectura/escritura.

La versión SNMPv2* proporciona niveles de seguridad adecuados, pero no alcanzó el necesario nivel de estandarización y aceptación.

Por último, la versión denominada SNMPv2u (User-based SNMPv2) reutiliza los conceptos planteados en la versión SNMPsec, introduciendo la noción de usuario; en este caso, las comunicaciones se llevan a cabo bajo la identidad de usuarios en lugar de utilizar el concepto de party existente en las versiones precedentes, de esta forma, un mismo usuario puede estar definido en varias entidades SNMP diferentes.

SNMP versión 3

La principal novedad introducida en la versión 3 del protocolo SNMP es la modularidad. Una entidad SNMP se considera compuesta por varios módulos: uno disparador de notificaciones, otro procesador de mensajes, un subsistema encargado de la seguridad, y otro responsable del control de acceso.

Se observa, por tanto, que en la versión SNMPv3 se independizan los mecanismos utilizados para la seguridad (autentificación y privacidad) y para el control de acceso; de este modo, una misma entidad puede utilizar diferentes modelos de seguridad y control de acceso simultáneamente, lo que incrementa notablemente la flexibilidad y la interoperabilidad del protocolo.

Se define, además, un modelo estándar para seguridad basada en usuarios (USM: User Security Model), y otro basado en vistas (VACM: View-based Access Control Model). Se aprovechan los conceptos definidos en las versiones previas, y al mismo tiempo, la modularidad de la nueva versión permite la introducción de futuros modelos independientes de los actuales.

La seguridad fue una de las mayores debilidades de SNMP hasta v3. La autenticación en las versiones 1 y 2 de SNMP equivale a nada más que una contraseña (nombre de comunidad) enviada en texto sin cifrar entre un administrador y un agente. Cada mensaje SNMPv3 contiene parámetros de seguridad que están codificados, y su significado depende del modelo de seguridad que se utilice. 

Implicación y Mitigación

Denegación de Servicios

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 usar para penetrar en una red local (LAN).

Si no se usa el Protocolo SNMP en una red, debe apagarse, porque además de crear una vulnerabilidad, consumirá el ancho de banda de la red disponible y utilizará innecesariamente recursos de procesamiento

SNMP es vulnerable a ciertos ataques de denegación de servicios, por lo que al configurarlo se debe prestar especial atención a la configuración del control de acceso y desde qué direcciones IP se aceptan los mensajes SNMP. Si los servidores SNMP se identifican por su IP, SNMP solo puede responder a estas IP y se denegarán los mensajes SNMP de otras direcciones.

Autenticación SNMP

SNMP está disponible en diferentes versiones 1, 2 y 3, cada una tiene sus propios problemas de seguridad. SNMP v1 envía contraseñas en texto sin cifrar a través de la red. Por lo tanto, las contraseñas se pueden leer con el rastreo de paquetes.

SNMP v2 permite el hash de contraseña con MD5, pero debe configurarse. Esta versión se desarrolló específicamente para proporcionar autenticación, privacidad y autorización, pero solo la versión 2c fue respaldado internacionalmente, no así las versiones 2u y 2*.

SNMP v3 utiliza algoritmos de codificación para ofrecer protección contra modificaciones de datos no autorizadas y ataques de enmascaramiento; sin embargo, 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 que se pueden encontrar en un diccionario. La utilización de buenas prácticas en la selección de contraseñas puede mitigar esta vulnerabilidad.

Detección automática

Muchas implementaciones de SNMP incluyen un tipo de descubrimiento automático en el que un nuevo componente adicionado a la red, se descubre y agrupa automáticamente por su dirección IP. En SNMPv1 y v2c, esto se hace a través de una cadena comunitaria que se transmite en texto sin cifrar a otros dispositivos.

Una vez que la cadena de comunidad se conoce fuera de la organización, podría convertirse en el objetivo de un ataque. Para evitar el descubrimiento fácil de la comunidad, SNMP debe configurarse para alertar por falla de autenticación de nombre de comunidad, y el dispositivo de administración reaccionar en su defecto. Los mecanismos de seguridad de SNMPv3 pueden evitar un ataque exitoso.

Conclusiones

El nivel de seguridad proporcionado por la versión original del protocolo SNMP no es adecuado para las necesidades actuales. En caso de utilizar una gestión basada en dicha versión es imprescindible informarse de los riesgos involucrados, debido a la sensibilidad de la información accesible a través de dicho protocolo.

Versiones posteriores del protocolo han hecho uso de mecanismos criptográficos para proporcionar mayor seguridad en las comunicaciones. La utilización de dichas versiones trae consigo una mayor dificultad en la configuración del sistema, pero el nivel de seguridad obtenido es mucho mayor.

La tecnología ViPNet utiliza el protocolo SNMP en varios de sus productos. En todos se presta especial atención a la seguridad, la que está basada en claves de cifrado simétricas generadas por la tecnología, lo que hace que la información del protocolo esté encriptada.

Uno de los productos que lo utiliza es ViPNet StateWatcher, que es el sistema que monitorea el estado de los abonados y sistemas de la red protegida ViPNet. Para más información sobre el producto puedes acceder:

Link: https://infotecs.mx/product/vipnet-statewatcher.html