SNMP – Simple Network Management Protocol

Estou escrevendo este artigo como complemento dos meus estudos sobre este assunto, tendo em vista que ele costuma ser cobrado em provas de concursos, ao final do artigo pretendo colocar algumas questões de provas de concursos anteriores que já abordaram o tema, também vou disponibilizar para download o material que me serviu de referencia.

Definição do Protocolo SNMP

SNMP significa Simple Network Management Protocol que pode ser traduzido por “Protocolo Simples de Gerência de Rede”. É um protocolo de gerência típica de redes UDP, da camada de aplicação, que facilita o intercâmbio de informações entre os dispositivos de rede, como placas e switches
O SNMP possibilita aos administradores de rede gerenciar o desempenho da rede, encontrar e resolver seus eventuais problemas, e fornecer informações para o planejamento de sua expansão, dentre outras.

O software de gerência de redes não segue o modelo cliente-servidor convencional pois para as operações GET e SET a estação de gerenciamento se comporta como cliente e o dispositivo de rede a ser analisado ou monitorado se comporta como servidor, enquanto que na operação TRAP ocorre o oposto, pois no envio de alarmes é o dispositivo gerenciado que toma iniciativa da comunicação. Por conta disso, os sistemas de gerência de redes evitam os termos “cliente” e “servidor” e optam por usar “Gerente” para a aplicação que roda na estação de gerenciamento e “Agente” para a aplicação que roda no dispositivo de rede.

O protocolo de gerenciamento é visto sob o paradigma de observação remota, isto é, ele não transporta simplesmente operações de gerenciamento que devem ser executadas pelos objetos gerenciados; cada objeto é visto como uma coleção de variáveis (MIB – Management Information Base), cujo valor pode ser lido ou alterado, possibilitando, assim, a monitoração e o controle de cada elemento da rede. O agente, quando recebe a solicitação do gerente, encaminha as informações ou altera valores das variáveis que representam os objetos gerenciados. O agente pode, ainda, avisar o gerente da ocorrência de algum evento não-previsto, encaminhando esses avisos na forma de traps.

Detalhes do Protocolo

As requisições no Agente são recebidas na porta UDP 161, para realizar solicitações a porta 161 do Agente, o Gerente pode utilizar qualquer uma de suas portas que esteja disponível. A resposta do Agente ao Gerente será feita pela porta que o Gerente utilizou para fazer a solicitação. As notificações (Traps e InformRequests) que o Gerente receber serão feitas na porta 162, e o Agente para fazer isso pode usar qualquer porta disponível

SNMPv1 especifica as cinco principais PDUs (Protocol Data Units). Dois outros PDUs, GetBulkRequest e InformRequest foram adicionadas no SNMPv2 e foram adotadas também no SNMPv3.

Todas as PDUs do protocolo SNMP são construídas seguindo o padrão abaixo:

Formato das PDUs

A seguir irei detalhar as sete Unidades de Dados do Protocolo (PDU):

  • GetRequest:
  • Este PDU é uma requisição do Gerente para o Agente, solicitando o valor de uma variável ou de uma lista de variáveis, a lista de variáveis é especificada no corpo da requisição. A reposta do Agente é retornada num objeto Response sendo que os valores precisam ser retornados numa operação atômica pelo Agente.
  • SetRequest:
  • É uma requisição do Gerente para o Agente solicitando a alteração de uma variável ou lista de variáveis. A lista de variáveis é especificada no corpo da requisição. Todas as alterações especificadas são feitas como uma operação atomica pelo Agente. Após a alteração o Agente envia um Response para o Gerente com os novos valores das variáveis.
  • GetNextRequest:
  • Esta é uma requisição do Gerente para o Agente que permite ao Gerente identificar as variáveis disponiveis no Agente e seus valores. Retorna um Response com a lista de variáveis ordenadas por ordem alfabética armazenadas na MIB. A MIB inteira de uma Agente pode ser percorrida pela aplicação de forma iterativa utilizando GetNextRequest começando pelo OID 0 (Object Identifiers Uniquely).
  • GetBulkRequest:
  • Este é uma versão otimizada do GetNextRequest. Num pedido é possível realizar varias solicitações de GetNextRequest. Retorna apenas um Response com os valores das várias variáveis solicitadas. Este PDU foi introduzido no SNMPv2.
  • Response:
  • Utilizado pelo Agente para retornar ao Gerente as variáveis solicitadas pelos PDUs: GetRequest, SetRequest, GetNextRequest, GetBulkRequest e InformRequest. Erros são relatados nos campos error-status e error-index desta PDU. Embora seja usado por gets e sets este PDU foi chamado de GetResponse no SNMPv1.
  • Trap:
  • Este é uma notificação assincrona do Agente para o Gerente. Nela inclui o corrente valor de sysUpTime, o OID que identifica o tipo de Trap (Interrupção) e opcionalmente os valores de uma lista de variáveis. O Endereçamento de destino dos Traps é determinada em um gerenciador de aplicativos especifico geralmente através da configuração de variáveis no MIB. O formato do da mensagem de Trap foi alterada no SNMPv2 e esta PDU foi renomeada para SNMPv2-Trap
  • InformRequest:
  • Esta é uma notificação assincrona de Gerente para Gerente. Esta PDU usa o mesmo formato da versão SNMPv2 do Trap. Notificações de Gerente para Gerente na versão SNMPv1 era possível utilizando o Trap, como o SNMP geralmente usa UDP para a envio das mensagens onde a entrega não é assegurada e a perda de pacotes não é notificada, a entrega do Trap não é garantida. O InformRequest corrige essa falha enviando de volta uma notificação do recebimento. O receptor utiliza um Response replicando toda a informação recebida no InformRequest. Esta PDU foi introduzida no SNMPv2.
    O Gerente

    O Gerente é o software que permite a obtenção e o envio de informações de gerenciamento junto aos mecanismos gerenciados, mediante comunicação com um ou mais Agentes.
    As informações de gerenciamento podem ser obtidas com o uso de requisições efetuadas pelo Gerente ao Agente, como também, mediante envio automático disparado pelo Agente a um determinado Gerente. Tipicamente o Gerente está presente em uma estação de gerenciamento de rede.

    Desta forma o Gerente da rede é responsável pelo monitoramento e controle dos sistemas de hardware e software que compõem a rede, e o seu trabalho consiste em detectar e corrigir problemas que causem ineficiência (ou impossibilidade) na comunicação e eliminar as condições que poderão levar a que o problema volte a surgir.

    O Agente

    O Agente é um processo que executa na maquina gerenciada, responsável pela manutanção das informações de gerência da maquina. Entre as funções do Agente as principais delas são: atender as requisições enviadas pelo Gerente e enviar automaticamente informações de gerenciamento ao Gerente quando previamente programado.

    Para realizar o monitoramento das informações da maquina o Agente utiliza-se de chamadas de sistema, e para realizar o controle das informações da maquina utiliza-se de RPC (Remote Procedure Call).

    Caso ocorra alguma exceção na maquina gerenciada o Agente fica responsável de notificar o Gerente através de uma interrupção TRAP. Também cabe ao Agente efetuar a interface entre os diferentes mecanismos usados na instrumentação das funcionalidades de gerenciamento inseridos em um determinado dispositivo gerenciado.

    MIB (Management Information Base)

    As informações que se encontram nos nodos agentes ficam organizadas em bases de informações de gerência chamadas Management Information Base (MIB) que são definidas em uma estrutura chamada Structure of Management Information (SMI). A SMI é um conjunto de documentos que definem: Forma de identificação e agrupamento das informações, sintaxes permitidas e tipos de dados permitidos.

    Os objetos de uma MIB são especificados de acordo com a ASN.1 (Abstract Syntax Notation One). A notação sintática abstrata é uma forma de descrição abstrata dos dados com o objetivo de não se levar em consideração a estrutura e restrições do equipamento no qual está sendo implementada. Para cada objeto são definidos: nome, identificador, sintaxe, definição e acesso. As instâncias do objeto são chamadas de variáveis.

    O Object Name é o nome do objeto, é composto por uma string de texto curto. O Object Identifier é o identificador do objeto, é formado por números que são separados por pontos.

    A Sintax, sintaxe do objeto, descreve o formato, ou o valor da informação. Ela pode ser: Uma sintaxe do tipo simples que pode ser um inteiro, uma string de octetos, um Object Identifier ou nulo; pode ser também uma sintaxe de aplicação podendo ser um endereço de rede, um contador, uma
    medida, um intervalo de tempo ou incompreensível.
    A definição é uma descrição textual do objeto.
    O acesso é o tipo de controle que se pode ter sobre o objeto, podendo ser: somente leitura, leitura e escrita ou não acessível.

    SNMPv1

    A versão SNMPv1 é a implementação inicial do protocolo SNMP. O SNMPv1 opera sobre protocolos como User Datagram Protocol (UDP), Internet Protocol (IP), OSI Connectionless Network Service (CLNS), AppleTalk Datagram-Delivery Protocol (DDP) e Novell Internet Packet Exchange (IPX). O SNMPv1 é largamente utilizado e de fato é o protocolo de gerenciamento de redes da internet.

    A primeira versão do protocolo SNMP foi criticada pela falta de segurança, a autenticação dos clientes é realizada apenas pela “community string”, que é uma espécie de senha, transmitida em texto puro pela rede. O SNMPv1 foi aceito pela comunidade nos com base na idéia que seria um protocolo provisório necessário para a implementação em grande escalada internet.

    SNMPv2

    A versão SNMPv2 inclui melhoria nas áreas de performance, segurança, confidencialidade e na comunicação entre Gerentes. Foi introduzido o GetBulkRequest, uma alternativa ao uso iterativo do GetNextRequest para recuperar grandes quantidades de dados de gerenciamento em uma unica solicitação. No entanto a parte de segurança implementado foi considerado muito complexo e por isso não amplamente aceita.

    SNMPv3

    O SNMPv3 não faz alterações no protocolo, mas acrescenta segurança criptográfica e configuração remota. A segurança sempre foi a maior fraqueza do protocolo, nas versões 1 e 2 a senha era a “community string” que era transmitida no formato de texto puro pela rede. Na versão SNMPv3 as mensagens contem os parâmetros de segurança que são codificados como uma sequência de octeto. O significado destes parâmetros de segurança dependem do modelo utilizado.

    As funcionalidades de segurança implementadas no SNMPv3 são as seguintes:

  • Confidencialidade: Os pacotes são criptografados para evitar espionagem dos dados transmitidos.
  • Integridade: Mensagem de integridade para garantir que o pacote não foi violado durante o transito, e também inclui opcionalmente um mecanismo de proteção com um pacote de resposta.
  • Autenticação: Verificar se a mensagem é de uma fonte válida.
  • Provas de Concursos

    CESPE – STM 2010 – Cargo 14
    103) O protocolo SNMP inclui mecanismos de segurança para a cifração e verificação de integridade das mensagens.
    Resposta: Errado
    O protocolo não implementa estas opções na sua versão 1.

    104) A SMI define a linguagem ASN.1 para especificar módulos objetos e notificações, que são os objetos gerenciados que residem na MIB
    Resposta: Errado

    Quadrix – Cerpro 2011 – Rede de Telecomunicações
    33) O crescimento do uso de redes de computadores exigiu a aplicação de métodos e softwares para o gerenciamento das redes. As empresas desenvolveram departamentos de gerenciamento de redes, também chamados de NOC (Network Operations Center). Sobre o assunto, avalie as afirmações seguir.
    I – No gerenciamento de redes, os equipamentos gerenciados devem suportar o protocolo SMTP.
    II – Apenas computadores podem ser gerenciados.
    III – Os roteadores fornecem informações sobre pacotes recebidos, transmitidos, perdidos, fragmentados.
    IV – SNMP é um dos protocolos importantes para o gerenciamento de redes
    V – Entre informações gerenciáveis, além de uso de largura de banda, percentual de utilização de processadores e estatísticas sobre pacotes de rede, também podemos gerenciar a temperatura de alguns equipamentos.
    Está correto o que afirma em:
    (A) I, II e III apenas.
    (B) III e IV apenas
    (C) todas
    (D) I, III, IV e V apenas
    (E) III, IV e V apenas

    Gabarito: E
    I – o protocolo certo é SNMP
    II – Não, roteadores e outros dispositivos também são gerenciados

    44) São “comandos” do SNMP (Simple Network Management Protocol):
    (A) nslookup, ping, tracert
    (B) netbios, MIB, netstat
    (C) get, getnext, walk
    (D) setup, config, login e logout
    (E) put, get, request
    Gabarito: C
    Essa resposta é questionável pois o walk não é uma estrutura do protocolo SNMP, mas um comando utilizado por softwares que implementam o SNMP, e softwares não faziam parte do edital do concurso.

    Um comentário

    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *