SNMP
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.
Orden de trabajo y herramientas
Sección titulada «Orden de trabajo y herramientas»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.
Transporte, MIB y OID
Sección titulada «Transporte, MIB y OID»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.
Versiones y seguridad
Sección titulada «Versiones y seguridad»| 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.
Consultar con Net-SNMP
Sección titulada «Consultar con Net-SNMP»snmpget pide un OID concreto. -v2c selecciona SNMPv2c y -c aporta la community:
snmpget -v2c -c COMMUNITY TARGET_IP 1.3.6.1.2.1.1.1.0El 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:
snmpwalk -v2c -c COMMUNITY TARGET_IP 1.3.6.1.2.1.1Antes 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:
snmpget -v3 -l authPriv -u USERNAME \ -a SHA -A AUTH_PASSWORD \ -x AES -X PRIV_PASSWORD \ TARGET_IP OIDLos 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.
Descubrir una community
Sección titulada «Descubrir una community»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:
onesixtyone -c COMMUNITY_LIST -i TARGET_LISTEl 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.
Datos que merecen ampliación
Sección titulada «Datos que merecen ampliación»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.
Revisar net-snmp desde el host
Sección titulada «Revisar net-snmp desde el host»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:
grep -Ev '^[[:space:]]*(#|$)' /etc/snmp/snmpd.confrwcommunity 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:
snmpget -v2c -c COMMUNITY TARGET_IP OIDsnmpset -v2c -c COMMUNITY TARGET_IP OID TYPE TEST_VALUEsnmpset -v2c -c COMMUNITY TARGET_IP OID TYPE ORIGINAL_VALUETYPE, 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.
NSE por fuente de datos
Sección titulada «NSE por fuente de datos»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:
sudo nmap -sU -sV -n -Pn -p 161 \ --script snmp-info,snmp-sysdescr \ --script-args creds.snmp=COMMUNITY TARGET_IPComprueba 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.
Acceso de lectura, escritura y pivots
Sección titulada «Acceso de lectura, escritura y pivots»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.
Límites de frecuencia, registros y cierre
Sección titulada «Límites de frecuencia, registros y cierre»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.
Referencias operativas
Sección titulada «Referencias operativas»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.