---
# System prepended metadata

title: SNMP v3

---

# 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
    ```