Monitoramento Seguro de Rede com SNMPv3 em Linux

CompTIABeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como implementar monitoramento de rede seguro em um sistema Linux usando o Simple Network Management Protocol versão 3 (SNMPv3). Você se concentrará na configuração do agente SNMP (snmpd) para impor autenticação e criptografia fortes, garantindo que os dados de gerenciamento sejam protegidos em trânsito e superando as inseguranças das versões mais antigas do SNMP.

O processo começa com a instalação das ferramentas necessárias do agente e cliente SNMP em seu sistema. Em seguida, você criará um usuário SNMPv3 dedicado com credenciais seguras diretamente no arquivo de configuração. Finalmente, você usará a ferramenta de linha de comando snmpwalk para realizar consultas seguras contra seu agente configurado, verificando sua configuração e explorando como recuperar informações específicas do sistema usando Object Identifiers (OIDs).

Instalar Agente SNMP e Ferramentas Cliente

Nesta etapa, você instalará os componentes principais necessários para o monitoramento de rede usando o Simple Network Management Protocol (SNMP). Instalaremos tanto o agente SNMP, que é executado no dispositivo a ser monitorado, quanto as ferramentas de cliente, que são usadas para consultar o agente.

Primeiro, é uma prática recomendada atualizar a lista de pacotes do seu sistema. Isso garante que você está obtendo as versões mais recentes e seguras do software disponíveis nos repositórios.

Execute o seguinte comando para atualizar o índice de pacotes em seu sistema:

sudo apt update

Você verá a saída mostrando as listas de pacotes sendo buscadas nos repositórios do 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.

Agora que sua lista de pacotes está atualizada, você pode instalar o agente SNMP (daemon) e as utilidades de cliente. O agente é fornecido pelo pacote snmpd, e as ferramentas de cliente (como snmpwalk, snmpget) estão no pacote snmp.

Execute o comando abaixo para instalar ambos os pacotes. O sinalizador -y confirma automaticamente a instalação, para que você não seja solicitado.

sudo apt install snmpd snmp -y

O processo de instalação baixará e configurará os arquivos necessários. Assim que for concluído, o serviço snmpd, que é o daemon do agente, deverá ser iniciado automaticamente.

Para confirmar que o agente SNMP está em execução corretamente, você pode verificar o status do serviço snmpd usando systemctl.

sudo systemctl status snmpd

A saída deve indicar que o serviço está active (running). Isso confirma que o agente SNMP está pronto para receber requisições.

● 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

Se você vir a tela de status, pode pressionar q no seu teclado para sair e retornar ao prompt de comando.

Com o agente em execução e as ferramentas de cliente instaladas, seu ambiente está agora preparado para a configuração e comunicação SNMP.

Criar um Usuário SNMPv3 Seguro em snmpd.conf

Nesta etapa, você configurará o agente SNMP (snmpd) para usar o SNMPv3, que fornece recursos de segurança essenciais. Ao contrário das versões mais antigas, o SNMPv3 suporta autenticação (para verificar a identidade do remetente) e privacidade (para criptografar os dados). Você conseguirá isso criando um novo usuário diretamente no arquivo de configuração do agente, /etc/snmp/snmpd.conf.

Antes de fazer quaisquer alterações, é uma prática recomendada crítica criar um backup do arquivo de configuração original. Isso permite que você o restaure facilmente se algo der errado.

Execute o seguinte comando para copiar o arquivo de configuração:

sudo cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak

Agora, você editará o arquivo de configuração principal /etc/snmp/snmpd.conf para adicionar um novo usuário SNMPv3. Usaremos o editor de texto nano para esta tarefa.

Execute este comando para abrir o arquivo com permissões sudo:

sudo nano /etc/snmp/snmpd.conf

Role até o final do arquivo e adicione as seguintes linhas. Essas linhas definem um novo usuário chamado labexuser com protocolos de autenticação (SHA) e privacidade (AES) fortes.

  • createUser: Esta diretiva cria o usuário SNMPv3.
    • labexuser: O nome de usuário para seu usuário SNMPv3.
    • SHA: O protocolo de autenticação (mais seguro que MD5).
    • AuthPassLabEx: A frase secreta de autenticação (deve ter pelo menos 8 caracteres).
    • AES: O protocolo de privacidade (criptografia) (mais seguro que DES).
    • PrivPassLabEx: A frase secreta de privacidade (deve ter pelo menos 8 caracteres).
  • rwuser: Esta diretiva concede ao usuário acesso de leitura-escrita a toda a árvore OID ao usar o nível de segurança priv (autenticação e privacidade).

Copie e cole o seguinte bloco de configuração no final do arquivo:

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

Após adicionar o texto, salve o arquivo e saia do nano pressionando Ctrl+O, depois Enter para confirmar o nome do arquivo e, finalmente, Ctrl+X para sair.

Você agora configurou com sucesso um usuário seguro para comunicação SNMPv3. Na próxima etapa, você reiniciará o serviço para aplicar essas alterações.

Reiniciar e Verificar o Serviço snmpd

Nesta etapa, você aplicará a nova configuração de usuário que adicionou na etapa anterior. Sempre que você modificar o arquivo de configuração de um serviço em execução como o snmpd, as alterações não são aplicadas automaticamente. Você deve reiniciar o serviço para que ele releia seu arquivo de configuração e carregue as novas configurações.

Primeiro, use o comando systemctl para reiniciar o serviço snmpd. Isso interromperá o processo atual e iniciará um novo com a configuração atualizada que inclui seu labexuser.

sudo systemctl restart snmpd

Este comando normalmente não produz nenhuma saída se for executado com sucesso.

Em seguida, é crucial verificar se o serviço reiniciou sem problemas. Se houvesse erros de sintaxe em seu arquivo /etc/snmp/snmpd.conf, o serviço pode falhar ao iniciar. Você pode verificar seu status atual para confirmar que ele está em execução corretamente.

sudo systemctl status snmpd

Você deverá ver uma saída confirmando que o serviço está active (running). Preste atenção ao carimbo de data/hora, que deve mostrar que o serviço foi iniciado muito recentemente.

● 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

Lembre-se de pressionar q para sair da visualização de status e retornar ao terminal.

Ver o status active (running) confirma que suas alterações de configuração foram válidas e o agente SNMP agora está em execução com o novo labexuser pronto para comunicação segura.

Realizar Consultas Seguras com Ferramentas SNMPv3

Nesta etapa, você usará ferramentas cliente SNMP para realizar consultas seguras contra o agente SNMP em execução em sua máquina local. Você usará as credenciais labexuser que configurou em snmpd.conf para testar a comunicação segura SNMPv3. Este é o momento de ver sua configuração segura em ação.

Comandos SNMP para SNMPv3 exigem vários sinalizadores específicos para lidar com autenticação e privacidade. Aqui está uma análise dos parâmetros que você usará:

  • -v 3: Especifica que você está usando a versão 3 do SNMP.
  • -l authPriv: Define o nível de segurança como authPriv, o que significa que a comunicação requer autenticação e privacidade (criptografia). Este é o nível de segurança mais alto.
  • -u labexuser: Especifica o nome de usuário, que é o labexuser que você criou.
  • -a SHA: Define o protocolo de autenticação como SHA. Isso deve corresponder ao protocolo que você definiu em snmpd.conf.
  • -A "AuthPassLabEx": Fornece a frase secreta de autenticação.
  • -x AES: Define o protocolo de privacidade (criptografia) como AES. Isso também deve corresponder à sua configuração.
  • -X "PrivPassLabEx": Fornece a frase secreta de privacidade.
  • localhost: O host de destino onde o agente SNMP está em execução. Neste caso, é sua própria máquina.

Primeiro, vamos testar a conexão percorrendo toda a árvore do sistema. O comando snmpwalk percorre árvores OID e retorna todos os objetos dentro de um ramo.

Entendendo a Estrutura OID: Identificadores de Objeto (OIDs) usam um sistema numérico hierárquico. O OID 1.3.6.1.2.1.1 representa o grupo "system" no MIB-II padrão do SNMP:

  • 1.3.6.1 = internet
  • 1.3.6.1.2 = mgmt (gerenciamento)
  • 1.3.6.1.2.1 = mib-2 (MIB padrão)
  • 1.3.6.1.2.1.1 = grupo system (contém informações básicas do sistema)

Execute o seguinte comando para percorrer a árvore MIB do sistema:

snmpwalk -v 3 -l authPriv -u labexuser -a SHA -A "AuthPassLabEx" -x AES -X "PrivPassLabEx" localhost 1.3.6.1.2.1.1

Se o comando for bem-sucedido, você verá vários OIDs relacionados ao sistema e seus valores. Isso confirma que seu gerenciador SNMP autenticou com sucesso com o agente (snmpd) e a consulta foi realizada em um canal seguro e criptografado.

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
...

Uma resposta bem-sucedida prova que toda a sua configuração SNMPv3 está funcionando corretamente. Se você tivesse usado credenciais ou protocolos incorretos, o comando teria falhado com um erro de autenticação.

Consultar OIDs Específicos usando snmpget

Nesta etapa, você aprenderá a recuperar informações específicas do sistema usando o comando snmpget. Enquanto snmpwalk percorre árvores OID inteiras, snmpget é projetado para consultar Identificadores de Objeto (OIDs) específicos para recuperação precisa de informações.

Agora que você tem uma configuração SNMPv3 funcional e segura, pode consultar informações específicas do sistema. Um OID aponta unicamente para uma informação gerenciada dentro da Base de Informações de Gerenciamento (MIB) do dispositivo.

Hierarquia OID Explicada: A árvore OID do SNMP segue a hierarquia padrão internacional ISO/IEC de identificadores de objeto:

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)

Isso explica por que as informações do sistema começam com 1.3.6.1.2.1.1 - é o caminho padronizado para o grupo do sistema na MIB-II.

Vamos consultar um OID específico e comumente usado: a descrição do sistema. Este OID recupera uma descrição textual básica do dispositivo gerenciado.

Entendendo OIDs Específicos: Dentro do grupo do sistema (1.3.6.1.2.1.1), cada informação possui um sub-identificador específico:

  • 1.3.6.1.2.1.1.1.0 = sysDescr.0 (descrição do sistema)
  • 1.3.6.1.2.1.1.3.0 = sysUpTime.0 (tempo de atividade do sistema)
  • 1.3.6.1.2.1.1.4.0 = sysContact.0 (contato do sistema)
  • 1.3.6.1.2.1.1.5.0 = sysName.0 (nome do sistema)
  • 1.3.6.1.2.1.1.6.0 = sysLocation.0 (localização do sistema)

O .0 no final indica que este é um valor escalar (instância única), não uma entrada de tabela.

Execute o seguinte comando para consultar a descrição do 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

A saída mostrará a descrição do sistema, confirmando que sua autenticação e privacidade SNMPv3 estão funcionando corretamente:

iso.3.6.1.2.1.1.1.0 = STRING: "Linux iZrj9ixg5sv0oem6yeu6aqZ 5.15.0-56-generic ..."

Em seguida, vamos consultar o tempo de atividade do sistema usando o OID numérico 1.3.6.1.2.1.1.3.0 (que corresponde a sysUpTime.0). Este OID relata o tempo desde que a parte de gerenciamento de rede do sistema foi reinicializada pela última vez:

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

A saída mostrará o tempo de atividade em um formato "Timeticks", que representa centésimos de segundo, juntamente com um formato legível por humanos:

iso.3.6.1.2.1.1.3.0 = Timeticks: (48642) 0:08:06.42

Finalmente, você pode consultar vários OIDs em um único comando listando-os no final. Vamos recuperar as informações de descrição e contato do sistema juntas usando seus OIDs numéricos.

Por que usar OIDs Numéricos? Em alguns ambientes, nomes simbólicos como sysDescr.0 podem não ser reconhecidos porque:

  • Arquivos MIB não são carregados ou instalados
  • A configuração do cliente SNMP não inclui as definições MIB necessárias
  • Usar OIDs numéricos garante compatibilidade entre diferentes sistemas

Execute este comando para consultar vários OIDs simultaneamente:

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

Isso retornará ambos os valores em uma única resposta:

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>"

Ao consultar com sucesso esses OIDs específicos, você demonstrou a capacidade principal do SNMP para monitoramento seguro de rede. Agora você pode recuperar dados operacionais precisos de seus dispositivos de maneira segura, autenticada e criptografada.

Resumo

Neste laboratório, você aprendeu a implementar monitoramento seguro de rede em um sistema Linux usando SNMPv3. Você começou instalando os componentes principais, incluindo o agente SNMP (snmpd) e as ferramentas cliente (snmp), após atualizar o repositório de pacotes do sistema. O foco principal foi a segurança, que você configurou criando um novo usuário SNMPv3 no arquivo snmpd.conf, completo com protocolos fortes de autenticação e privacidade (criptografia) para proteger os dados em trânsito.

Após configurar o usuário seguro, você reiniciou o serviço snmpd para aplicar a nova configuração e verificou se ele estava em execução corretamente. Em seguida, você usou ferramentas cliente SNMP para realizar consultas seguras contra o agente, autenticando-se com as credenciais do usuário SNMPv3 que você criou. Você praticou o uso de snmpwalk para percorrer ramos inteiros da árvore MIB e snmpget para recuperar Identificadores de Objeto (OIDs) específicos. Isso demonstrou como monitorar com segurança informações do sistema, como descrição do sistema, tempo de atividade e detalhes de contato, usando tanto percorridos abrangentes da árvore quanto consultas individuais precisas.