# SNMPv3 En esta guía se explica cómo configurar un servidor con SNMPv3 deshabilitando las versiones v1 y v2c. ## Comandos básicos 1. Asegurarse de que no existe ningún firewall que impida las conexiones a los puertos 161 y 162 UDP y TCP, aquí unos ejemplos para **ufw, firewalld e iptables**: ``` ufw allow 161/udp ufw allow 162/udp ufw allow 162/tcp ufw allow 161/tcp iptables -I INPUT -p udp -m udp --sport 161 -j ACCEPT iptables -I INPUT -p udp -m udp --sport 162 -j ACCEPT iptables -I INPUT -p udp -m udp --dport 161 -j ACCEPT iptables -I INPUT -p udp -m udp --dport 162 -j ACCEPT iptables -I INPUT -p tcp -m tcp --sport 161 -j ACCEPT iptables -I INPUT -p tcp -m tcp --sport 162 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 161 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 162 -j ACCEPT firewall-cmd --zone=public --add-port=161/udp --permanent firewall-cmd --zone=public --add-port=162/udp --permanent firewall-cmd --zone=public --add-port=161/tcp --permanent firewall-cmd --zone=public --add-port=162/tcp --permanent ``` 2. Instalar los paquetes necesarios ``` apt update apt install snmp snmpd libsnmp-dev snmp-mibs-downloader ``` ## Configuración del servidor 1. Desactivar la carga automática de MIB para que en los comandos de consulta **snmpwalk** no se carguen todas las MIBs de golpe y consuma así demasiados recursos ``` nano /etc/snmp/snmp.conf (comentar la siguiente línea) #mibs : ``` 2. Crear las credenciales de usuario y contraseñas necesarias para cifrar las conexiones SNMP v3 (se necesita parar el servicio) ``` systemctl stop snmpd net-snmp-create-v3-user -ro -A [authpass] -X [privpass] -a [auth_algorithm] -x [encryption_algorithm] [username] systemctl start snmpd ``` - **authpass**: clave que se utiliza para autenticar los mensajes entre el gestor y el agente SNMP - **auth_algorithm**: algoritmo de autenticación que se usa junto con la **authpass** para verficiar la autenticidad de los mensajes, que puede estar entre *MD5, SHA, SHA-512, SHA-384, SHA-256* ó *SHA-224* - **privpass**: clave que se utiliza para el cifrado y el descifrado de los datos en la comunicación entre el gestor y el agente SNMP - **encryption_algorithm**: algoritmo de cifrado que se usa junto con la **privpass** para cifrar y descifrar los datos, que puede estar entre *DES* o *AES* - **username**: nombre de usuario necesario para la autenticación ``` net-snmp-create-v3-user -ro -A myauthpass -X myprivpass -a SHA -x AES myuser ``` 3. Modificar el fichero **/etc/snmp/snmpd.conf** de configuración de SNMP y añadir o modificar las siguientes líneas - Permitir todas las conexiones SNMP al servidor ``` agentAddress udp:161,udp6:[::1]:161 ``` - Permitir la respuesta de todas las OID que comiencen por **.1** en las consultas, es decir, todas ``` view all included .1 ``` - Desactivar las versiones v1 y v2c de SNMP comentando las líneas que comiencen por lo siguiente ``` # rocommunity ... # rocommunity6 ... ``` - Definir las credenciales anteriores ``` createUser myuser MD5 myauthpass DES myprivpass rouser myuser ``` - Reiniciar el servicio ``` systemctl restart snmpd ``` 4. Se comprueba la correcta configuración con **snmpwalk** desde el mismo servidor ``` snmpwalk -v3 -l authPriv -u myuser -a MD5 -A myauthpass -x DES -X myprivpass 127.0.0.1 ``` ## Configuración del cliente 1. Hay que instalar los paquetes mencionados en el primer apartado 2. Realizar una consulta de prueba para cofirmar la comunicación SNMP ``` snmpwalk -v3 -l authPriv -u myuser -a MD5 -A myauthpass -x DES -X myprivpass IP_SERVER ```