SNMP Baseado em slides gentilmente cedidos pelo Prof. João Henrique Kleinschmidt da UFABC

Preview:

Citation preview

SNMPBaseado em slides gentilmente cedidos pelo Prof. João Henrique Kleinschmidt da UFABC.

2

Gerência Internet: Introdução À exemplo do que ocorre com a abordagem

da ISO, a arquitetura SNMP define também um modelo de comunicação e um modelo de informação.

Essa arquitetura tem incorporado várias inovações ao longo de sua existência, de forma que existem atualmente três versões: SNMPv1 SNMPv2 SNMPv3

3 SNMPv1

4

SNMPv1: Especificações Principais especificações relativas à

primeira versão do protocolo SNMP (SNMPv1):

RFC Título1155 Structure and identification of management

information for TCP/IP-based internets1157 Simple Network Management Protocol (SNMP)1212 Concise MIB definitions1213 Management Information Base for Network

Management of TCP/IP-based internets: MIB-II (Updated by RFC 2011, RFC 2012, RFC 2013)

5

Mensagens SNMPv1 Do gerente para o

agente: get getnext set

Do agente para o gerente: getresponse trap

6

Formato da mensagem e das PDUs SNMPv1

7

SNMPv1: Comunidades Um nome de comunidade representa um

relacionamento entre um agente e um (ou vários) gerentes, definindo características de autenticação e controle de acesso.

O nome de comunidade não é encriptado, o que restringe muitas vezes a gerência à simples monitoração.

8

SNMPv1: Operações de Leitura As operações de leitura dos valores de um ou mais

objetos gerenciados são iniciadas pelos gerentes com o envio de PDUs GetRequest ou GetNextRequest.

Essas PDUs são endereçadas à porta UDP 161 do agente SNMPv1 remoto.

9

SNMPv1: Respostas da Leitura As PDUs GetRequest e GetNextRequest são

replicadas atomicamente com o envio de PDUs GetResponse.

10

SNMPv1: Operações de Escrita As operações de escrita dos valores de um ou

mais objetos gerenciados são iniciadas pelos gerentes com o envio de PDUs SetRequest.

Essas PDUs também são endereçadas à porta UDP 161 do agente SNMPv1 remoto.

11

SNMPv1: Respostas da Escrita As PDUs SetRequest também é replicada

atomicamente com o envio de uma PDU GetResponse.

12

SNMPv1: Mensagem Trap A PDU Trap é uma notificação assíncrona

utilizada pelo agente SNMP para informar um ou mais gerentes sobre algum evento significativo.

Essa PDU é endereçada à porta UDP 162 do(s) gerente(s).

13

SNMPv1: Regras de Codificação PDUs e objetos gerenciados são codificados para

transmissão usando-se BER (Basic Encoding Rules).

Em BER, cada elemento é estruturado como uma lista TLV (Type, Length, Value).

14

SNMPv1: Deficiências Deficiências observadas no SNMPv1:

Inabilidade em coletar um grande volume de dados Não é possível obter visões consistentes de tabelas de

objetos gerenciados. Escalabilidade limitada

Modelo é fortemente centralizado em torno de uma única estação de gerência.

Ausência de mecanismos eficazes de segurança Nome de comunidade não sofre encriptação, inibindo

a realização de operações mais sensíveis.

15 SNMPv2

16

Gerência Internet: SNMPv2 Um conjunto de RFCs referenciadas como

SNMP-seguro foram emitidas com o status de Proposed Standard em julho de 1992.

O SNMP-seguro endereçava exclusivamente aspectos de segurança ausentes no SNMPv1.

Outra abordagem denominada SMP (Simple Management Protocol) foi emitida também em julho de 1992 sob a forma de oito documentos (não RFCs) submetidos à IETF.

17

Gerência Internet: SNMPv2 Além de endereçar aspectos de desempenho e

funcionalidade, o SMP incorporava também as melhorias de segurança propostas pelo SNMP-seguro.

Após a publicação do SNMP-seguro e do SMP, surgiu um consenso na comunidade Internet de que era hora de se criar uma segunda versão para o SNMP.

Dois grupos de trabalho foram formados: um deles endereçava aspectos de segurança, enquanto o outro endereçava os demais aspectos. O esforço combinado foi publicado como Internet Standards em Março de 1993.

18

Gerência Internet: SNMPv2 Após anos de experiência como SNMPv2, um Grupo

de Trabalho da IETF revisou as especificações. O resultado dessa revisão foi um novo conjunto de

RFCs, emitidas em 1996. Os sofisticados mecanismos de segurança do

SNMPv2 foram substituídos por outro baseado em nomes de comunidade, como é utilizado no SNMPv1.

Por essa razão, o SNMPv2 atualmente vigente também é conhecido como SNMPv2c (Community-based).

19

SNMPv2: Especificações

RFC Título1901 Introduction to Community-Based SNMPv22578 Structure of Management Information Version 2

(SMIv2)2579 Textual Conventions for SMIv22580 Conformance Statements for SMIv23416 Protocol Operations for SNMPv23417 Transport Mappings for SNMPv23418 Management Information Base for SNMPv23584 Coexistence Between Version 1, Version 2, and

Version 3 of the Internet-standard Network Management Framework

20

SNMPv2: SMIv2 A SMI definida para o SNMPv2 é um

superconjunto daquela definida para o SNMPv1. Ela estabelece mecanismos mais elaborados para

a definição de objetos gerenciados e MIBs. As melhorias providas concentraram-se nas

seguintes áreas: Definição de objetos Tabelas conceituais Definição de notificações Módulos de informação

21

SMIv2

22

Mensagens SNMPv2 e 3 Do gerente para o agente:

get getnext Set getbulk inform report

Do agente para o gerente: getresponse trap getbulkresponse inform report

23

Formato da mensagem e das PDUs SNMPv2

24

SNMPv2: Respostas de Leitura As PDUs GetRequest e GetNextRequest são

replicadas com o envio de PDUs Response – neste caso, porém, respostas parciais são permitidas.

25

SNMPv2: GetBulkRequest As PDUs GetBulkRequest foi criada

especificamente para a tarefa de coleta volumosa de dados.

Essa PDU tem dois campos não encontrados em quaisquer outras PDUs: non-repeaters e max-repetitions.

26

SNMPv2: GetBulkRequest non-repeaters: Qtde. de variáveis presentes em variablebindings para as quais uma única instância é retornada.

max-repetitions: Qtde. de instâncias a serem retornadas para as variáveis restantes de variablebindings.

27

SNMPv2: GetBulkRequest Exemplo de utilização da PDU GetBulkRequest:

28

SNMPv2: SetRequest PDUs SetRequest são replicadas com PDUs

Response. O processamento que ocorre na troca dessas

PDUs difere um pouco daquele que ocorre no SNMPv1.

29

SNMPv2: InformRequest PDUs InformRequest são trocadas entre

gerentes SNMPv2, sendo replicadas por PDUs Response.

Elas introduzem descentralização à arquitetura SNMP.

30

SNMPv2: InformRequest Exemplo de utilização da PDU InformRequest:

31

SNMPv2: Trap As PDU TRAP SNMPv2 difere em formato daquela

definida para o SNMPv1. Porém, assim como acontece no SNMPv1, nenhuma réplica é emitida.

32

SNMPv2: Avaliação Vantagens introduzidas pelo SNMPv2:

SMI mais elaborada, com maior número de tipos e facilidades de manipulação de tabelas.

Facilidade de coleta volumosa de dados, mediante criação de uma PDU especializada em tal tarefa.

Modelo mais descentralizado, também viabilizado através de uma PDU especialmente criada para tal.

Deficiência ainda observada: Ausência de mecanismos eficazes de segurança

na troca de PDUs entre gerentes e agentes.

33 SNMPv3

34

SNMPv3 Vários grupos independentes começaram a trabalhar

em melhorias de segurança para o SNMPv2. Duas abordagens sobressaíram-se: SNMPv2u e

SNMPv2*. Elas serviram como insumo para o Grupo de Trabalho SNMPv3 da IETF, em Março de 1997.

Em Janeiro de 1998, esse grupo produziu uma série de documentos com o status de Proposed Standard.

Em Dezembro de 2002, estes documentos foram atualizados e receberam o status de Internet Standard.

O SNMPv3 incorpora as funcionalidades definidas nas versões anteriores e adiciona mecanismos de segurança à arquitetura.

35

Evolução da Arquitetura SNMP

36

Especificações SNMPv3RFC Título Data3410 Introduction and Applicability Statements for

Internet-Standard Management FrameworkDez. 2002

3411 An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks(Updated by RFC 5343, RFC 5590)

Dez. 2002

3412 Message Processing and Dispatching for the Simple Network Management Protocol (SNMP)(Updated by RFC 5590)

Dez. 2002

3413 Simple Network Management Protocol (SNMP) Applications

Dez. 2002

3414 User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3)(Updated by RFC 5590)

Dez. 2002

3415 View-based Access Control Model (VACM) for the Simple Network Management Protocol (SNMP)

Dez. 2002

37

Arquitetura SNMP atual

38

+------------------------------+ | Network | +------------------------------+ ^ ^ ^ | | | v v v +-------------------------------------------------------------------+ | +--------------------------------------------------+ | | | Transport Subsystem | | | | +-----+ +-----+ +-----+ +-----+ +-------+ | | | | | UDP | | TCP | | SSH | | TLS | . . . | other | | | | | +-----+ +-----+ +-----+ +-----+ +-------+ | | | +--------------------------------------------------+ | | ^ | | | | | Dispatcher v | | +-------------------+ +---------------------+ +----------------+ | | | Transport | | Message Processing | | Security | | | | Dispatch | | Subsystem | | Subsystem | | | | | | +------------+ | | +------------+ | | | | | | +->| v1MP |<--->| | USM | | | | | | | | +------------+ | | +------------+ | | | | | | | +------------+ | | +------------+ | | | | | | +->| v2cMP |<--->| | Transport | | | | | Message | | | +------------+ | | | Security | | | | | Dispatch <--------->| +------------+ | | | Model | | | | | | | +->| v3MP |<--->| +------------+ | | | | | | | +------------+ | | +------------+ | | | | PDU Dispatch | | | +------------+ | | | Other | | | | +-------------------+ | +->| otherMP |<--->| | Model(s) | | | | ^ | +------------+ | | +------------+ | | | | +---------------------+ +----------------+ | | v | | +-------+-------------------------+---------------+ | | ^ ^ ^ | | | | | | | v v v | | +-------------+ +---------+ +--------------+ +-------------+ | | | COMMAND | | ACCESS | | NOTIFICATION | | PROXY | | | | RESPONDER |<->| CONTROL |<->| ORIGINATOR | | FORWARDER | | | | Application | | | | Applications | | Application | | | +-------------+ +---------+ +--------------+ +-------------+ | | ^ ^ | | | | | | v v | | +----------------------------------------------+ | | | MIB instrumentation | SNMP entity | +-------------------------------------------------------------------+

39

Gerente SNMPv3

40

Gerente SNMPv3 O Dispatcher pode ser compreendido como um simples gerente

de tráfego.

41

Gerente SNMPv3 O Subsistema de Processamento de Mensagens prepara

mensagens para transmissão e processa mensagens recebidas.

42

Gerente SNMPv3 O Subsistema de Segurança realiza funções de autenticação e

privacidade.

43

Agente SNMPv3

44

Agente SNMPv3 O Subsistema de Controle de Acesso provê serviços de

autorização para controlar o acesso às MIBs para leitura e escrita de valores de objetos gerenciados.

45

Fluxo de Mensagens Fluxo originado por um Gerador de Comandos ou um Gerador de

Notificações.

46

Fluxo de Mensagens Fluxo originado por um Respondedor de Comandos.

47

Formato da Mensagem SNMPv3

48

Formato da Mensagem SNMPv3 msgVersion: setado para snmpv3 (3).

49

Formato da Mensagem SNMPv3 msgID: identificador único usado por duas entidades SNMP para

coordenação de mensagens de solicitação e resposta. Vai de 0 até 231-1.

50

Formato da Mensagem SNMPv3 msgMaxSize: tamanho máximo da mensagem enviada ou recebida

por uma entidade SNMP. Vai de 484 até 231-1 octetos.

51

Formato da Mensagem SNMPv3 msgFlags: um octeto contendo três flags nos seus três dígitos

menos significativos: reportableFlag, provFlag e authFlag.

52

Formato da Mensagem SNMPv3 Comentários sobre o msgFlags:

Se reportFlag for setado em 1, uma PDU Report deve ser enviada (caso das PDUs Get/SetRequest e Inform). O contrário ocorre quando ela é setada em 0 (caso para PDUs Response, Trap e Report).

Para os bits privFlag e authFlag, o comportamento é o seguinte:

53

Formato da Mensagem SNMPv3 msgSecurityModel: indica qual modelo de segurança foi utilizado

para o preparo da mensagem. Vai de 0 até 231-1. Valores reservados são 1 (SNMPv1), 2 (SNMPv2) e 3 (SNMPv3).

54

Formato da Mensagem SNMPv3 msgGlobalData: contém parâmetros necessários pelo Subsistema

de Processamento de Mensagens para coordenação das mensagens.

55

Formato da Mensagem SNMPv3 msgSecurityParameters: contém parâmetros relacionados ao

Subsistema de Segurança, não sendo portanto interpretados pelo Subsistema de Processamento de Mensagens ou o Dispatcher.

56

Formato da Mensagem SNMPv3 contextEngineID: identifica inequivocamente uma entidade

SNMP.

57

Formato da Mensagem SNMPv3 contextName: identifica inequivocamente um contexto particular

dentro do escopo de um contextEngineID associado.

58

Formato da Mensagem SNMPv3 scopePDU: informação necessária pelas aplicações de

processamento das PDUs. Contém uma PDU num contexto que é inequivocamente identificado pelos campos contextNAME e contextEngineID.

59

Conceitos de Segurança Confidencialidade (Sigilo): apenas o remetente e o

destinatário pretendido devem “entender” o conteúdo da mensagem remetente cifra (codifica) msg destinatário decifra (decodifica) msg

Autenticação: remetente e destinatário querem confirmar a identidade um do outro

Integridade e não-repudiação de Mensagem: remetente e destinatário querem garantir que a mensagem não seja alterada (em trânsito ou após) sem que isto seja detectado

Disponibilidade e Controle de Acesso: os serviços devem estar acessíveis e disponíveis para os usuários

60

Melhorias de Segurança USM – User-based Security Model VACM – View Access Control Model

61

USM – User-based Security Model O USM (User-based Security Model) do SNMPv3

oferece proteção contra os seguintes ataques: Modificação da informação Mascaramento Modificação do fluxo de mensagens Observação do conteúdo de mensagens

Porém, o USM não protege contra os seguintes ataques: Negação de serviço Análise de tráfego

62

Núcleo com Autoridade Conceito de Núcleo com Autoridade

(authoritative engine): Se uma mensagem contiver uma PDU que requer

uma resposta (Get, GetNext, GetBulk, Set ou Inform), então seu receptor será o núcleo com autoridade.

Se uma mensagem contiver uma PDU que não requer uma resposta (Trap, Response ou Report), então seu emissor será o núcleo com autoridade.

Conclusão: Considerando um modelo simples gerente-agente, é

o agente quem possui o núcleo autorizado.

63

Núcleo com Autoridade Qual a importância desta definição?

A pontualidade da mensagem é determinada em relação ao relógio mantido pelo núcleo com autoridade As mensagens enviadas contêm o valor de

relógio deste núcleo e o receptor (sem autoridade) pode sincronizar com este relógio

Processo de localização de chave, permite que uma entidade principal possua chaves armazenadas em múltiplos núcleos (engines)

64

ObjetosObjetos snmpEngineBoots e snmpEngineTime: São mantidos por núcleos autorizados, sendo

inicialmente setados em 0. snmpEngineTime é incrementado a cada

segundo, até chegar a 231− 1. Nesse valor, snmpEngineBoots é incrementado e snmpEngineTime é setado em 0 e recomeça a ser incrementado.

se o sistema for reinicializado, snmpEngineBoots será incrementado e snmpEngineTime será setado em 0 e recomeçará a ser incrementado.

65

Objetos Interpretação dada para esses objetos:

snmpEngineBoots representa a quantidade de vezes em que o núcleo autorizado foi (re)inicializado desde a sua configuração original.

snmpEngineTime representa a quantidade de segundos decorridos desde a última (re)inicialização do núcleo autorizado.

Propósito desses objetos: permitir a sincronização entre núcleos SNMP.

66

Formato da Mensagem SNMPv3 msgAuthoritativeEngineID: identificador do núcleo com

autoridade envolvido na troca dessa mensagem.

67

Formato da Mensagem SNMPv3 msgAuthoritativeEngineBoots: valor do snmpEngineBoots no

núcleo com autoridade envolvido na troca dessa mensagem.

68

Formato da Mensagem SNMPv3 msgAuthoritativeEngineTime: valor do snmpEngineTime no

núcleo com autoridade envolvido na troca dessa mensagem.

69

Formato da Mensagem SNMPv3 msgUserName: o usuário (principal) em cujo interesse a mensagem

está sendo trocada.

70

Formato da Mensagem SNMPv3 msgAuthenticationParameters: Null se a autenticação não

estiver sendo utilizada nessa troca. Caso contrário, esse é um parâmetro de autenticação (para o USM, um código de autenticação de mensagem HMAC – Hash-based Message Authentication Code).

71

Formato da Mensagem SNMPv3 msgPrivacyParameters: Null se a privacidade não estiver sendo

utilizada nessa troca. Caso contrário, esse é um parâmetro de privacidade (para o USM, um valor usado para formar o IV (Initial Vector) do modo CBC (Cipher Block Chaining ) do algoritmo DES (Data Encryption Standard). A RFC3826 apresenta o uso do AES (Advanced Encryption Standard)

72

Sincronização

73

Sincronização

74

Estabelecimento de janelas de tempo

As mensagens devem ser recebidas dentro de uma janela de tempo razoável para evitar atrasos e ataques de reprodução (replay)

Fatores determinantes para o projeto: precisão dos relógios envolvidos atrasos fim-a-fim frequência de sincronização

Implicação dos erros cometidos no projeto: janelas muito pequenas rejeitarão mensagens

autênticas. janelas muito grandes aumentarão a vulnerabilidade

aos ataques por réplica ou atraso.

75

Estabelecimento de janelas de tempo

76

Estabelecimento de janelas de tempo

77

Sincronização e Janelas de TempoObservação: Os mecanismos de sincronização e janelas de

tempo só podem ser aplicados se:1. Autenticação for empregada.2. A mensagem for considerada autêntica via HMAC.

Essa restrição é essencial porque o escopo da autenticação inclui os campos msgAuthoritativeEngineID, msgAuthoritativeEngineBoots e msgAuthoritativeEngineTime.

78

Descoberta O USM requer o uso de um processo de descoberta

para obter informação suficiente sobre núcleos com autoridade antes de qualquer comunicação.

Através da descoberta, um núcleo SNMP sem autoridade aprende o valor do ID do núcleo com autoridade e entra em sincronismo com esse núcleo.

O processo de descoberta é composto por dois passos, sendo o primeiro deles obrigatório. O segundo é dado apenas quando a autenticação for necessária. A ser descritos a seguir.

79

Descoberta Passo 1: núcleo sem autoridade aprende a ID do núcleo

com autoridade.

80

Descoberta Passo 2: núcleo sem autoridade estabelece sincronismo

com núcleo com autoridade.

81

USM: Funções Criptográficas No USM, são utilizadas duas funções

criptográficas: autenticação e privacidade. Para suportá-las, cada núcleo SNMP mantém um

par de chaves authKey e privKey para cada um dos núcleos com os quais se comunica.

Os valores de authKey e privKey servem de subsídio para a geração e verificação dos campos msgAuthenticationParameters e msgPrivacyParameters.

Porém, eles não são acessíveis através do SNMPv3.

82

Geração de Parâmetros de Autenticação e Privacidade

83

MIB usmUser

84

Criação da Mensagem junto ao USM

85

Recepção da Mensagem junto ao USM

86

Gerência de Chaves Os pares authKey e privKey usados na

comunicação entre um núcleo SNMP e vários outros núcleos são, na verdade, derivados de um único par de chaves.

As chaves authKey e privKey são chamadas de chaves locais.

A gerência de chaves lida com a criação do par de chaves originais e com a geração e atualização das chaves locais.

87

Gerência de Chaves: geração do par de chaves original

As chaves de autenticação e privacidade originais (string de bits) são geradas a partir de senhas.

O processo de geração dessas chaves não utiliza nenhum repositório externo especializado no armazenamento de chaves.

Além disso, ele aumenta a lentidão na execução de ataques do estilo força bruta.

É composto por dois passos.

88

Gerência de Chaves: geração do par de chaves original

89

Gerência de Chaves: geração de chaves locais

Consiste no processo, composto por dois passos, para a geração de subchaves (chaves locais).

Objetiva evitar as seguintes medidas: Um usuário tenha que relembrar pares de

chaves cuja quantidade aumenta com a adição de novos sistemas gerenciados.

Um adversário aprenda uma chave para um agente e esteja apto a personificar qualquer outro agente para qualquer usuário, ou vice-versa.

90

Geração de chaves originais e chaves locais

91

VACM – View-based Access Control Model

Determina se o acesso a objetos gerenciados numa MIB local por entidades remotas deve ser permitida.

Utiliza uma MIB que define a política de controle de acesso para este agente, tornando possível configurações remotas.

Define cinco elementos: Grupos, Nível de Segurança, Contextos, Visões de MIB e Política de Acesso.

92

Grupos Grupo: é definido como um conjunto de

tuplas <securityName,securityModel>, ao qual associa-se um groupName. securityName e securityModel são

equivalentes aos campos msgUserName e msgSecurityModel da mensagem SNMPv3.

93

Nível de Segurança Nível de Segurança: obtido a partir do

campo msgFlags da mensagem SNMPv3. Apenas relembrando... noAuthNoPriv authNoPriv authPriv

94

Contextos Contexto: trata-se de um subconjunto de

objetos gerenciados numa MIB local. Uma determinada entidade SNMP é

identificada por um contextEngineID. Esta entidade pode manter vários

contextos diferentes. Cada um destes contextos é identificado

por um contextName diferente.

95

Visões de MIB Visão de MIB: é definida em termos de uma

coleção, ou família, de subárvores de MIBs. Uma tabela que faz uso de subárvores para

definir subconjuntos de objetos gerenciados possui os seguintes parâmetros: Subtree: OID que identifica a subárvore. Mask: permite refinar a identificação da

subárvore no nível de objetos gerenciados individuais.

Type: informa se a subárvore está incluída ou excluída da Visão.

96

Política de Acesso Política de Acesso: baseia-se nos seguintes

parâmetros: A entidade solicitando o acesso (principal). O nível de segurança empregado na solicitação. O modelo de segurança utilizado para

processamento da mensagem de solicitação. O contexto da MIB para a solicitação. O objeto gerenciado solicitado. O tipo de acesso solicitado (leitura, escrita ou

notificação).

97

MIB VACM (View-based Access Control Model)

98

Lógica do VACM

99

Parâmetros da MIB VACM Parâmetros da MIB VACM para configuração inicial “Semi-

Security”.

100 SNMP: Limitações do Modelo

101

SNMP: Limitações do Modelo Escalabilidade e eficiência

Aumento do overhead da rede Aumento de atrasos (latência) Capacidade de processamento do gerente Limite de segmento do gerente

102

SNMP: Limitações do Modelo Escalabilidade e eficiência

Transferência ineficiente de grande quantidade de dados Limitação do get-next Get-bulk overshoot effect Tamanho máximo de mensagem SNMP –

datagrama UDP Ausência de mecanismos de compressão Baixa eficiência do BER Protocolo de transporte não confiável (UDP)

103

SNMP: Limitações do Modelo Segurança

Mecanismo de comunidades limitado (v1/v2) Não pode ser considerado como autenticação Texto da comunidade trafega em claro

Configurações complexas no SNMPv3 Mecanismo de Chaves Compartilhadas

inseguro (v3) Dificuldade de atravessar Firewalls

104

SNMP: Limitações do Modelo Gerenciamento Integrado e

Configurações de redes Modelo de informações limitado Não orientado a objetos Não hierárquico Difícil programação de Interfaces de

Gerenciamento mais aprimoradas devidos às limitações

Recommended