sexta-feira, 22 de fevereiro de 2013

Mensagens de Log em Servidor Externo Syslog

Olá Pessoal.

Um dos aspectos mais importantes de uma rede de computadores é sua auditoria para assegurar que tudo está dentro da conformidade e é nesse sentido que uma das ferramentas mais importantes são as clássicas mensagens de log!

Essas mensagens de log podem registrar tudo que ocorreu nos dispositivos da infraestrutura, desde alterações nas configurações, registro de acessos, falha de protocolos, status das interfaces, etc. No IOS/Cisco as mensagens de log são trazidas na própria tela do console para o administrador (por padrão) e armazenadas apenas em memória interna (buffer), o que não é suficiente para assegurar que posteriormente possam ser realizadas auditorias através da verificação dos logs.

Nesse sentido, uma estratégia mais adequada quando se tem vários dispositivos é configurar esses equipamentos da infraestrutura para encaminharem as mensagens de log para uma fonte externa, como por exemplo uma estação de gerenciamento que esteja executando algum serviço de syslog.

Existem várias soluções no mercado para esse fim que podem ser pagas ou gratuitas e baseadas nas mais diversas plataformas (Linux, Windows, "Caixa", etc). Uma sugestão gratuita baseada em Linux que o leitor pode instalar em casa para testar o procedimento de confiugração do redirecionamento das mensagens de log para um servidor externo via syslog é o JFFNMS. O JFFNMS, acrônimo de "Just For Fun Network Management Station", apesar do nome, na realidade é mais do que um mero serviço de gerenciamento para diversão. Ele é uma solução completa de gerenciamento/monitoramento (network management station) que entende os principais protocolos utilizados para fins de monitoramento e controle que são: SNMP, Syslog e TACACS.

Se você estiver bem habituado com a instalação manual de aplicativos no Linux, então é possível baixar o código fonte do aplicativo na página do projeto (http://www.jffnms.org/). Caso você seja usuário Debian/Ubuntu, esse processo pode ser simplificado através do uso dos repositórios tradicionais. Tenha em mente que antes de instalar o JFFNMS você irá precisar o MySQL e do Apache instalados na máquina, afinal o sistema é todo acessado via web (apache) e as informações monitoradas têm que ser armazenados em algum banco de dados (mysql). Os procedimentos de instalação do aplicativo estão além do escopo desse artigo e há inúmeras fontes na Internet para auxiliá-lo nesse processo.

Na figura abaixo vocês podem verificar o cenário que será utilizado no exemplo. Trata-se de ambiente bem simples em que temos (i) uma rede local (LAN), (ii) um roteador que iremos configurar para encaminhar as mensagens de log e (iii) uma estação de gerenciamento baseada em Linux que estará configurada com o JFFNMS.




O procedimento de configuração do roteador (ou de um switch) para encaminhar todas as mensagens de log (syslog) para um servidor externo é bastante simples e direto, bastando para tal e entrada das seguintes linhas de comando:

01. Router(config)# service timestamp debug datetime msec localtime show-timezone year
02. Router(config)# service timestamp log datetime msec localtime show-timezone year
03. Router(config)# logging 192.168.0.201
04. Router(config)# logging trap warning
05. Router(config)# end
06. Router# show logging

Nas linhas 01 e 02 estamos instruindo o roteador a anexar a data/hora às mensagens de log, caso contrário não faria muito sentido armazená-las em um servidor externo para realização de auditoria. Na linha 03 direcionamos as mensagens de log para o servidor que estará executando o serviço syslog de armazenamento das mensagens e na quarta linha estamos indicando que os avisos (warnings) também deverão ser armazenados no servidor, não apenas mensagens de erro mais severas. A Cisco trata as mensagens de log em 8 níveis diferentes (de 0 a 7), dependendo da severidade do evento ocorrido. Esses níveis de mensagens de log são:

  • 0 -> Emergência
  • 1 -> Alerta
  • 2 -> Crítico
  • 3 -> Erro
  • 4 -> Aviso
  • 5 -> Notificação
  • 6 -> Informação
  • 7 -> Debug
    
Por padrão, todas as mensagens de severidade 0 a 3 (emergência, alerta, crítico e erro) são direcionadas para o servidor externo de log porque dizem respeito a eventos graves que comprometem de alguma forma o funcionamento do sistema. Caso o administrador queira armazenar inclusive as mensagens de menor severidade (valores maiores de 4 a 7) ele deve informar explicitamente na configuração. No entanto, é importante ter em mente que essa ação pode comprometer o desempenho do dispositivo. 

Por fim, o usuário pode utlizar o comando da linha 06 para verificar o status do cliente syslog que está em execução no roteador configurado, onde obterá uma saída com o resumo da quantidade de mensagens de log por categoria. Com o roteador configurado e o serviço JFFNMS em execução no servidor (NMS), o resultado é que através da estação de gerenciamento é possível acompanhar as mensagens de log de maneira mais centralizada através da interface web. Bons testes com a ferramenta gratuita!
 
Abraço.

Samuel.

6 comentários:

  1. Samuel,

    Tem algum comando que ele registra log de login de usuario e tipo de login (cli/telnet/ssh) ?

    Abços e otimo artigo.

    Edson

    ResponderExcluir
    Respostas
    1. Olá Edson.

      Tem sim e são dois comandos separados, sendo um para logins bem sucedidos no sistema e outro para tentativas inválidas:

      Router(config)# login on-success log
      Router(config)# login on-failure log

      Abraço.

      Excluir
  2. Olá, é possível testar esse método para gerenciamento de rede com SNMP junto ao packet tracer que não tem suporte para esse protocolo?

    ResponderExcluir
    Respostas
    1. Não, o Packet Tracer ainda não tem suporte a esses recursos.

      Excluir
  3. Olá, consigo testar no GNS essa mesma topologia com snmp mais todos os outros níveis de mensagens?

    ResponderExcluir
    Respostas
    1. Sim. No GNS3 é possível, inclusive, integrar os dispositivos emulados com máquinas em uma rede real. É questão de explorar o potencial da ferramenta.

      Excluir