Minicurso Monitoramento de redes - PoP-BA · PDF fileTipo (Mon Simples, Agente Zabbix, SNMP,...

Preview:

Citation preview

Minicurso Monitoramento de redes

III Workshop de Tecnologia de Redes do POP-BAPonto de Presença da RNP na Bahia

Italo Valcy <italo@pop-ba.rnp.br>

27 e 28 de setembro de 2012

2 / 80

Licença de uso e atribuição

Todo o material aqui disponível pode, posteriormente, ser utilizado sobre os termos da:

Creative Commons License: Atribuição - Uso não comercial - Permanência da Licença

http://creativecommons.org/licenses/by-nc-sa/3.0/

3 / 80

Motivação As redes não são imunes a falhas Aumento da expectativa dos usuários Administradores de rede necessitam de

ferramentas para exibir o status e histórico da rede◦ Apagar incêndio

Planejamento (gestão de capacidade) Detectar anormalidades Exibir resultados de mudanças

Como identificar a causa e localização de eventuais problemas de desempenho?

4 / 80

Estratégia

A estratégia para detecção de problemas ou funcionamento anormal da rede pode ser: Uso de Ferramentas de Diagnóstico para

localizar os problemas◦ Ferramentas de monitoramento ativo (ex. latência,

largura de banda disponível)◦ Ferramentas de monitoramento passivo (ex. contadores

de erros) Monitoramento Regular para identificar o

funcionamento normal (baseline) e gerar alertas quando cair as expectativas.◦ Visualização de dados e alarmes

5 / 80

Métricas de interesse Atraso de ida e volta (RTT – Round Trip Time) Perdas de ida e volta Utilização Atraso em um sentido (One way delay) Variação do atraso em um sentido (jitter) Perdas em um sentido Reordenação de Pacotes Largura de banda alcançável (TCP, UDP) MOS (Mean Opinion Score) Fluxos (volume de pacotes, bytes, tipo de

protocolo)Fonte: Monitoramento de Redes, Suruagy, WTR 2011

6 / 80

Ferramentas Ping:◦ Atraso de ida e volta

(RTT – Round Trip Time)◦ Perdas de ida e volta

SNMP◦ Utilização

Iperf◦ Largura de banda

alcançável (TCP, UDP)

Fonte: Monitoramento de Redes, Suruagy, WTR 2011

OWAMP:◦ Atraso em um sentido

(One way delay)◦ Variação de atraso em

um sentido (jitter)◦ Perdas em um sentido◦ Reordenação de pacotes

Netflow/Sflow◦ Fluxos (volume de

pacotes, bytes, tipo de protocolo)

7 / 80

Agenda

Monitoramento com Cacti◦ SNMP◦ RRDTool◦ Introdução ao Cacti◦ Instalação e Configuração do Cacti

Zabbix Fluxos de rede com Nfsen/Nfdump

8 / 80

Monitoramento com Cacti Ambiente utilizado:◦ SNMP◦ RRD◦ LAMP (Linux, Apache, MySQL e PHP)

9 / 80

SNMP Simple Network Management Protocol (RFC

1157)◦ Padrão de facto para monitoramento de redes

Pode-se monitorar CPUs, uso de memória, uso de disco, SO, etc.

Suportado por uma série de equipamentos: APs, Routers, Switches (gerenciáveis), Servidores, etc.

Deve ser bem configurado

10 / 80

SNMP O modelo de gerenciamento de redes usado

pelo SNMP inclui:◦ Estação de Gerenciamento (Manager)◦ Agente de Gerenciamento◦ MIB: Management Information Base: Base de

Informações Gerenciais◦ Protocolo de Gerenciamento de Redes

11 / 80

SNMP MIBs + OIDs + Agentes + SNMP + Gerente(s)

Agente

Informações degerenciamento

acesso

Dispositivos gerenciadosEstação Gerente

Aplicações degerenciamento Protocolo

SNMP

Agente

Informações degerenciamento

acesso

MIB

MIB

12 / 80

MIB Para gerenciar recursos na rede, cada

recurso é representado como um objeto (OID)◦ A coleção de objetos é conhecida como MIB -

Management Information Base MIBs padrões (RFC 1213) MIBs específicas de vendors◦ http://www.oidview.com/mibs/detail.html

13 / 80

MIB Exemplos:◦ AtPhysAddress (1.3.6.1.2.1.3.1.1.2)◦ IfInOctets (1.3.6.1.2.1.2.2.1.10)◦ IfInDiscards (1.3.6.1.2.1.2.2.1.13)◦ …

Como descobrir um OID desejado? MIB Browser (http://ireasoning.com/mibbrowser.shtml)

14 / 80

Protocolo SNMP Três funcionalidades chaves:◦ Get: Permite ao gerente (estação) recuperar

valores de objetos dos agentes◦ Set: permite ao gerente configurar valores de

objetos nos agentes◦ Notify: Permite que agentes notifiquem o gerente

a ocorrência de eventos significativos. (traps)

15 / 80

Protocolo SNMP

16 / 80

Versões SNMP SNMPv1◦ Centralizado (pouca escalabilidade)◦ Não permite transferência de porções maiores de dados

SNMPv2◦ Permite monitoramento descentralizado◦ Permite transferência de maiores porções de dados◦ Maior deficiência é a falta de segurança efetiva

SNMPv3◦ autenticação◦ autorização de usuários para monitorar e ler informações

da rede◦ privacidade

17 / 80

SNMP Como efetuar consultas manualmente:

snmpwalk -v 2c -c public 10.0.0.1 1.3.6.1.2.1.3.1.1.2

prompt$ snmpwalk ­v2c ­c community 192.168.0.1 1.3.6.1.2.1.3.1.1.2RFC1213­MIB::atPhysAddress.2.1.10.X.X.X = Hex­STRING: 00 1B 21 19 52 38 RFC1213­MIB::atPhysAddress.2.1.10.X.X.X = Hex­STRING: 00 04 AC C5 44 6C RFC1213­MIB::atPhysAddress.2.1.10.X.X.X = Hex­STRING: 00 16 3E DF 10 23 RFC1213­MIB::atPhysAddress.2.1.10.X.X.X = Hex­STRING: 00 22 64 F5 1D 28 RFC1213­MIB::atPhysAddress.2.1.10.X.X.X = Hex­STRING: 1C AF F7 E9 5B BF RFC1213­MIB::atPhysAddress.2.1.10.X.X.X = Hex­STRING: 00 1E C9 FF 1F 1B RFC1213­MIB::atPhysAddress.2.1.10.X.X.X = Hex­STRING: 00 04 96 1E 56 04 RFC1213­MIB::atPhysAddress.1000036.200.128.X.X = Hex­STRING: 00 1D 70 E3 FF B9 RFC1213­MIB::atPhysAddress.1000036.200.128.X.X = Hex­STRING: 00 1D 70 E3 FF B9 RFC1213­MIB::atPhysAddress.1000036.200.128.X.X = Hex­STRING: 00 1D 70 E3 FF B9 RFC1213­MIB::atPhysAddress.1000036.200.128.X.X = Hex­STRING: 00 1D 70 E3 FF B9 RFC1213­MIB::atPhysAddress.1000036.200.128.X.X = Hex­STRING: 00 1D 70 E3 FF B9 ...

18 / 80

SNMP Como efetuar consultas manualmente:

snmpget -v 2c -c public 10.0.0.1 IF-MIB::ifHCInOctets.1004

prompt$ snmpget ­v2c ­c community 192.168.0.1 IF­MIB::ifHCInOctets.1004IF­MIB::ifHCInOctets.1004 = Counter64: 12584346213790

prompt$ snmpget ­v2c ­c community 192.168.0.1 IF­MIB::ifHCOutOctets.1004IF­MIB::ifHCOutOctets.1004 = Counter64: 14452315751348

19 / 80

RRD Round Robin Database para armazenar séries de

dados temporais, principalmente sobre redes de computadores

Armazenamento com tamanho fixo Útil para provimento de tendências

históricas, com interface simples GPL, ferramentas de manipulação, CGI, API◦ rrdtool create|update|graph|fetch|dump [options]

20 / 80

RRDCreate :: Definindo entradas (Data Sources)

DS:speed:COUNTER:600:U:U DS:fuel:GAUGE:600:U:U◦ DS = Data Source◦ speed, fuel = nome da variável◦ COUNTER, GAUGE = tipo da variável◦ 600 = heart beat – UNKNOWN é retornado se não

houver entrada de dados naquele período de tempo◦ U:U = limites mínimo e máximo das variáveis (U

significa “Unknow”, onde qualquer valor é permitido)

21 / 80

RRDCreate :: Definindo arquivamento (Data Archives)

RRA:CF:xff:steps:rows◦ RRA = Roudin Robin Archives◦ CF = Função de consolidação (AVERAGE, MIN,

MAX, LAST)◦ xff = dos dados originais, qual a porcentagem

pode ser considerada unknown? (entre 0 e 1)◦ steps: quantos pontos dos dados originais serão

usados para os consolidados?◦ rows: define quantas gerações de dados

consolidados serão armazenados no RRA

22 / 80

RRDCreate rrdtool create ./myrouter.rrd --step 300 \

DS:in:COUNTER:600:0:1000000000 \DS:out:COUNTER:600:0:1000000000 \RRA:AVERAGE:0.5:1:600 \RRA:AVERAGE:0.5:6:700 \RRA:AVERAGE:0.5:24:775 \RRA:AVERAGE:0.5:288:797 \RRA:MAX:0.5:1:600 \RRA:MAX:0.5:6:700 \RRA:MAX:0.5:24:775 \RRA:MAX:0.5:288:797 \RRA:LAST:0.5:1:600 \RRA:LAST:0.5:6:700 \RRA:LAST:0.5:24:775 \RRA:LAST:0.5:288:797 \

23 / 80

RRDUpdate Para inserir dados no RRD:

#!/bin/bash

IN=$(snmpget ­v2c ­c community 10.0.0.1 \IF­MIB::ifHCInOctets.1004 | awk '{print $NF}')

OUT=$(snmpget ­v2c ­c community 10.0.0.1 \IF­MIB::ifHCOutOctets.1004 | awk '{print $NF}')

TIMESTAMP=$(date +%s)

/usr/bin/rrdtool update ./myrouter.rrd $TIMESTAMP:$IN:$OUT

24 / 80

RRDGraphGerar gráfico com média de 5minutosrrdtool graph - --imgformat=PNG \--start='-1d' \--title='Daily - 5 min avg' \--vertical-label='bits per second' \--lower-limit=0 \--width=500 --height=120 \DEF:a=./myrouter.rrd:in:AVERAGE:step=300 \DEF:b=./myrouter.rrd:out:AVERAGE:step=300 \CDEF:cdefa=a,8,* \CDEF:cdefb=b,8,* \AREA:cdefa#00CF00FF:"Inbound" \GPRINT:cdefa:LAST:" Current\:%6.2lf %s" \GPRINT:cdefa:AVERAGE:"Average\:%6.2lf %s" \GPRINT:cdefa:MAX:"Maximum\:%6.2lf %s\n" \LINE1:cdefb#002A97FF:"Outbound" \GPRINT:cdefb:LAST:"Current\:%6.2lf %s" \GPRINT:cdefb:AVERAGE:"Average\:%6.2lf %s" \GPRINT:cdefb:MAX:"Maximum\:%6.2lf %s"

Tipos comuns: - Daily – 5 min avg - Weekly – 30 min avg - Monthly – 2 hour avg - Yearly – 1 day avg

25 / 80

Cacti MRTG ==> RRDTool Cacti: uma interface de administração e

infraestrutura para o RRDTool Pode obter informações via SNMP ou scripts Criado por Ian Berry, desenvolvido em PHP

e MySQL, distribuído sob GPL. Mais informações:◦ http://www.cacti.net

26 / 80

Arquitetura

Data Retrieval: poller + (SNMP || scripts) Data Storage: RRDTool Data Presentation: RRDTool + web server

27 / 80

Instalação do Cacti Instalação / Configuração bastante simples Leitura recomendada:◦ http://www.cacti.net/downloads/docs/html/installati

on.html◦ Gráficos elegantes com o cacti (Linux Magazine)◦ http://www.debianadmin.com/cacti-bandwith-

monitoring-tool-in-debian-etch.html No Debian GNU/Linux◦ aptitude install cacti◦ /usr/share/doc/cacti/README.Debian

28 / 80

Adicionar recursos ao monitoramento

Passos necessários (via SNMP):◦ Configurar o SNMPD no servidor remoto◦ Adicionar servidor como Device◦ Criar gráficos para o servidor em questão◦ Adicionar os gráficos à Graph Tree◦ Configurar permissões de visualização

29 / 80

Criando um Device Console > Devices > Add new device◦ Description◦ Hostname◦ Host template◦ SNMP Version◦ SNMP Community◦ Outros..

30 / 80

Criando um Device

31 / 80

Adicionando gráficos ao Device

Console > New Graphs > SEU_DEVICE◦ Marcar gráficos disponíveis ao host template

escolhido.

Exemplo (ucd/net SNMP host template)◦ CPU Usage◦ Load Avarage◦ Memory Usage◦ ...

32 / 80

Adicionando gráficos ao Device

33 / 80

Plugins para o Cacti É possível estender as funcionalidades

básicas com plugins:◦ Weathermap◦ Syslog◦ Thold◦ Discovery

Mais:◦ http://cactiusers.org/downloads/

34 / 80

Exemplo: PoP-BA

35 / 80

Exemplo: Panorama ReMeSSA

36 / 80

Exemplo: Panorama RNP

37 / 80

Cacti Prática 01: Configurar o Cacti para

monitorar a própria máquina

38 / 80

Zabbix Programa de código aberto, criado em 1998 por

Alexei Vladishev Backend em C++ e Frontend em PHP Suporta diversos SGBD (PostgreSQL, MySQL,

SQLite, Oracle ou IBM DB2) Agentes (AIX, HP-UX, FreeBSD, GNU/Linux,

Windows) Monitoramento sem agentes Suporta IPv6 e Ipv4 Escalável com utilização de proxies ou

monitoramento distribuído

39 / 80

Como funciona

Agente Agente Ativo

Alerta Interface

E-mailSMS

ComandoScript

ZABBIXMONITORING SYSTEM

memory-usage

36.6

check-mysql

1

snmpget

XYZ

40 / 80

Servidor Zabbix

Template

Item Trigger Ação

Host

41 / 80

Servidor Zabbix

Configuração do ativo a ser monitorado Contém os seguintes parâmetros◦ Nome do host◦ Endereço IP (ou nome DNS)◦ Template associado◦ Grupo associado◦ Outros...

Host

42 / 80

Servidor ZabbixItem

É o objeto que será monitorado para determinado host◦ Ex: monitorar interface se0/1 do router1

Contém os seguintes parâmetros◦ Tipo (Mon Simples, Agente Zabbix, SNMP, Mon Externo,

etc.)◦ Chave de monitoramento◦ Frequência de monitoramento◦ Tipo de retorno (string, integer ou float)◦ Método de armazenamento (Normal, Delta, Delta/s)◦ Outros...

43 / 80

Servidor Zabbix

Chave de monitoramento é a solicitação da informação ao agente (ou direta)

Formato:

Permite: 0-9a-zA-Z_-. Exemplos:◦ cbgpPeerState.sh[192.168.8.254] (Mon Externo)◦ IfOutDiscards.3 (SNMP)◦ vfs.fs.size[/var,pfree] (Agente Zabbix)

Item

44 / 80

Servidor Zabbix

São expressões lógicas que “avaliam” os dados obtidos dos itens e representam o estado atual do sistema◦ Threshold aceitável para item coletado◦ Disparo de gatilhos (ações)◦ Pode ser OK, PROBLEM, UNKNOWN

Expressões lógicas:◦ valor_retorno.último = 0◦ valor_retorno.média(120s) > 5

Retorno verdadeiro = Problema Sem retorno = Unknown

Trigger

45 / 80

Servidor Zabbix

Modelo de expressão:◦ {<host>:<key>.<function>(<parameter>)}<op><cons>

Alguns exemplos:◦ avg(time)◦ last(0), last(#num)◦ sum(time), sum(#num)◦ max(time)

Exemplo:◦ {vmserver1:vfs.fs.size[/var,pfree].last(0)}<10

Trigger

46 / 80

Servidor Zabbix

É possível definir dependência entre as triggers

Caso a trigger que possui dependentes for disparada, a dependente não será monitorada até retorno da primeira

Trigger

Trigger Trigger

ZABBIXMONITORING SYSTEM

dependênciaXStop

47 / 80

Servidor Zabbix

Ações (ou eventos) são gerados por 3 origens:◦ Triggers: caso a trigger mude seu status◦ Descoberta: na detecção de hosts ou serviços◦ Eventos gerados pelos agente

Ação

48 / 80

Servidor Zabbix

Principais ações:◦ Envio de e-mail para grupo responsável◦ Envio de SMS◦ Chat no Jabber◦ Intervenção no ativo (ex: restart no processo X)

As ações são baseadas no horário e dia da semana

Ação

49 / 80

Servidor Zabbix

Configuração padrão de itens, triggers, ações, gráficos, etc.

Configuração automática ao associar o host a um template

Agilidade na adição de hosts◦ Facilidade de alteração/correção

Template

SEMPRE usetemplates

50 / 80

Servidor ZabbixTemplate

51 / 80

Diversidade no monitoramento

Qualquer objeto cujo valor possa ser obtido via console/scripts ou afins é possível monitorar no zabbix

No agente, é possível configurar qualquer checagem◦ UserParameter=key, command

Exemplos (via zabbix-agent:◦ UserParameter=mysql.ping,mysqladmin -uroot ping|grep alive|wc -l◦ UserParameter=net.ipv4_forward,cat /proc/sys/net/ipv4/ip_forward◦ UserParameter=verify.aide,/usr/local/bin/verify-aide.sh

52 / 80

Prática Prática 2: Acompanhar demonstração sobre

o zabbix do PoP-BA e da UFBA Prática 3: Configurar monitoramento na

máquina virtual

53 / 80

NfSen / NfDump

Fonte: Tracking Incidents with NfSen, Peter Haag (SWITCH-CERT)

54 / 80

NfSen / NfDump Algumas questões relacionadas ao

tratamento de anormalidades em uma rede:◦ O que causou este pico em seu gráfico de rede?◦ Quais hosts/subnets consumem a maioria de

nossa largura de banda?◦ Quais são os top talkers em sua rede?◦ Sobre aquele (D)DoS ocorrido, você poderia nos

passar maiores informações?◦ Quais são os principais destinos que acessamos?

55 / 80

Motivação Monitoramento tradicional usa estatísticas de tráfego dos links

(MRTG, RRD, etc.)

Algumas questões: Cenário muito complexo e gráficos simples Precisamos de mais detalhes

O monitoramento tradicional não é mais satisfatório!

56 / 80

Motivação Precisamos de mais informações em nível

de conexão:◦ Endereços IP◦ Portas (TCP/UDP)◦ Flags TCP◦ Contadores de Byte/Pacote◦ Número de interfaces◦ Número de Ases◦ ...

57 / 80

Netflow / SflowO que é Netflow Netflow é uma tecnologia de monitoramento de tráfego

desenvolvida pela Cisco Networks. Fluxos são unidirecionais e contém dados relacionados à conexão, como:◦ Endereços Ethernet de origem e destino

◦ Endereços IP de origem e destino

◦ Portas de origem e destino

◦ AS de origem e destino

◦ Protocolo (TCP, UDP, ICMP, etc.), flags TCP

◦ Interface lógica de entrada e saída

◦ Contadores de pacote e bytes

Funciona por amostragem Exemplo:2006-03-30 00:47:33.728 54.971 TCP 172.16.71.66:13599 -> 192.168.10.34:80 .A..SF 215 9890

Registros Netflow nunca contém qualquer dado do usuário

Outra tecnologia usada é o sFlow, especificado pelo

consorcio sflow.org

58 / 80

Netflow / Sflow Exemplo:

59 / 80

Netflow / Sflow

NfSen Frontend web Exibe os fluxos Framework para automatizar tarefas

NfDump Coleta e armazena os fluxos Processa os fluxos na linha de comando

60 / 80

Arquitetura do Nfdump

61 / 80

ExemplosRespondendo às nossas perguntas... Mostra o top 15 endereços IP consumindo a maioria

da banda

62 / 80

ExemplosRespondendo às nossas perguntas... Mostra o top 15 /24 com maior troca de tráfego

63 / 80

Nfdump

O nfdump pode ser extremamente útil para responder diversas questões◦ Pode-se filtrar pelos campos dos flows◦ Pode-se agregar o resultado◦ Qualquer filtro vai necessitar uma adaptação ao

perfil da sua rede Tudo depende de definir um bom filtro

64 / 80

Nfdump Nfdump é:◦ Robusto, flexível, fácil de usar e rápido, mas...

… Tratar incidentes de rede não é algo tão simples – além disso, todos nós gostamos de

imagens, não?

=> Nfsen

65 / 80

NfSen Funcionalidades do NfSen para análise de

incidentes de rede:◦ Uso do nfdump como ferramenta de backend◦ Imagens◦ Partimos da visão geral, para detalhes de um

fluxo◦ Gráfico da situação atual da rede◦ Gráficos de perfis específicos da rede◦ Analisar uma janela de tempo específica

66 / 80

NfSen

67 / 80

68 / 80

69 / 80

Análise de incidentes de rede com Nfsen

70 / 80

Análise de incidentes de rede com Nfsen

71 / 80

72 / 80

Análise de incidentes de rede com Nfsen

Nem todos os incidentes são óbvios de detectar◦ Eventos visualmente perceptíveis

◦ Alto tráfego: muitos pacotes, muitos bytes E sobre os incidentes que ficam ocultos no tráfego

geral?

Sem pico óbvio

73 / 80

Perfis da Rede É uma visão específica dos dados dos fluxos, com

filtros aplicados Aplicados aos gráficos assim como para a visão

detalhada Pode ser criado a partir de dados antigos Pode ser criado para dados de entrada Pode contar um ou mais canais

74 / 80

Perfis da Rede Mesmos dados – visão diferente

Evento óbvio

75 / 80

Perfis da Rede Análise do incidente – uma olhada de perto

76 / 80

Perfis da RedeAnálise do incidente – uma olhada de perto Não parece de fato com um SYN

FLOOD◦ Vejamos os fluxos

77 / 80

Perfis da RedeAnálise do incidente – uma olhada de perto Como o host foi infectado?◦ Checar mais fluxos

78 / 80

Nfsen / Nfdump Detectando outros tráfegos suspeitos:◦ Alertas◦ Extensões

Alertas◦ Monitoram os fluxos periodicamente◦ Muitas condições◦ Automaticamente dispara uma alarme, quando

uma condição é satisfeita◦ Envia uma notificação, ou executa uma ação

79 / 80

Referências Barbosa, M. (2010). Gráficos elegantes com o cacti. Linux Magazine.

Berry, I., Roman, T., Adams, L., Pasnak, J., Conner, J., and Scheck, R. (2010). The Cacti Manual. The Cacti Group. Acessado em 08 de setembro de 2012.

Cacti (2010). Cacti: the complete rddtool-based graphing solution. Disponível em http://www.cacti.net. Último acesso em 08 de setembro de 2012.

Case, J., Fedor, M., Schoffstall, M., and Davin, J. (1990). Simple Network Management Protocol (SNMP). RFC 1157.

Menezes, E. and Leite Silva, P. (1998). Gerenciamento de Redes: Estudos de Protocolos. Workshop de Administração e Integração de Sistemas, UFPE.

Zabbix (2012). Zabbix documentation for version 1.8. Disponpivel em http://www.zabbix.com/documentation/1.8/. Último acesso em 08/Setembro/2012.

Peter Haag (2008). Tracking Incidents with NfSen. SWITCH-CERT. Disponível em http://www.switch.ch/all/cert/downloads/presentations/index.html. Último acesso 08/Setembro/2012

80 / 80

Dúvidas?

Recommended