Introducción
En este laboratorio, aprenderá a implementar la monitorización segura de redes en un sistema Linux utilizando el Protocolo Simple de Gestión de Redes versión 3 (SNMPv3). Se centrará en configurar el agente SNMP (snmpd) para aplicar autenticación y cifrado robustos, asegurando que los datos de gestión estén protegidos en tránsito y superando las inseguridades de las versiones anteriores de SNMP.
El proceso comienza con la instalación de las herramientas necesarias del agente y cliente SNMP en su sistema. Luego, creará un usuario SNMPv3 dedicado con credenciales seguras directamente en el archivo de configuración. Finalmente, utilizará la herramienta de línea de comandos snmpwalk para realizar consultas seguras contra su agente configurado, verificando su configuración y explorando cómo recuperar información específica del sistema utilizando Identificadores de Objeto (OIDs).
Instalar Agente y Herramientas Cliente SNMP
En este paso, instalará los componentes principales necesarios para la monitorización de redes utilizando el Protocolo Simple de Gestión de Redes (SNMP). Instalaremos tanto el agente SNMP, que se ejecuta en el dispositivo a monitorizar, como las herramientas cliente, que se utilizan para consultar al agente.
Primero, como una buena práctica estándar, actualice la lista de paquetes de su sistema. Esto asegura que está obteniendo las versiones más recientes y seguras del software disponibles en los repositorios.
Ejecute el siguiente comando para actualizar el índice de paquetes en su sistema:
sudo apt update
Verá una salida que muestra las listas de paquetes siendo obtenidas de los repositorios de Ubuntu.
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
...
Fetched 1,587 kB in 2s (924 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
Ahora que su lista de paquetes está actualizada, puede instalar el agente SNMP (demonio) y las utilidades cliente. El agente es proporcionado por el paquete snmpd, y las herramientas cliente (como snmpwalk, snmpget) están en el paquete snmp.
Ejecute el comando a continuación para instalar ambos paquetes. La bandera -y confirma automáticamente la instalación, por lo que no se le pedirá confirmación.
sudo apt install snmpd snmp -y
El proceso de instalación descargará y configurará los archivos necesarios. Una vez completado, el servicio snmpd, que es el demonio del agente, debería iniciarse automáticamente.
Para confirmar que el agente SNMP se está ejecutando correctamente, puede verificar el estado del servicio snmpd usando systemctl.
sudo systemctl status snmpd
La salida debería indicar que el servicio está active (running). Esto confirma que el agente SNMP está listo para recibir solicitudes.
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/lib/systemd/system/snmpd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-10-30 08:30:00 UTC; 5s ago
Main PID: 1234 (snmpd)
Tasks: 1 (limit: 4595)
Memory: 9.8M
CPU: 35ms
CGroup: /system.slice/snmpd.service
└─1234 /usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f
Si ve la pantalla de estado, puede presionar
qen su teclado para salir y volver a la línea de comandos.
Con el agente en ejecución y las herramientas cliente instaladas, su entorno ahora está preparado para la configuración y comunicación SNMP.
Crear un Usuario SNMPv3 Seguro en snmpd.conf
En este paso, configurará el agente SNMP (snmpd) para usar SNMPv3, que proporciona características de seguridad esenciales. A diferencia de las versiones anteriores, SNMPv3 admite autenticación (para verificar la identidad del remitente) y privacidad (para cifrar los datos). Logrará esto creando un nuevo usuario directamente en el archivo de configuración del agente, /etc/snmp/snmpd.conf.
Antes de realizar cualquier cambio, es una práctica recomendada fundamental crear una copia de seguridad del archivo de configuración original. Esto le permite restaurarlo fácilmente si algo sale mal.
Ejecute el siguiente comando para copiar el archivo de configuración:
sudo cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
Ahora, editará el archivo de configuración principal /etc/snmp/snmpd.conf para agregar un nuevo usuario SNMPv3. Utilizaremos el editor de texto nano para esta tarea.
Ejecute este comando para abrir el archivo con permisos sudo:
sudo nano /etc/snmp/snmpd.conf
Desplácese hasta el final del archivo y agregue las siguientes líneas. Estas líneas definen un nuevo usuario llamado labexuser con protocolos de autenticación (SHA) y privacidad (AES) robustos.
createUser: Esta directiva crea el usuario SNMPv3.labexuser: El nombre de usuario para su usuario SNMPv3.SHA: El protocolo de autenticación (más seguro que MD5).AuthPassLabEx: La frase de contraseña de autenticación (debe tener al menos 8 caracteres).AES: El protocolo de privacidad (cifrado) (más seguro que DES).PrivPassLabEx: La frase de contraseña de privacidad (debe tener al menos 8 caracteres).
rwuser: Esta directiva otorga al usuario acceso de lectura-escritura a todo el árbol OID cuando se utiliza el nivel de seguridadpriv(autenticación y privacidad).
Copie y pegue el siguiente bloque de configuración al final del archivo:
## --- LabEx SNMPv3 User Configuration ---
## Create a secure SNMPv3 user for monitoring
createUser labexuser SHA "AuthPassLabEx" AES "PrivPassLabEx"
## Grant the new user read-write access with privacy
rwuser labexuser priv
## --- End of Configuration ---
Después de agregar el texto, guarde el archivo y salga de nano presionando Ctrl+O, luego Enter para confirmar el nombre del archivo, y finalmente Ctrl+X para salir.
Ahora ha configurado con éxito un usuario seguro para la comunicación SNMPv3. En el siguiente paso, reiniciará el servicio para aplicar estos cambios.
Reiniciar y Verificar el Servicio snmpd
En este paso, aplicará la nueva configuración de usuario que agregó en el paso anterior. Cada vez que modifique el archivo de configuración de un servicio en ejecución como snmpd, los cambios no se aplicarán automáticamente. Debe reiniciar el servicio para que vuelva a leer su archivo de configuración y cargue la nueva configuración.
Primero, use el comando systemctl para reiniciar el servicio snmpd. Esto detendrá el proceso actual e iniciará uno nuevo con la configuración actualizada que incluye su labexuser.
sudo systemctl restart snmpd
Este comando normalmente no produce ninguna salida si se ejecuta correctamente.
A continuación, es crucial verificar que el servicio se reinició sin problemas. Si hubo algún error de sintaxis en su archivo /etc/snmp/snmpd.conf, el servicio podría no iniciarse. Puede verificar su estado actual para confirmar que se está ejecutando correctamente.
sudo systemctl status snmpd
Debería ver una salida que confirme que el servicio está active (running). Preste atención a la marca de tiempo, que debería mostrar que el servicio se inició muy recientemente.
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/lib/systemd/system/snmpd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-10-30 08:35:00 UTC; 3s ago
Main PID: 5678 (snmpd)
Tasks: 1 (limit: 4595)
Memory: 10.1M
CPU: 40ms
CGroup: /system.slice/snmpd.service
└─5678 /usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f
Recuerde presionar
qpara salir de la vista de estado y volver a la terminal.
Ver el estado active (running) confirma que sus cambios de configuración fueron válidos y que el agente SNMP ahora se está ejecutando con el nuevo labexuser listo para la comunicación segura.
Realizar Consultas Seguras con Herramientas SNMPv3
En este paso, utilizará herramientas cliente de SNMP para realizar consultas seguras contra el agente SNMP que se ejecuta en su máquina local. Usará las credenciales de labexuser que configuró en snmpd.conf para probar la comunicación segura de SNMPv3. Este es el momento de ver su configuración segura en acción.
Los comandos SNMP para SNMPv3 requieren varias banderas específicas para manejar la autenticación y la privacidad. Aquí hay un desglose de los parámetros que utilizará:
-v 3: Especifica que está utilizando la versión 3 de SNMP.-l authPriv: Establece el nivel de seguridad enauthPriv, lo que significa que la comunicación requiere tanto autenticación como privacidad (cifrado). Este es el nivel de seguridad más alto.-u labexuser: Especifica el nombre de usuario, que es ellabexuserque creó.-a SHA: Define el protocolo de autenticación como SHA. Esto debe coincidir con el protocolo que configuró ensnmpd.conf.-A "AuthPassLabEx": Proporciona la frase de contraseña de autenticación.-x AES: Define el protocolo de privacidad (cifrado) como AES. Esto también debe coincidir con su configuración.-X "PrivPassLabEx": Proporciona la frase de contraseña de privacidad.localhost: El host de destino donde se está ejecutando el agente SNMP. En este caso, es su propia máquina.
Primero, probemos la conexión recorriendo todo el árbol del sistema. El comando snmpwalk recorre los árboles OID y devuelve todos los objetos dentro de una rama.
Comprensión de la Estructura OID: Los Identificadores de Objeto (OID) utilizan un sistema jerárquico de numeración. El OID 1.3.6.1.2.1.1 representa el grupo "system" en el MIB-II estándar de SNMP:
1.3.6.1= internet1.3.6.1.2= mgmt (management)1.3.6.1.2.1= mib-2 (standard MIB)1.3.6.1.2.1.1= system group (contiene información básica del sistema)
Ejecute el siguiente comando para recorrer el árbol MIB del sistema:
snmpwalk -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1
Si el comando se ejecuta correctamente, verá múltiples OID relacionados con el sistema y sus valores. Esto confirma que su gestor SNMP se autenticó correctamente con el agente (snmpd) y que la consulta se realizó a través de un canal seguro y cifrado.
SNMPv2-MIB::sysDescr.0 = STRING: Linux labex-vm 5.15.0-XX-generic #XX-Ubuntu SMP ...
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-TC::linux
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (123456) 0:20:34.56
SNMPv2-MIB::sysContact.0 = STRING: Me <me@example.org>
SNMPv2-MIB::sysName.0 = STRING: labex-vm
SNMPv2-MIB::sysLocation.0 = STRING: Sitting on the Dock of the Bay
...
Una respuesta exitosa demuestra que toda su configuración de SNMPv3 está funcionando correctamente. Si hubiera utilizado credenciales o protocolos incorrectos, el comando habría fallado con un error de autenticación.
Consultar OIDs Específicos usando snmpget
En este paso, aprenderá a recuperar información específica del sistema utilizando el comando snmpget. Mientras que snmpwalk recorre árboles OID completos, snmpget está diseñado para consultar Identificadores de Objeto (OID) específicos para una recuperación precisa de información.
Ahora que tiene una configuración SNMPv3 funcional y segura, puede consultar información específica del sistema. Un OID apunta de forma única a una pieza de información gestionada dentro de la Base de Información de Gestión (MIB) del dispositivo.
Explicación de la Jerarquía OID: El árbol OID de SNMP sigue la jerarquía estándar internacional de identificadores de objeto ISO/IEC:
1 (iso)
└── 3 (org)
└── 6 (dod)
└── 1 (internet)
└── 2 (mgmt)
└── 1 (mib-2)
└── 1 (system)
├── 1.0 (sysDescr)
├── 3.0 (sysUpTime)
├── 4.0 (sysContact)
├── 5.0 (sysName)
└── 6.0 (sysLocation)
Esto explica por qué la información del sistema comienza con 1.3.6.1.2.1.1 – es la ruta estandarizada al grupo system en MIB-II.
Consultemos un OID específico y de uso común: la descripción del sistema. Este OID recupera una descripción textual básica del dispositivo gestionado.
Comprensión de OIDs Específicos: Dentro del grupo system (1.3.6.1.2.1.1), cada pieza de información tiene un sub-identificador específico:
1.3.6.1.2.1.1.1.0= sysDescr.0 (descripción del sistema)1.3.6.1.2.1.1.3.0= sysUpTime.0 (tiempo de actividad del sistema)1.3.6.1.2.1.1.4.0= sysContact.0 (contacto del sistema)1.3.6.1.2.1.1.5.0= sysName.0 (nombre del sistema)1.3.6.1.2.1.1.6.0= sysLocation.0 (ubicación del sistema)
El .0 al final indica que es un valor escalar (instancia única), no una entrada de tabla.
Ejecute el siguiente comando para consultar la descripción del sistema:
snmpget -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1.1.0
La salida mostrará la descripción del sistema, confirmando que su autenticación y privacidad SNMPv3 están funcionando correctamente:
iso.3.6.1.2.1.1.1.0 = STRING: "Linux iZrj9ixg5sv0oem6yeu6aqZ 5.15.0-56-generic ..."
A continuación, consultemos el tiempo de actividad del sistema utilizando el OID numérico 1.3.6.1.2.1.1.3.0 (que corresponde a sysUpTime.0). Este OID informa el tiempo transcurrido desde la última reinicialización de la porción de gestión de red del sistema:
snmpget -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1.3.0
La salida mostrará el tiempo de actividad en un formato "Timeticks", que representa centésimas de segundo, junto con un formato legible por humanos:
iso.3.6.1.2.1.1.3.0 = Timeticks: (48642) 0:08:06.42
Finalmente, puede consultar varios OID en un solo comando listándolos al final. Recuperemos tanto la descripción del sistema como la información de contacto juntas utilizando sus OID numéricos.
¿Por qué usar OID numéricos? En algunos entornos, los nombres simbólicos como sysDescr.0 pueden no ser reconocidos porque:
- Los archivos MIB no están cargados o instalados
- La configuración del cliente SNMP no incluye las definiciones MIB necesarias
- El uso de OID numéricos garantiza la compatibilidad entre diferentes sistemas
Ejecute este comando para consultar varios OID simultáneamente:
snmpget -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1.1.0 1.3.6.1.2.1.1.4.0
Esto devolverá ambos valores en una sola respuesta:
iso.3.6.1.2.1.1.1.0 = STRING: "Linux iZrj9ixg5sv0oem6yeu6aqZ 5.15.0-56-generic ..."
iso.3.6.1.2.1.1.4.0 = STRING: "Me <me@example.org>"
Al consultar con éxito estos OID específicos, ha demostrado la capacidad principal de SNMP para la monitorización segura de redes. Ahora puede recuperar datos operativos precisos de sus dispositivos de manera segura, autenticada y cifrada.
Resumen
En este laboratorio, aprendió a implementar la monitorización segura de redes en un sistema Linux utilizando SNMPv3. Comenzó instalando los componentes principales, incluido el agente SNMP (snmpd) y las herramientas cliente (snmp), después de actualizar el repositorio de paquetes del sistema. El enfoque principal fue la seguridad, que configuró creando un nuevo usuario SNMPv3 en el archivo snmpd.conf, completo con protocolos de autenticación y privacidad (cifrado) robustos para proteger los datos en tránsito.
Después de configurar el usuario seguro, reinició el servicio snmpd para aplicar la nueva configuración y verificó que se estaba ejecutando correctamente. Luego utilizó herramientas cliente de SNMP para realizar consultas seguras contra el agente, autenticándose con las credenciales del usuario SNMPv3 que creó. Practicó el uso de snmpwalk para recorrer ramas completas del árbol MIB y snmpget para recuperar Identificadores de Objeto (OID) específicos. Esto demostró cómo monitorizar de forma segura la información del sistema, como la descripción del sistema, el tiempo de actividad y los detalles de contacto, utilizando tanto recorridos de árbol completos como consultas individuales precisas.



