SNMPv3
Roger Al-Alam Krolow
roger@inf.ufrgs.br

 Resumo
 Introdução
 Visão geral do SNMPv3

 Segurança no SNMPv3  Considerações Finais
 Referências Bibliográficas  

Resumo

Este trabalho apresenta de forma resumida os principais aspectos da terceira versão do protocolo SNMP. Na verdade o SNMPv3 estende o SNMPv2 especificando aspectos de segurança e administração que foram deixados de lado neste último. Após uma visão geral do protocolo, a segurança é explicada em maiores detalhes. 

Introdução

A versão 3 do protocolo SNMP é derivada das duas especificações anteriores da arquitetura de gerenciamento padrão para a Internet (SNMPv1 e SNMPv2). Estas três especificações utilizam os mesmos conceitos e componentes e, portanto, possuem a mesma arquitetura.

Quando a primeira versão do protocolo SNMP foi desenvolvida, sua composição modular objetivava permitir sua migração com pouco esforço para o padrão de gerenciamento OSI (CMIP) [SNM 98a]. No entanto, durante o decorrer dos anos, esta estratégia demonstrou ter sido a decisão correta pelo motivo errado. Pois ao invés de incentivar o encaminhamento para a plataforma CMIP, a modularidade presente no protocolo permitiu a fácil criação e adaptação de versões mais recentes deste à base de gerenciamento já instalada.

Na verdade a principal contribuição do SNMPv3 é estender o SNMPv2 nas questões de segurança e administração [SNM 98a], conforme os ítens abaixo:


Visão geral do SNMPv3

A especificação do SNMPv3 é constituída de módulos e composta de vários documentos. Os escritores pretendem que os documentos possam ser revisados e alterados de maneira independente.

Sempre que possível, procurou-se reutilizar conceitos já definidos para versões anteriores do protocolo (SNMPv2) de maneira a evitar desgastes em redefinições desnecessárias.

Os documentos que descrevem a estrutura de gerenciamento SNMPv3 seguem a mesma arquitetura das versões anteriores e podem ser organizados e quatro categorias [SNM 98a]:

As três primeiras categorias foram incorporadas do SNMPv2. A quarta categoria foi desenvolvida para o SNMPv3 utilizando vários conceitos já presentes na versão SNMPv2 mas que foram deixadas de lado por terem sido consideradas de pouca relevância na ocasião.

Linguagem de definição de dados

Esta especificação, baseada no RFC 1902, define o SMI (Structure of Management Information) que por sua vez define os tipos de dados, modelos de objetos e as regras para escrever e revisar módulos MIB (Management Information Base). Especificações relacionadas são: RFC 1903 e RFC 1904.

Módulos MIB

Módulos MIB contém definições de objetos e também podem conter definições de notificações. Ou seja, a MIB determina as informações de gerenciamento de interesse para o controle do sistema.

De modo geral, informações de gerenciamento definidas em uma MIB podem ser utilizadas com qualquer versão do protocolo. Por exemplo, MIBs definidas de acordo com as especificações da SMI do protocolo SNMPv1 são compatíveis com as definições da arquitetura SNMPv3 e podem ser utilizadas em ambas as plataformas. E vice-versa, com apenas uma exceção. O protocolo SNMPv1 não consegue manipular o tipo de dado Counter64 definido no SNMPv2.

Operações de protocolo e mapeamentos de transporte

Estas especificações são incorporadas do SNMPv2. Estas especificações são encontradas em RFC 1905 e RFC 1906.

Segurança e administração

Os documentos que atualmente descrevem esta parte da especificação são as RFCs de 2271 a 2275, que serão resumidas a seguir.

Arquitetura / Segurança e Administração

A RFC 2271 define aspectos gerais da arquitetura SNMP Management Framework. Mas descreve em detalhes aspectos relacionados com segurança e administração. Define vários termos utilizados através da arquitetura SNMPv3: O documento contém um pequeno módulo MIB que é implementado por todos os authoritative engines SNMPv3. Um authoritative engine é o receptor da mensagem, se esta exige uma resposta (por exemplo um get ou set) ou o remetente, se a mensagem não necessita de resposta.

Processamento e envio de Mensagens (MPD)

O processamento e envio de mensagens (Message Processing and Dispatching) é tratado no RFC 2272. Define procedimentos para o envio de mensagem SNMP de múltiplas versões para os processadores de mensagens apropriados, e também o envio de PDUs (Protocol Data Units) para aplicações SNMP. Este documento também descreve o modelo de processamento de mensagens do protocolo. Um engine SNMP deve suportar pelo menos um modelo de processamento de mensagens, mas também pode suportar mais de um. Por exemplo para fornecer suporte a SNMPv3 e SNMPv1.

Aplicações

Existem cinco tipos de aplicações quer podem ser associadas com um engine SNMP: geradores de comandos, respondedores de comandos, originadores de notificação, recebedores de notificação e transmissores de proxy. Estas definições encontram-se no RFC 2273.

Modelo de Segurança baseado no usuário (USM)

O RFC 2274 (User-based Security Model) especifica a segurança no nível de mensagens. Descreve os quatro principais ataques que são defendidos pelo modelo de segurança baseado no usuário: São utilizados os algoritmos MD5 (Message Digest 5) e SHA (Secure Hash Algoritm) para cálculo de hash com chave de maneira a defender de ataques de modificação de dados, fornecer autenticação de origem dos dados, e defender de ataques de mascaramento.

O USM utiliza indicadores de tempo monotonicamente incrementados e fracamente sincronizados para a defesa contra certos tipos de ataques que modificam o fluxo de mensagens. São especificados mecanismos de sincronização automática de clock baseados no protocolo sem dependência de fontes de temporização exterior.

Para a proteção contra espionagem , o USM utiliza o DES (Data Encryption Standard) no modo CBC (Cipher Block Chaining).

Este documento também inclui uma MIB para monitoramento remoto e gerenciamento de parâmetros da configuração do USM, incluindo a distribuição e o gerenciamento de chaves.

Uma entidade de protocolo pode fornecer suporte simultâneo para múltiplos modelos de segurança assim como múltiplos protocolos de privacidade e autenticação Todos os protocolos utilizados pelo USM são baseados em criptografia simétrica (mecanismos de chave privada). A arquitetura SNMPv3 permite utilizar mecanismos de chave pública no futuro.

Controle de acesso baseado em visão (VACM)

Descrito no RFC 2275, o VACM (View-based Access Control Model) define elementos de procedimento para controlar o acesso a informações de gerenciamento. Também inclui uma MIB para gerenciamento remoto de parâmetros de configuração para o VACM. 

Segurança no SNMPv3

Os mecanismos para implementar segurança no SNMP são divididos entre dois subsistemas [BLU 97]: o Módulo de Segurança e o Módulo de Controle de Acesso.

A arquitetura SNMP utiliza o termo principal (mandante), em benefício do qual os serviços são fornecidos. Um principal pode ser um indivíduo, um conjunto de indivíduos, uma aplicação, um conjunto de aplicações ou combinações dos casos anteriores.

Múltiplos Modelos de Segurança

Os conceitos de segurança evoluem com o passar do tempo. Isto não se aplica apenas a algoritmos de criptografia como também a todo o mecanismo de segurança utilizado. Assim, o protocolo SNMP suporta diversos modelos de segurança. Permite ainda que diferentes modelos de segurança coexistam na mesma entidade. As mensagens carregam um campo no cabeçalho que indica o modelo de segurança utilizado.

Para garantir a interoperabilidade, existe um modelo de segurança que deve ser implementado por qualquer entidade compatível com SNMPv3. É chamado de User-based Security Model (USM) e é identificado pelo número 3.

USM

Os ataques que devem ser defendidos pelo USM são: Foi decidido que análise de tráfego e negação de serviço (DOS – Denial of Service) não seriam abordados por dois motivos: primeiro, porque seria impossível e em segundo lugar porque a ameaça não é significante.

Identificação

No USM, um principal é representado por um user e identificado por um userName. O papel do user é guardar sua senha e informações relacionadas a segurança, como o algoritmo de criptografia a ser utilizado.

Entidades SNMP são identificadas por seu snmpEngineID. Estas entidades podem ser agentes tradicionais executando em dispositivos gerenciados, estações de gerenciamento de rede, gerentes intermediários, etc. O userName é utilizado para identificação e autorização enquanto snmpEngineID é necessário para identificar o alvo de uma operação SNMP.

Quando dois engines SNMP se comunicam, um é designado para ser o engine de autenticação.

Senhas

Cada usuário possui duas senhas)que são octetos de strings. Uma senha é utilizada para autenticação e outra para criptografia.

Chaves e senhas

Os usuários utilizam senhas em formato ASCII. Para utilizar esta senha, o USM concatena esta string com ela mesma até formar um texto de 1 MB e então realiza um hash desse texto, resultando na chave que será utilizada pelo sistema.

Localização das chaves

Para utilizar o sistema, a senha do usuário ou a chave obtida do hash dessa senha é composta com o identificador público de um engine remoto. O resultado dessa composição é submetido a uma função criptográfica forte de uma via. O resultado somente faz sentido para este engine que desse modo pode realizar a autenticação do usuário.

Autenticação

O objetivo da autenticação do USM é determinar de que usuário a mensagem é originada, para qual engine é destinada, se foi alterada no caminho e, com um menor grau de certeza, se esta mensagem é original ou uma repetição indevida de uma mensagem anterior.

Integridade de dados e autenticação

A integridade de dados e a autenticação da mensagem são realizados através da utilização de fingerprints (impressões digitais) das mensagens. Esses fingerprints são impossíveis de serem forjados devido à utilização do método HMAC (Hash Message Authentication Code).

Para o cálculo do hash pode ser utilizado tanto MD5 quanto SHA-1.

Estampas de tempo

O USM utiliza relógios sincronizados para garantir a atualidade das mensagens. Toda a mensagem carrega um timestamp que é examinado após o recebimento. Se a diferença entre o timestamp e o relógio local for muito grande, a mensagem é descartada por ser antiga. O problema consiste em garantir o sincronismo dos relógios.

Clock Autoritativo

Na comunicação entre dois engines, um é eleito como autoritativo e seu clock é aceito como correto. O engine não autoritativo deve sincronizar seu clock de acordo com este, através de mensagens get para obter o valor do correto de clock.

Janela de oportunidade

É determinado um tempo limite para que as mensagens trafeguem na rede. Este tempo limite fornece uma janela de tempo em que a mensagem pode ser considerada válida. O USM utiliza o tempo de 150 segundos como janela de validade. Esta janela não é configurável.

Se durante o tempo de 150 segundos uma mensagem aparecer duas vezes, ele deve ser tratada normalmente como qualquer mensagem duplicada pela rede. A partir desse tempo, a mensagem é simplesmente descartada como antiga.

Privacidade

Assim como nas versões anteriores do protocolo SNMP, a utilização de privacidade é opcional. Se o engine suporta privacidade, ele deve utilizar o algoritmo DES (Data Encryption Standard). No entanto outros algoritmos também pode ser utilizados.

As chaves são obtidas, localizadas, mantidas e atualizadas da mesma maneira que as chaves de autenticação. 


Considerações Finais

O protocolo SNMP tem evoluído desde sua criação e hoje encontra-se em sua terceira versão. As principais características dessa versão relacionam-se a segurança e administração.

As questões referentes a segurança foram planejadas desde as primeiras versões do protocolo. Principalmente no SNMPv2. Mas sempre foram deixadas de lado por necessitarem de definições mais rigorosas e que deveriam possuir consenso da comunidade, o que aparentemente foi conseguido apenas agora.

Especificando modelos de segurança, o SNMPv3 ataca um dos maiores problemas do SNMP, segundo críticos do protocolo.

Entre as empresas que apoiam o novo protocolo encontram-se Advent Network Management, Inc., Bay Networks, BMC Software, Cisco Systems, Hewlett-Packard, IBM, InterWorking Labs, Liebert Corporation, SNMP Research International, Tivoli, University of Quebec in Montreal.

No entanto as RFCs referentes ao protocolo apenas adquiriram status de draft durante este ano.

Portanto deve-se esperar que mais fabricantes apoiem esse padrão e adeqüem seus produtos em um futuro próximo. 


Referências Bibliográficas

[BLU 97] BLUMENTHAL, U. & WIJNEN, B. Security Features of SNMPv3 em The Simple Times. Volume 5. Número 1. Dezembro de 1997. Disponível em: http://www.simple-times.org/pub/simple-times/issues/5-1.html#announcements. Acessado em 18/12/98.

[SNM 98a] SNMP RESEARCH INTERNATIONAL. SNMPv3 Introduction to SNMPv3. Abril de 1998. Disponível em: http://www.snmp.org/v3hotspot/white.html. Acessado em 18/12/98.

[SNM 98b] SNMP RESEARCH INTERNATIONAL. SNMPv3 HotSpot Information. Abril de 1998. Disponível em: http://www.snmp.org/v3hotspot/index.html. Acessado em 18/12/98.
 

 

Universidade Federal do Rio Grande do Sul
Instituto de Informática
PPGCC
Disciplina de Gerência de Redes de Computadores
Profa. Dra. Liane Tarouco
Dezembro de 1998