¿Qué es SNMP? Instalar y configurar SNMP en Linux
SNMP (Simple Network Management Protocol) es un protocolo estándar de Internet que se utiliza para recuperar de forma remota las estadísticas operativas (estado actual) de los servidores y los componentes de la infraestructura. Los dispositivos que suelen admitir SNMP incluyen enrutadores, conmutadores, estaciones de trabajo, firewalls y más.
En este tutorial, veremos la instalación y configuración simple de SNMP en Linux (CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Ubuntu 20.04).
Conceptos básicos de SNMP
El protocolo SNMP se implementa en la capa de aplicación de la pila de redes. Es uno de los protocolos ampliamente aceptados para administrar y monitorear elementos de red. El protocolo se creó como una forma de recopilar información de sistemas muy diferentes de manera coherente.
En general, una red perfilada por SNMP consistirá principalmente en dispositivos que contienen agentes SNMP. Un agente es un programa que puede recopilar información sobre una pieza de hardware, organizarla en entradas predefinidas y responder a consultas utilizando el protocolo SNMP.
En el núcleo, el sistema de gestión SNMP lee y escribe parámetros operativos en dispositivos remotos. Estos parámetros se conocen como OID (identificadores de objeto).
SNMP requiere solo un par de componentes básicos para funcionar:
- SNMP Manager: es una aplicación que administra agentes SNMP en la red. Puede ser cualquier máquina que pueda enviar solicitudes de consulta a agentes con las credenciales correctas. Las funciones clave del administrador son consultar a los agentes, obtener respuestas de los agentes, establecer variables en los agentes y reconocer eventos asincrónicos de los agentes. Puede ser parte de la estación de administración de red (NMS). Cacti, MRTG, Zabbix, Icinga, PRTG son algunas de las herramientas de monitoreo de código abierto gratuitas que actúan como un administrador SNMP.
- Agente: cuando la aplicación del administrador envía consultas SNMP, el agente responde con el estado actual y las estadísticas. Los agentes son responsables de recopilar información sobre el sistema local y almacenarla en un formato que se pueda consultar y actualizar una base de datos denominada base de información de gestión (MIB).
MIB es una base de datos que sigue un estándar al que se adhieren el administrador y los agentes. Cada agente mantiene una base de datos de información que describe los parámetros del dispositivo administrado. La aplicación de administrador utiliza esta base de datos para solicitar al agente información específica y traduce la información según sea necesario para el Sistema de administración de red (NMS). Esta base de datos comúnmente compartida entre el Agente y el Gerente se llama MIB.
Versiones SNMP
Actualmente, hay 3 versiones disponibles.
SNMP versión 1: esta es la primera versión de SNMP. Solo admite contadores de 32 bits. Esto proporciona estadísticas del dispositivo e informes de errores sin consumir muchos recursos del sistema. La seguridad está limitada a las cadenas de la comunidad, si la cadena coincide con la configurada en el equipo, se realizará la solicitud.
Controles de acceso basados en la dirección IP del servidor de consulta. Tiene comunicación de datos sin cifrar.
SNMP versión 2: esto se conoce como v2c, que agrega soporte para contadores de 64 bits. Tiene la capacidad de realizar consultas masivas que cargan paquetes de respuesta con datos de manera más eficiente.
SNMP Versión 3: esta versión proporciona mayor seguridad y capacidades de configuración remota. El acceso no se limita a una única cadena de comunidad para acceso de solo lectura y lectura / escritura, ya que se han introducido nombres de usuario y contraseñas. Admite el uso de algoritmos de cifrado y mecanismos de autenticación.
Opciones SNMPv3,
3 opciones de seguridad y privacidad:
noAuthNoPriv (sin autenticación, sin privacidad)
authNoPriv (autenticación pero sin privacidad)
authPriv (autenticación y privacidad)
Dos mecanismos de autenticación:
md5
sha1
Dos algoritmos de cifrado:
DES
AES
1) Instalación de snmp en Linux
En la máquina del agente SNMP, solo necesitaba el demonio SNMP (snmpd) y para los componentes del administrador, puede instalar snmp
paquete en Ubuntu.
El siguiente comando instala el servicio snmp en los sistemas derivados de Ubuntu y Debian:
$ sudo apt-get install -y snmpd snmp
En centos
$sudo yum install -y net-snmp net-snmp-utils
2) Configuración de SNMP
El archivo de configuración del servicio snmpd se puede encontrar en /etc/snmp/snmpd.conf
. Antes de modificar el archivo, haga una copia del archivo con el siguiente comando:
$ sudo cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
Recuerde agregar un nuevo usuario SNMP que use el archivo ‘/var/lib/net-snmp/snmpd.conf’.
Los siguientes son los parámetros de configuración básicos para configurar SNMP.
- Establecer cadena de comunidad: es como una identificación de usuario o contraseña que permite acceder a las estadísticas de un dispositivo. La máquina cliente usa esta cadena para recuperar datos (para generar gráficos de monitoreo). Se puede identificar donde verá
rocommunity
orwcommunity
. El valor por defecto el valor es ‘público’ que no está protegido, debe desactivarse. - Dirección de escucha: podemos configurar el agente para que escuche solo una dirección IP en particular de la siguiente manera
agentAddress udp:ip_address:161
. El puerto predeterminado en el que escucha SNMP es 161. El comportamiento predeterminado del agente es escuchar en el puerto UDP estándar en todas las interfaces. - Información del sistema: se refiere a información personal, supervisión de proceso / disco,
- syslocation: esta es la [typically physical] ubicación del sistema.
- syscontact: esta es la información de contacto del administrador.
- Trampas SNMP: ayuda a enviar trampas (dispositivo inactivo, interfaz inactiva, etc.) a las herramientas de monitoreo.
Nuestra información modificada debería ser como la siguiente, tenga en cuenta que hay otros valores predeterminados en el archivo que no aparecen aquí
Un archivo de configuración de agente de muestra en Ubuntu:
# Listen for connections on all interfaces (both IPv4 *and* IPv6) agentAddress udp:161,udp6:[::1]:161 # ACCESS CONTROL # view all included .1.3.6.1.2.1.1 view all included .1.3.6.1.2.1.25.1 #rocommunity public localhost # Default access to basic system info rocommunity my_password default -V all # rocommunity6 is for IPv6 rocommunity6 my_password default -V all sysLocation linoxide sysContact Me <me@linoxide.com> # ACTIVE MONITORING # # send SNMPv1 traps trapsink localhost public # send SNMPv2c traps trap2sink localhost public
Un archivo de configuración de agente de muestra en CentOS:
# sec.name source community com2sec notConfigUser default my_comm # Make at least snmpwalk -v 1 localhost -c public system fast again. # name incl/excl subtree mask(optional) view systemview included .1.3.6.1.2.1 view systemview included .1.3.6.1.2.1.25.1 ## incl/excl subtree mask view all included .1 80 # variables through the snmpd.conf file: syslocation centos linoxide syscontact admin <admin@linoxide>
El servicio SNMP debe reiniciarse para cualquier cambio de configuración (/etc/snmp/snmpd.conf
) tomar lugar.
Lo siguiente reiniciará el servicio en Linux, asegúrese de ejecutarlo con acceso sudo.
$ sudo service snmpd restart
En sistemas systemd, ejecute el siguiente comando
$ sudo systemctl restart snmpd.service
3) Prueba del servicio SNMP
Puede probar si SNMP puede leer el sistema y la interfaz MIB mediante el comando snmpwalk.
En Ubuntu
$ sudo snmpwalk -c my_password -v2c -O e 127.0.0.1 iso.3.6.1.2.1.1.1.0 = STRING: "Linux ubuntu-01 4.4.0-66-generic #87-Ubuntu SMP Fri Mar 3 15:29:05 UTC 2017 x86_64" iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10 iso.3.6.1.2.1.1.3.0 = Timeticks: (1544) 0:00:15.44 iso.3.6.1.2.1.1.4.0 = STRING: "me <me@linoxide>" iso.3.6.1.2.1.1.5.0 = STRING: "ubuntu-01" iso.3.6.1.2.1.1.6.0 = STRING: "linoxide" iso.3.6.1.2.1.1.7.0 = INTEGER: 72 iso.3.6.1.2.1.1.8.0 = Timeticks: (1) 0:00:00.01 iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.11.3.1.1 iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.15.2.1.1 iso.3.6.1.2.1.1.9.1.3.1 = STRING: "The MIB for Message Processing and Dispatching." iso.3.6.1.2.1.1.9.1.3.3 = STRING: "The Management Architecture MIB." iso.3.6.1.2.1.25.1.1.0 = Timeticks: (9971483) 1 day, 3:41:54.83 iso.3.6.1.2.1.25.1.2.0 = Hex-STRING: 07 E1 04 08 01 30 16 00 2B 00 00 iso.3.6.1.2.1.25.1.3.0 = INTEGER: 393216 iso.3.6.1.2.1.25.1.4.0 = STRING: "BOOT_IMAGE=/boot/vmlinuz-4.4.0-66-generic root=LABEL=cloudimg-rootfs ro console=tty1 console=ttyS0 " iso.3.6.1.2.1.25.1.5.0 = Gauge32: 1 iso.3.6.1.2.1.25.1.6.0 = Gauge32: 121 iso.3.6.1.2.1.25.1.7.0 = INTEGER: 0
En Centos
$sudo snmpwalk -c my_comm -v1 -O e 127.0.0.1 SNMPv2-MIB::sysDescr.0 = STRING: Linux centos-01 3.10.0-514.6.1.el7.x86_64 #1 SMP Wed Jan 18 13:06:36 UTC 2017 x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (304) 0:00:03.04 SNMPv2-MIB::sysContact.0 = STRING: admin <admin@linoxide> (configure /etc/snmp/snmp.local.conf) SNMPv2-MIB::sysName.0 = STRING: centos-01 SNMPv2-MIB::sysLocation.0 = STRING: centos linoxide SNMPv2-MIB::sysORLastChange.0 = Timeticks: (8) 0:00:00.08 SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDCompliance
Una vez que haya verificado que SNMP funciona correctamente, puede configurar el software de recopilación de estadísticas SNMP, como MRTG, para crear gráficos en línea de sus flujos de tráfico.
Este ejemplo muestra cómo usar snmpwalk
comando para verificar la autenticación del usuario.
$ sudo snmpwalk -v 3 -l authPriv -u user01 -a MD5 -A password -x DES -X password localhost .1
Similar a snmpwalk, snmpget es una herramienta de línea de comandos para obtener información de dispositivos habilitados para snmp.
El siguiente comando snmpget, verifica la autenticación del usuario en el servidor snmp.
$ sudo snmpget -u user01 -l authPriv -a MD5 -x DES -A password -X password remote_host 1.3.6.1.2.1.1.1.0
dónde,
-u
: especifique el nombre de usuario de snmp
-l
: Tipo de método de seguridad y privacidad
-a
: Qué mecanismos de autenticación
-x
: Tipo de algoritmos de cifrado utilizados
-A
: Contraseña de autenticación
-X
: Contraseña de cifrado
Conclusiones
Si está configurando utilizando SNMPv3, debe conocer snmpusm
comando y se utiliza para crear y mantener el usuario SNMPv3 en una entidad de red.
En este tutorial aprendemos cómo instalar y configurar SNMP en Linux para monitorear dispositivos de red. Espero que haya disfrutado de la lectura y deje sus sugerencias en la sección de comentarios a continuación.