02 - SNMP (161, 162 - v1, v2c, v3)
video: https://youtu.be/... no frontmatter da nota.SNMP (Simple Network Management Protocol)
1. Definição e Arquitetura
O SNMP (Simple Network Management Protocol) é o protocolo padrão para gerenciamento de redes IP. Especificado originalmente na RFC 1157 (1990, SNMPv1), evoluiu para v2c (RFC 3416) e v3 (RFC 3414). Opera sobre UDP nas portas:
- 161 — agente (equipamento gerenciado) recebe consultas do manager.
- 162 — manager recebe traps (notificações assíncronas) do agente.
A arquitetura SNMP tem três componentes:
- Manager (NMS - Network Management Station): servidor que coleta dados, gera gráficos e dispara alertas. Exemplos: Zabbix, PRTG, Nagios, LibreNMS, Observium, SolarWinds.
- Agente: software embutido em roteadores, switches, servidores, que responde a consultas SNMP e envia traps.
- MIB (Management Information Base): hierarquia de variáveis que descreve o que pode ser consultado. Cada variável é identificada por um OID (Object Identifier).
2. Versões e Segurança
| Versão | RFC | Segurança | Status |
|---|---|---|---|
| SNMPv1 | 1157 (1990) | Community strings em texto puro (inseguro) | Obsoleto |
| SNMPv2c | 3416 (2002) | Community strings em texto puro (inseguro) | Ainda usado |
| SNMPv3 | 3414 (2002) | USM com auth + priv (HMAC + criptografia) | Recomendado |
Community Strings
Em v1/v2c, a "autenticação" é uma string (community) enviada em texto puro dentro do pacote SNMP:
- read-only: community usada para consultas GET/GETNEXT (ex:
public). - read-write: community usada para SET (ex:
private).
Usar community defaults (public, private) é uma vulnerabilidade grave. Em 2017, milhares de dispositivos ficaram expostos por community public.
SNMPv3 USM (User Security Model)
O SNMPv3 introduz:
- Autenticação: HMAC-MD5 (legado), HMAC-SHA1, HMAC-SHA256 (RFC 7860).
- Privacidade (criptografia): DES (legado), AES-128/192/256.
- NoAuthNoPriv: sem autenticação nem criptografia (não recomendado).
- AuthNoPriv: autenticação HMAC sem criptografia.
- AuthPriv: ambos — recomendado em produção.
Cada usuário v3 é identificado por username + authPassword + privPassword, configurado em ambos os lados (manager e agente).
3. MIB e OID
A MIB é uma árvore hierárquica baseada na estrutura ASN.1. Cada variável é um OID (Object Identifier) — uma sequência de números separados por pontos.
Estrutura da Árvore OID
. iso(1) ─ org(3) ─ dod(6) ─ internet(1)
├─ mgmt(2) ─ mib-2(1)
│ ├─ system(1)
│ ├─ interfaces(2)
│ ├─ ip(4), icmp(5), tcp(6), udp(7), snmp(11)
├─ experimental(3)
└─ private(4) ─ enterprises(1)
├─ cisco(9), juniper(2636), hp(11), dell(674), mikrotik(8861)
O caminho 1.3.6.1.2.1 corresponde a iso.org.dod.internet.mgmt.mib-2 — a MIB-II padrão (RFC 1213), suportada por praticamente todo equipamento IP.
OIDs Essenciais (MIB-II)
| OID | Nome | Descrição |
|---|---|---|
| 1.3.6.1.2.1.1.1.0 | sysDescr | Descrição do sistema (SO, versão) |
| 1.3.6.1.2.1.1.3.0 | sysUpTime | Tempo desde boot (em centésimos de segundo) |
| 1.3.6.1.2.1.1.5.0 | sysName | Hostname |
| 1.3.6.1.2.1.2.2.1.10.x | ifInOctets.x | Bytes recebidos na interface x |
| 1.3.6.1.2.1.2.2.1.16.x | ifOutOctets.x | Bytes enviados na interface x |
| 1.3.6.1.2.1.2.2.1.14.x | ifInErrors.x | Erros de entrada na interface x |
| 1.3.6.1.2.1.2.2.1.5.x | ifSpeed.x | Velocidade nominal da interface (bps) |
| 1.3.6.1.2.1.2.2.1.8.x | ifOperStatus.x | Status operacional (1=up, 2=down) |
4. Operações SNMP
| Operação | PDU | Função |
|---|---|---|
| GET | 0 | Recupera um único OID |
| GETNEXT | 1 | Recupera o próximo OID da árvore |
| GETBULK | 5 | Recupera múltiplos OIDs de uma vez (v2c+) |
| SET | 3 | Modifica valor de um OID |
| TRAP | 4 | Agente notifica manager (assíncrono) |
| INFORM | 6 | Trap com confirmação (v2c+) |
| RESPONSE | 2 | Resposta do agente a um GET/SET |
GET vs GETNEXT vs GETBULK
GET 1.3.6.1.2.1.1.5.0retorna apenas o sysName.GETNEXT 1.3.6.1.2.1.1retorna o primeiro OID depois (sysDescr.0).GETBULK 1.3.6.1.2.1.2.2.1com max-repetitions=50 retorna 50 interfaces em uma única operação (muito mais eficiente que GETNEXT em loop).
5. TRAPs e INFORMs
Trap é notificação assíncrona do agente para o manager. Exemplos clássicos:
- Interface subiu/desceu (linkDown/linkUp).
- Falha de fan ou fonte.
- Temperatura alta.
- Autenticação SNMP falhou.
Trap não tem confirmação — se perder na rede, ninguém fica sabendo. INFORM resolve isso exigindo ACK do manager.
Configuração de Trap no Cisco
snmp-server community public RO
snmp-server host 192.168.1.100 version 2c public
snmp-server enable traps snmp authentication linkdown linkup
snmp-server enable traps envmon fan shutdown
snmp-server location "Datacenter SP-01, Rack 12"
snmp-server contact "noc@empresa.com"
6. Configuração SNMPv3
Cisco
! Criar view (opcional, para restringir acesso)
snmp-server view RESTRICTED 1.3.6.1.2.1 included
! Criar grupo com AuthPriv
snmp-server group ADMINS v3 priv read RESTRICTED write RESTRICTED
! Criar usuário
snmp-server user admin ADMINS v3 auth sha SenhaAuth123 priv aes 256 SenhaPriv456
Linux (net-snmp)
# /etc/snmp/snmpd.conf
# Acesso v2c (não recomendado em produção)
rocommunity public 192.168.1.0/24
# Acesso v3 (recomendado)
createUser admin SHA "SenhaAuth123" AES "SenhaPriv456"
rwuser admin authPriv .1.3.6.1
# Configurações do sistema
sysLocation "Datacenter SP-01, Rack 12"
sysContact "noc@empresa.com"
# Onde ouvir
agentAddress udp:161
7. Ferramentas de Linha de Comando
snmpwalk — Percorrer uma sub-árvore
# v2c
snmpwalk -v2c -c public 192.168.1.1
# Específico: pegar todas as interfaces
snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.2.1.2.2
# v3
snmpwalk -v3 -u admin -a SHA -A "SenhaAuth123" -x AES -X "SenhaPriv456" -l authPriv 192.168.1.1
snmpget — Consultar OID específico
snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.1.5.0
# Saída: SNMPv2-MIB::sysName.0 = STRING: router-core-01
snmpbulkget — Múltiplos OIDs
snmpbulkget -v2c -c public -Cr50 192.168.1.1 1.3.6.1.2.1.2.2.1.2
# Retorna 50 nomes de interface de uma vez
snmpset — Modificar OID
snmpset -v2c -c private 192.168.1.1 1.3.6.1.2.1.1.6.0 s "Novo Datacenter"
# sysLocation = "Novo Datacenter"
snmptranslate — Traduzir OID <-> nome simbólico
snmptranslate 1.3.6.1.2.1.1.5.0
# Saída: SNMPv2-MIB::sysName.0
snmptranslate -Tp 1.3.6.1.2.1
# Mostra a árvore MIB visualmente
8. MIBs Importantes por Fabricante
| Fabricante | MIB | OID raiz |
|---|---|---|
| Cisco (IOS/IOS-XE) | CISCO-SMI | 1.3.6.1.4.1.9 |
| Juniper | JUNIPER-SMI | 1.3.6.1.4.1.2636 |
| HP/Aruba | ML-SMI | 1.3.6.1.4.1.11 |
| Dell | MIB-Dell | 1.3.6.1.4.1.674 |
| MikroTik | MIKROTIK-MIB | 1.3.6.1.4.1.8861 |
| Linux | UCD-SNMP-MIB | 1.3.6.1.4.1.2021 |
| Net-SNMP | NET-SNMP-MIB | 1.3.6.1.4.1.8072 |
Carregar MIBs adicionais no manager (Linux: /usr/share/snmp/mibs/) permite referenciar OIDs por nome simbólico em vez de números.
9. Boas Práticas
Segurança
- Sempre usar SNMPv3 em produção. v1 e v2c só em redes isoladas ou para testes.
- Nunca usar community
publicouprivate. Gerar community aleatória de pelo menos 20 caracteres. - Restringir acesso por ACL: agente só responde a managers autorizados.
- Firewall: filtrar porta 161 e 162 na borda. SNMP exposto à internet é risco grave.
Performance
- Usar GETBULK em vez de GETNEXT em loops.
- Evitar polling de sub-árvores inteiras periodicamente — identificar OIDs específicos.
- Ajustar intervalos de polling: a cada 1-5 min para status, a cada 1-5 min para tráfego, a cada 1h para inventário.
- Habilitar traps para eventos críticos (linkDown, fanFailure) ao invés de pollear.
Troubleshooting
# Testar conectividade básica
snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.1.1.0
# Capturar pacotes SNMP
sudo tcpdump -ni eth0 -vvv 'port 161 or port 162'
# Ver logs do snmpd
journalctl -u snmpd -f
10. Tabela Resumo
| Conceito | Valor |
|---|---|
| RFC v1 | 1157 (obsoleto) |
| RFC v2c | 3416 |
| RFC v3 | 3414 (USM), 7860 (SHA-256) |
| Porta agente | UDP 161 |
| Porta trap | UDP 162 |
| MIB-II | 1.3.6.1.2.1 |
| Enterprises | 1.3.6.1.4.1 |
| Auth v3 | MD5, SHA1, SHA256 |
| Priv v3 | DES, AES-128/192/256 |
| Trap vs Inform | Inform tem ACK |
11. Conclusão
O SNMP é o protocolo de gerenciamento de redes mais difundido em ambientes corporativos e datacenters, presente em praticamente todo equipamento gerenciável. Apesar de sua idade (mais de 30 anos), continua relevante por sua simplicidade e suporte universal. A versão 3 traz a segurança criptográfica necessária para uso em produção — v1 e v2c não devem ser usados em redes expostas. Para engenheiros de redes, dominar o SNMP é essencial: configurar agentes em todos os dispositivos, usar MIBs adequadas para cada fabricante, organizar OIDs estratégicos e integrar com plataformas de monitoramento (Zabbix, Grafana, LibreNMS) permite uma visão consolidada da saúde da infraestrutura. A nova geração de protocolos (gNMI, NETCONF) complementa mas não substitui o SNMP — este permanece como o canivete suíço do monitoring de redes IP.