Centralizando logs no syslog

Uma visão preventiva para diagnosticar problemas deve ser o foco de quem se interessar em implementar um servidor de logs centralizado.

Problemas comuns como estouro de quota em disco, falhas na impressão de documentos, problemas no trafego da rede, podem ser evitados quando o sistema é monitorado com frequência.

O objetivo deste documento é mostrar os requisitos, aplicações, funcionalidades, e uso de um sistema eficiente e centralizado de mensagens de log.

Requisitos

Fenômenos na rede

  • As mensagens do syslog são transmitidas pelo protocolo UDP na porta 514, tendo sempre um tamanho igual ou inferior a 1024 bytes por pacote [TSP].
  • Geralmente o syslog não provoca sobrecarga em nenhum link de rede.
  • As variaveis que influenciam diretamente na banda consumida na rede sao:
    • Número de máquinas participantes
    • Quantidade de recursos monitorados
    • Nível de detalhe dos logs

Espaço em disco

  • O espaco em disco que será necessário para implantacão de um servidor centralizado de logs irá depender dos seguintes fatores:
    • Número de máquinas participantes
    • Quantidade de recursos monitorados
    • Nível de detalhe dos logs
  • Outros fatores como os tipos de aplicacões que são executados, e o número de usuários de um determinado sistema também podem influenciar significativamente no espaco em disco consumido pelos logs.

    É extremamente recomendável usar uma solucao bem planejada de rotacionamento de logs para aliviar a carga de armazenamento dos disco, dessa forma será possível realizar uma implementacão do servidor com sucesso usando poucos recursos.

E a segurança como fica?

Um servidor syslog deve ficar protegido por um firewall [TSP], pois ele não possui nenhum tipo de autenticacão.

O syslog não é capaz de verificar a autenticidade da mensagem, sendo assim é importante adotar algum método para evitar mensagens de log forjadas por um outro dispositivo.

Não há nenhuma garantia de que as mensagens serão exibidas na ordem em que foram geradas, pois outros hosts podem enviar mensagens por intermédio da rede IP, gerando algum tipo de confusão na interpretação dos logs.

Os parâmetros de configuração

Nessa parte, o arquivo /etc/syslog.conf sofrera algumas alteracoes, fique atento ao editar este arquivo, pois ele e’ sensível ao carácter espaço. Use TABs pra identar corretamente o conteúdo do arquivo.

Usaremos o daemon do syslog com alguns parâmetros, abaixo temos uma breve explicação das opções usadas [LAS]:

-m %intervalo%

O syslogd registra uma marca regularmente, essa marca consiste numa linha com as sequencia escrita “– MARK –“. O intervalo padrão entre duas linhas são de 20 minutos. Ajustar o intervalo em zero desativa a exibição da linhas marcadoras completamente.

-r

Esta opcão habilita o recurso de receber mensagens da rede usando uma porta do protocolo TCP/IP (porta 514/udp). O padrão consiste em não receber mensagens da rede.

Configurando o servidor

Adicione as linhas abaixo no arquivo /etc/syslog.conf

# Copia toda saida de logs para os caminhos especificados
*.*	     /var/log/allnetwork

Para iniciar o syslog, use o seguinte comando:

# syslogd -m 0 -r

Configurando o cliente

Adicione as linhas abaixo no arquivo /etc/syslog.conf

# Copia toda saida de logs para o servidor especificado
*.*	     @%servidor%.%dominio%

Substitua os campos %servidor% e %dominio% pelo nome do servidor e seu domínio respectivamente. Essa linha pode ser repetida, objetivando que a mesma mensagem de log seja transmitida para vários servidores.

Para iniciar o syslog, use o seguinte comando:

# syslogd -m 0

Visualizando os logs

Visualizar os logs é uma tarefa simples, porém cansativa e desagradável, pois no exemplo de configuração citado todas as mensagens de todos os hosts de uma rede estão sendo direcionados para um único arquivo.

Para visualiza-lo, basta usar um dos vários comandos de exibição de arquivo, como mostra o exemplo:

[root@log_server]# tail /var/log/all
Sep 12 12:20:00 ws1 CROND[753]: (root) CMD (/usr/lib/sa/sa1 1 1)
Sep 12 12:20:00 ws2 CROND[2015]: (root) CMD (/usr/lib/sa/sa1 1 1)
Sep 12 12:20:00 log_server CROND[20813]: (mrtg) CMD (/var/www/mrtg/mrtg.sh)
Sep 12 12:24:00 mxs apcupsd[1033]: Communications with UPS lost.
Sep 12 12:24:00 mxs sendmail[767]: i8CFO0Cd007567: from=root, size=354
Sep 12 12:24:01 mxs apcupsd[1033]: fetch_data: tcp_open failed port 3551
Sep 12 12:24:01 mxs apcupsd[1033]: Communications with UPS restored.
Sep 12 12:30:00 ws1 CROND[2024]: (root) CMD (/usr/lib/sa/sa1 1 1)
Sep 12 12:30:01 ws2 CROND[7583]: (root) CMD (/usr/lib/sa/sa1 1 1)
Sep 12 12:33:05 log_server su(pam_unix)[2983]: session opened for user root

Nesse arquivo mensagens de todos os tipos, desde uma simples senha digitada incorretamente num terminal de usuário até mesmo um grave problema de blocos danificados num HD serão registrados.

Definindo prioridades aos logs

Como visto anteriormente, visualizar os logs é uma tarefa demorada e cansativa, o que muitas vezes pode resultar em desleixos, onde por ignorar mensagens importantes um sistema ou até mesmo uma rede inteira pode vir sofrer uma parada.

Nesta sessão temos as opções do syslog para filtrar e priorizar mensagens.

O padrao de facilidades no UNIX para o syslog é:

kern     - kernel
user     - Aplicacoes ou processos de usuarios (facilidade padrao)
mail     - Mensagens eletronicas mail/NNTP/UUCP/cron
news     - Mensagens eletronicas mail/NNTP/UUCP/cron
UUCP     - Mensagens eletronicas mail/NNTP/UUCP/cron
cron     - Mensagens eletronicas mail/NNTP/UUCP/cron
daemon   - Agentes do sistema
auth     - authentication and authorization related commands
lpr      - Linha de impressao e enfileiramento
mark     - Insere uma marca com horario em intervalos regulares
local%x% - 8 facilidades para auditoria customizada (%x% vai de 0 a 7)
syslog   - Mensagens internas geradas pelo proprio syslog
authpriv - Non-system authorization messages
*        - Equivale a todas opcoes acima exceto mark.

Para definir prioridades as mensagens, use as seguintes definições:

emerg    - O sistema ficará fora de operacao se não for resolvido
alert    - Uma acão imediata é necessária
crit     - Situacão critica
warning  - Erros recuperáveis
notice   - Situacão inesperada que mecere investigacão.
info     - Mensagens de informacão
debug    - Dados detalhados para desenvolvimento e testes

Com as informações acima, podemos definir no arquivo syslog.conf as mensagens que queremos analisar, como no exemplo abaixo que são mostradas as mensagens criticas com relação ao kernel:

# Exibe mensagens criticas ou de maior importancia vindas do kernel
kern.crit	     /var/log/allnetwork

Bibliografia

Aqui encontramos a lista de literaturas usadas para composicão deste documento:

[TSP] - RFC 3164 - The BSD syslog Protocol
        http://www.ietf.org/rfc/rfc3164.txt?number=3164

[RDS] - RFC 3195 - Reliable Delivery for syslog
        http://www.ietf.org/rfc/rfc3195.txt?number=3195

[LAS] - Linux System Administration - SYSKLOGD(8)
        $ man 8 syslogd

[SIL] - Security Issues in Network Event Logging (syslog)
        http://www.ietf.org/html.charters/syslog-charter.html

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: