Ir al contenido

SNMP

Por

Madurezreviewed
Última revisión
Publicado
Última actualización

Administrar miles de dispositivos exige una forma común de preguntar por interfaces, contadores, sensores y estado sin conocer la interfaz propia de cada fabricante. Simple Network Management Protocol (SNMP) resolvió esa necesidad separando el protocolo de acceso de los objetos administrados. Un agente expone identificadores jerárquicos. Las Management Information Bases (MIB) documentan qué significa cada uno.

El modelo parece una lectura de variables, pero la respuesta depende de versión, credencial, vista, contexto y origen. En SNMPv1 y v2c, una community viaja como secreto compartido y selecciona una vista. SNMPv3 puede añadir autenticación y privacidad sin cambiar necesariamente qué objetos autoriza. Enumerar el servicio consiste en unir el OID recibido con esa frontera de acceso y con la semántica de su MIB.

Los ejemplos usan TARGET_IP, COMMUNITY, USERNAME y OID como placeholders.

Nmap confirma que el agente responde y obtiene un conjunto pequeño de objetos. onesixtyone prueba communities v1/v2c contra listas de hosts. Net-SNMP aporta snmpget, snmpwalk, snmpbulkwalk y snmpset. Empieza por un OID escalar conocido y amplía el árbol solo después de confirmar versión, credencial y vista.

Pregunta Herramienta Límite
¿responde un agente SNMP? Nmap snmp-info o snmpget silencio no distingue filtro y credencial mala
¿qué community v1/v2c funciona? onesixtyone confirma después un OID concreto
¿qué subárbol puede leer? snmpwalk o snmpbulkwalk la vista puede ocultar otros OID
¿qué significa cada valor? MIB y documentación del fabricante no confiar solo en el nombre resuelto
¿existe acceso de escritura? configuración y snmpset acotado cambia estado y necesita reversión

snmpbulkwalk reduce rondas con SNMPv2c/v3, pero puede pedir muchos objetos por respuesta. Ajusta max-repetitions cuando el agente o la ruta fragmenten, pierdan o limiten paquetes.

Los agentes suelen escuchar en 161/udp. Traps e informs se envían habitualmente a 162/udp. UDP no establece una sesión, por lo que la ausencia de respuesta puede significar puerto filtrado, versión incorrecta, credencial inválida, OID fuera de la vista o pérdida del datagrama.

Una Management Information Base (MIB) define nombres, tipos y significado de objetos. El Object Identifier (OID) sitúa cada objeto en una jerarquía numérica. Por ejemplo, 1.3.6.1.2.1 corresponde a mib-2. Las MIB ayudan a interpretar los números, pero el dispositivo transmite OID y valores, no necesita enviar los archivos MIB al cliente.

Versión Modelo relevante
SNMPv1 Community en texto claro y operaciones básicas.
SNMPv2c Community en texto claro, bulk retrieval y tipos ampliados.
SNMPv3 User-based Security Model con autenticación y privacidad opcionales.

En v1 y v2c, la community actúa como credencial y selecciona una vista. En v3, los niveles son noAuthNoPriv, authNoPriv y authPriv. Una respuesta no demuestra acceso a todo el árbol. El agente puede limitar OID por usuario, community, origen o contexto.

snmpget pide un OID concreto. -v2c selecciona SNMPv2c y -c aporta la community:

Consultar la descripción del sistema
snmpget -v2c -c COMMUNITY TARGET_IP 1.3.6.1.2.1.1.1.0

El sufijo .0 representa una instancia escalar. Sin él, el agente puede responder noSuchInstance aunque el objeto exista.

snmpwalk repite operaciones GETNEXT desde una raíz y recorre sus descendientes. Empezar por 1.3.6.1.2.1.1 limita el recorrido al grupo system:

Recorrer el grupo system
snmpwalk -v2c -c COMMUNITY TARGET_IP 1.3.6.1.2.1.1

Antes de recorrer 1 o una rama vendor completa, mide el tamaño con subárboles pequeños. Un walk puede devolver decenas de miles de objetos, consumir tiempo y generar un patrón claro de consultas secuenciales.

Para SNMPv3 con autenticación y privacidad, -l authPriv fija el nivel. -u indica usuario, -a y -A algoritmo y secreto de autenticación, mientras -x y -X hacen lo mismo para privacidad:

Consultar SNMPv3 con autenticación y privacidad
snmpget -v3 -l authPriv -u USERNAME \
-a SHA -A AUTH_PASSWORD \
-x AES -X PRIV_PASSWORD \
TARGET_IP OID

Los secretos incluidos como argumentos pueden quedar visibles en el historial y el listado de procesos. Net-SNMP admite archivos de configuración y mecanismos de entrada alternativos que deben protegerse con permisos adecuados.

Como una community incorrecta suele recibir silencio, probar candidatos requiere comparar respuestas válidas. onesixtyone recibe con -c un archivo de communities y con -i una lista de hosts:

Probar una lista de communities
onesixtyone -c COMMUNITY_LIST -i TARGET_LIST

El descubrimiento genera una petición por combinación. Los límites de rate, la pérdida UDP y los ACL por origen pueden producir falsos negativos. Confirma cada hallazgo con snmpget antes de iniciar walks amplios.

Los OID accesibles dependen del dispositivo y de la vista. Estas ramas suelen orientar el recorrido:

Rama Información típica
1.3.6.1.2.1.1 Identidad, contacto, ubicación y uptime.
1.3.6.1.2.1.2 Interfaces, estados y contadores.
1.3.6.1.2.1.4 Datos IP y routing.
1.3.6.1.2.1.25 Host Resources MIB: procesos, software, almacenamiento y dispositivos.
1.3.6.1.4.1 Objetos privados de fabricantes.

Cadenas de configuración, argumentos de procesos, nombres de interfaces y rutas pueden revelar otros sistemas o credenciales. Valida su contexto y evita asumir que un valor persistente sigue activo.

En snmpd.conf, las directivas rocommunity y rwcommunity combinan community, origen y vista. SNMPv3 utiliza usuarios, grupos, vistas y reglas access. Para mostrar líneas activas:

Revisar directivas activas de snmpd
grep -Ev '^[[:space:]]*(#|$)' /etc/snmp/snmpd.conf

rwcommunity no hace escribible todo el agente de forma automática. La vista asociada limita qué OID admite y cada objeto define si acepta SET. Una regla sin origen restringido puede exponer esa capacidad desde cualquier interfaz en la que escuche snmpd. En SNMPv3, una regla access combina grupo, contexto, modelo de seguridad, nivel y vistas de lectura, escritura y notificación. authPriv protege el canal, pero no corrige una vista de escritura demasiado amplia.

La capacidad de escritura solo se confirma con una operación SET sobre un objeto que la MIB declare escribible. Primero lee el valor y su tipo. snmpset necesita ese tipo, por ejemplo s para string o i para integer:

Comprobar un OID escribible y restaurar su valor
snmpget -v2c -c COMMUNITY TARGET_IP OID
snmpset -v2c -c COMMUNITY TARGET_IP OID TYPE TEST_VALUE
snmpset -v2c -c COMMUNITY TARGET_IP OID TYPE ORIGINAL_VALUE

TYPE, TEST_VALUE y ORIGINAL_VALUE son placeholders. Elige un objeto sin efecto operativo, registra el valor original y verifica la restauración. Reenviar el mismo valor también puede generar traps, logs o acciones específicas del fabricante. Un error notWritable descarta ese objeto para esa vista, no todos los objetos del agente.

Confirma además las direcciones de escucha, los includes y la configuración persistente. Una community de solo lectura limita SET, pero la información expuesta puede seguir siendo extensa.

snmp-info y snmp-sysdescr obtienen identidad básica. snmp-interfaces, snmp-netstat y snmp-processes exploran red y procesos. snmp-win32-users, snmp-win32-shares, snmp-win32-services y snmp-win32-software dependen de objetos de Windows expuestos por el agente. snmp-brute busca communities mediante intentos repetidos:

Consultar identidad con una community conocida
sudo nmap -sU -sV -n -Pn -p 161 \
--script snmp-info,snmp-sysdescr \
--script-args creds.snmp=COMMUNITY TARGET_IP

Comprueba el mismo OID con snmpget o snmpwalk. Registra versión, security level, context, community o usuario y árbol solicitado. Un walk que termina no demuestra que haya recorrido toda la MIB. Puede topar con view restrictions, noSuchObject, timeout o cambios de contexto.

SNMPv1/v2c usa community como secreto compartido sin cifrado. SNMPv3 separa autenticación y privacidad. Una credencial de lectura puede exponer interfaces, rutas, procesos, usuarios, software, contactos y configuraciones. Una credencial de escritura puede modificar objetos si la view y el agente lo permiten. No pruebes SET durante enumeración.

Los datos alimentan DNS, segmentación, credenciales, servicios y modelos de red. Un sysName es una afirmación del agente, no necesariamente el FQDN. Una ruta observada puede revelar redes no alcanzables desde el operador, que requieren validar desde otra posición.

UDP, fragmentación, tamaño de respuesta, reintentos y límites del agente provocan huecos. Reduce max-repetitions, divide subárboles y conserva OID de inicio y fin. Los agentes pueden registrar autenticación y SET, mientras que las traps informan eventos a otros sistemas. La red observa UDP/161 y las respuestas pueden superar el tamaño de la petición. Cierra guardando los outputs originales y derivados, protege las communities y claves, y no conserves secretos en el historial ni en argumentos compartidos.

Compara Net-SNMP, onesixtyone, braa y NSE en herramientas y automatización. La checklist controla versión, credencial, vista y capacidad. La cheatsheet reúne consultas ya justificadas.