LABORATÓRIO VIII Introdução ao SNMP e Logging pt. I Documento versão 0.1 Aluno: Paulo Henrique Moreira Gurgel #5634135 Orientado pela Professora Kalinka Regina Lucas Jaquie Castelo Branco Agosto / 2010
Laboratório VIII SNMP e Logging Objetivos do laboratório Ter um primeiro contato com o gerenciamento de redes Aprender a obter informações sobre o funcionamento do sistema Aprender a configurar um agente SNMP v1 Conhecer os comandos básicos para obtenção de informações de SNMP. Cenário sendo reproduzido A figura abaixo representa a topologia de rede sendo estudada. Usamos uma ligeira variação da topologia estudada nos laboratórios 5 e 7. Os enlaces, ips e nomes das máquinas são demonstrados abaixo e todas as interfaces de rede estão ativas. O acesso à internet também já está distribuído. Os nomes das máquinas agora representam as funções que as mesmas representam dentro da empresa. O gerente de redes deverá acessar as informações das demais máquinas que controla. Nosso estagiário estará escutando a rede na tentativa de obter informações úteis que possam lhe permitir ganhar algum lucro quando se desligar da empresa.
Conhecimentos de rede que você irá adquirir Você irá aprender as configurações básicas de um agente SNMP e como obter informações do mesmo. Conheceremos também uma árvore MIB e obteremos diversas informações das máquinas da rede. Configuraremos também o syslog para permitir que as máquinas da rede enviem informações para os gerentes. O syslog será útil mais tarde quando avançarmos um pouco mais no laboratório de SNMP. Antes de continuar, é importante lembrar que você deve ter feito a instalação do software Wireshark que será utilizado neste lab, portanto use os comandos apt-get install wireshark (distribuições debian) ou urpmi wireshark (mandriva) para instalar este software, caso o mesmo não esteja instalado. Devemos lembrar que, os comandos marcados com a tag [real] deverão ser executados no console real. Os demais comandos serão executados dentro das máquinas virtuais. Sempre que exigido a instrução pedirá uma máquina virtual específica. Execução do laboratório Importante: Este lab requer diversas janelas. Use um ambiente de trabalho com vários espaços, preferencialmente 4 deles. Gnome, Kde, Xfce tem quatro espaços por padrão. Use um deles ou configure seu ambiente preferido para quatro espaços. 1. [real] Salve o arquivo netkit_lab08.tar.gz na sua pasta de labs. (/home/seu_nome/nklabs). 2. [real] Acesse a pasta nklabs a partir do terminal [seu_nome@suamaquina ~]$ cd /home/seu_nome/nklabs 3. [real] Use o comando: [seu_nome@suamaquina ~]$ tar -xf netkit_lab08.tar.gz Será criada a pasta lab08 dentro da sua pasta nklabs. 4. [real] Use o comando a seguir: [seu_nome@suamaquina ~]$ lstart -d /home/seu_nome/nklabs/lab08 As oito máquinas virtuais serão iniciadas com as interfaces de rede devidamente configuradas. A internet está distribuída para os computadores da empresa. 5. [real] Organize suas janelas de modo a localizar qualquer uma delas rapidamente. Nós usaremos efetivamente neste laboratório as cinco máquinas da empresa.
Parte 1 Configurando o syslog 6. No computador GERENCIA, edite o arquivo /etc/syslog.conf e inclua a seguinte linha, logo abaixo dos primeiros comentários: *.* /root/mensagens.log Dica: Idente o segundo parametro alinhando-o com os demais para clareza na hora de ler as configurações. Comentários são as linhas que iniciam com o caractere #. 7. Altere o arquivo /etc/default/syslogd, e onde está SYSLOGD="", altere para SYSLOGD="-rm 0". O parâmetro -r indica que o syslog deverá aceitar logs remotos e o parâmetro m 0 evita que apareçam algumas marcações no log.. 8. Reinicie o serviço do syslog com o seguinte comando: gerencia:~$ /etc/init.d/sysklogd restart 9. No computador ESTAGIARIO, altere o arquivo /etc/syslog.conf e inclua a seguinte linha, logo abaixo dos primeiros comentários. *.* @gerente.empresa.usp Essa linha indica para o syslog enviar todos os logs para o gerente. O primeiro * indica o serviço que será logado e o segundo, indica o nível de privilégio. 10. Reinicie o serviço do syslog com o seguinte comando: gerencia:~$ /etc/init.d/sysklogd restart A partir de agora deixaremos nosso estagiário mal intencionado capturando as informações que passam pela rede com o conhecido tcpdump. Isso permitirá estudar os pacotes de log e do protocolo SNMP posteriormente. 11. No computador ESTAGIARIO, inicie a captura de pacotes com o tcpdump. estagiario:~$ tcpdump -i eth0 -v -n -s 1600 -w /hosthome/lab8.pcap. 12. Repita os passos 09 e 10 para as máquinas firewall, financeiro e servidor. 1. Inserir "*.* @gerente.empresa.usp" no arquivo /etc/syslog.conf 2. Reiniciar o serviço do syslog. Importante: A configuração do syslog varia um pouco entre distribuições. Este é o estilo da distribuição Debian. Mas ubuntu, mandriva e outras distribuições apresentam variações. Em particular a maior variação está no local onde pode ser ajustado o parâmetro SYSLOGD. Em algumas distribuições ele deve ser acertado em /etc/sysconfig, outras direto no arquivo do daemon, em /etc/init.d. Acostume-se a usar o manual dos serviços da sua distribuição preferida. 13. Acesse o manual de configuração do syslog.conf com o comando: servidor:~$ man syslog.conf 14. A partir da máquina servidor, envie um evento de log para o gerente.
servidor:~$ logger -p user.info "Terminei de configurar o syslog" 15. Usando a tecla (seta para cima), envie o comando acima mais duas vezes seguidas.. 16. Agora na máquina gerente, use o comando cat para ler o arquivo de log. gerente:~$ cat ~/mensagens.log Veja que a configuração correta do syslog ajudou a descobrir que o estagiário está mal intencionado. Uma das primeiras linhas do log avisa que o estagiário entrou me modo promíscuo. Deixaremos agora o syslog capturar as informações do que fizermos posteriormente. Parte 2 Consultando informações por SNMP 17. Na máquina firewall, edite o arquivo /etc/snmp/snmpd.conf firewall:~$ vi /etc/snmp/snmpd.conf 18. Localize as primeiras linhas não comentadas, do comando com2sec. Ajuste-as de modo que firem como a seguir: com2sec paranoid 10.1.1.20 pacommu com2sec readonly 10.1.1.20 rocommu com2sec readwrite 10.1.1.20 rwcommu O comando com2sec faz o ajuste das opções de segurança. Você está dizendo que para os níveis de acesso paranoid, readonly e readwrite, apenas o ip 10.1.1.20 pode consultar informações através das comunidades especificadas. No SNMP, a comunidade funciona como a senha para obter informações. 19. Localize as linhas que contem os parâmetros de configuração syslocation e syscontact e ajuste=as como a seguir:. syslocation Firewall da empresa syscontact SEU_NOME <gerente@empresa.usp> 20. Façamos uma consulta para verificar a informação syslocation. Para isso é necessário descobrir a mib que tem essa informação: firewall:~$ snmptranslate -On -IR syslocation retornará: 1.3.6.1.2.1.1.6 21. Use o comando a seguir para buscar a informação desejada: firewall:~$ snmpget -v 1 -c rwcommu localhost 1.3.6.1.2.1.1.6.0 Após alguns segundos você obterá uma resposta negativa. Como configuramos o SNMP agente para responder apenas ao gerente, precisamos fazer a consulta pelo gerente.
22. A partir da máquina gerente, ise o comando a seguir para buscar a informação desejada: gerente:~$ snmpget -v 1 -c rwcommu firewall.empresa.usp 1.3.6.1.2.1.1.6.0 Agora sim a resposta foi obtida corretamente. Vamos terminar de configurar os agentes nas demais máquinas antes de continuar realizando comandos SNMP. Mas sejamos espertos. 23. Na máquina firewall, use o comando a seguir para copiar o snmpd.conf. firewall:~$ cp /etc/snmp/snmpd.conf /hosthome 24. Na máquina servidor, copie o arquivo pré-configurado com o comando a seguir, confirmando a sobrescrição. servidor:~$ cp /hosthome/snmpd.conf /etc/snmp/ 25. Ajuste apenas a configuração SysLocation agora do arquivo para "Servidor da empresa". 26. Repita o processo para a máquina financeiro, identificando sua localização com "sala do tesouro" 27. Inicie o serviço SNMP das máquinas servidor e financeiro. 28. A partir do gerente, obtenha a syslocation das demais máquinas. A partir de agora, iremos obter algumas informações. 29. Obtenha do firewall a descrição da interface de rede, usando o OID: 1.3.6.1.2.1.2.2.1.2.3 gerente:~$ snmpget -v 1 -c rwcommu firewall 1.3.6.1.2.1.2.2.1.2.3 Caso a resposta seja diferente de eth0, troque o dígito final, tentando 0, 1, 2 em sequencia até encontrar a eth0. 30. Use o mesmo comando para obter o endereço físico da interface de rede. OID: 1.3.6.1.2.1.2.2.1.6.3 (o digito final é o mesmo da eth0 encontrado acima) 31. Use o mesmo comando para obter a quantidade de erros em quadros nesta interface de rede. OID: 1.3.6.1.2.1.2.2.1.14.3 (o digito final é o mesmo da eth0 encontrado acima) 32. Para obter um pedaço da árvore de uma vez, é possível usar o utilitário snmpwalk. Que fará diversos comandos get e get-next em sequencia. gerente:~$ snmpwalk -v 2c -c rwcommu financeiro system O comando acima irá imprimir um pedaço da árvore referente ao ramo system. A MIB do netkit é menor que as encontradas normalmente nos roteadores, o que permite usar estes tipos de comando com segurança e passar um identificador resumido. O identificador resumido pode não funcionar em alguns equipamentos ou distribuições de linux. O modo preferível de obter a informação é através do OID.
33. Use o comando reboot no servidor. servidor:~$ reboot Aguarde o computador servidor reiniciar. 34.Encerre o tcpdump do computador do estagiário com Crtl + C 35. [real] Use o comando a seguir para encerrar a execução do laboratório: [seu_nome@suamaquina ~]$ lhalt -d /home/seu_nome/nklabs/lab08 36. [real] Use o comando a seguir para apagar os enormes arquivos.disk: [seu_nome@suamaquina ~]$ lclean -d /home/seu_nome/nklabs/lab08 37. [real] Use o comando a seguir para apagar os enormes arquivos.disk restantes: [seu_nome@suamaquina ~]$ rm /tmp/*.disk 38. [real] Estude a captura do tcpdump no wireshark. Você poderá usar a opção follow tcp stream para ver conteúdos inteiros. Formule as teorias De acordo com os conhecimentos adquiridos até agora: 1. Um gerente deveria poder setar o endereço de hardware numa entrada de tabela de tradução de endereço? Por que ou por que não? 2. Estudando os pacotes capturados, o que vocẽ percebe em relação ao sistema de log e ao snmp pela ótica da segurança? 3. Seja você o gerente de uma rede com um roteador Cisco. A Cisco disponibiliza publicamente suas Mibs em seu site. Escolha um switch comercial, faça o download de sua Mib e escolha 5 objetos, informando seu OID, que você desejaria saber via SNMP para ajudar a detectar um problema na rede. Justifique a escolha destes objetos. 4. Procure na internet pelas Oids que trazem informação sobre disco e memória. Relacione as informações que podem ser obtidas com possíveis problemas na rede. Aprendendo um pouco sobre linux Este lab demonstra mais uma vez o potencial do linux para o gerenciamento de redes. Vemos que com comandos simples, podemos obter uma quantidade enorme de informações sobre o estado de um nó da rede. A mesma teoria aplicada aqui pode ser utilizada em roteadores, switches gerenciaveis e outros equipamentos da Cisco ou de outras marcas. Vimos também o syslogd, uma ferramenta para obter informações através de log, seja local ou remoto. O SNMP pode ser configurado para gerar uma armadilha, detectando por exemplo um excesso de erros numa determinada variável e disparar uma entrada no syslogd. Há outras configurações ainda mais poderosas, como traps, o syslogng, mas elas ficam para outro lab.
Árvore MIB