você está aqui: Home  → Arquivo de Mensagens

Log remoto com o rsyslog

Colaboração: Flavio Alexandre dos Reis

Data de Publicação: 18 de maio de 2010

Logs são arquivos texto gerados pelo sistema e que podem ajudar a descobrir problemas na execução de softwares, problemas de hardware. Tentativas de invasão podem ser descobertas com análise dos logs. É muito importante deixar esses arquivos seguros e intactos. Em uma auditoria de sistemas esses logs serão importantes, portanto, logs nunca devem ser alterados, somente o root deverá ter acesso a eles.

Nesse documento será apresentado um exemplo de como gerar log em hosts clientes e destiná-los a servidores remotos, centralizando a gravação dos logs.

Para executar o exemplo foram utilizadas duas máquinas com Ubuntu 9.10, e o aplicativo usado como exemplo para gerar o log remoto foi o agendador de tarefas (cron).

Configurações no Cliente

Primeiro passo, verificar se o rsyslog está instalado.

  # aptitude search rsyslog
  i   rsyslog  - enhanced multi-threaded syslogd

Observe que o rsyslog está instalado. Se a primeiro letra for um (p) o aplicativo está disponível mas não instalado.

Para instalar

  # apttude install rsyslog

Faça o mesmo processo em todas as máquinas, sejam clientes ou servidores.

Editando o arquivo de configuraçao no cliente.

  # vim /etc/rsyslog.conf

Observe a diretiva "IncludeConfig". Ela indica que todos os arquivos .conf localizados em`` /etc/rsyslog.d`` serão adicionados. Isso facilita na organização do arquivo.

  # Include all config files in /etc/rsyslog.d/
  $IncludeConfig /etc/rsyslog.d/*.conf

Observe o caminho indicado e acesse o diretório.

  # cd /etc/rsyslog.d
  # vim 50-default.conf

Observe as linhas referentes ao cron.

Agora entra o conceito de facilidade.nível destino.

Resumindo:

  • Facilidade: Qual aplicação será logada.
  • Nível: Qual a criticidade onde o log será gerado, o "*" mostra todas.
  • Destino: Destino. Aqui temos várias opções, arquivo, usuário (s), terminal, outro host.

A linha será alterada e destinada a um host remoto (nosso servidor de logs).

Por padrão essa linha vem comentada, faça a seguinte alteração.

Antes:

  ;cron.* /var/log/cron.log

Depois:

  cron.* @192.168.220.34

Onde: 192.168.220.34 é o servidor que irá receber os logs.

Salve as alterações e feche o arquivo.

Reinicie o rsyslog para que as alterações façam afeito.

  # invoke-rc.d rsyslog restart

As configurações no cliente estão encerradas, voltaremos no cliente posteriormente.

Configurações no servidor

Conforme falado no inicio, verifique se rsyslog está instalado

  # aptitude search rsyslog

Primeiro passo e ativar a gravação do log remoto, se o arquivo não existir poderá ser criado e inserido a seguinte diretiva.

  # vim /etc/default/rsyslog
  SYSLOGD="-r"

No arquivo /etc/rsyslog.conf será necessário observar alguns detalhes. O syslog, quando configurado para receber log remotamente, deverá estar com a porta 514 liberada.

Observe se as diretivas abaixo estão ativas no servidor, essas diretivas habilitam a escuta do log remoto.

  # vim /etc/rsyslog.conf
  # provides UDP syslog reception
  $ModLoad imudp
  $UDPServerRun 514

Observe a diretiva "IncludeConfig"

  # Include all config files in /etc/rsyslog.d/
  $IncludeConfig /etc/rsyslog.d/*.conf

Salve as alterações e feche o arquivo.

Agora será configurado o arquivo que receberá o log do cliente.

  # cd /etc/rsyslo.d
  # vim 50-default.conf

Observe as linhas referentes ao cron

Antes:

  ;cron.* /var/log/cron.log

Depois:

  cron.* /var/log/cron.log

Salve as alterações e feche o arquivo.

Reinicie o rsyslog

  # invoke-rc.d rsyslog restart

Pode-se executar um check-list para Verificar se o serviço está disponível. Esse passo é muito importante para saber se as configurações surtiram efeito. Aqui foi utilizado o netstat fazendo um filtro na porta 514.

  # netstat -putan | grep 514
  udp 0 0 0.0.0.0:514 0.0.0.0:* 9380/rsyslogd
  udp6 0 0 :::514 :::* 9380/rsyslogd

Conferindo os log gerados pelo cliente.

Acesse o terminal 2 ( ctrl + alt + f2 ) e execute a seguinte linha de comando.

  # tail -f /var/log/cron.log

Acesse o terminal 3 ( ctrl + alt + f3 ) e execute a seguinte linha de comando.

  # tcpdump port 514 -i eth0 -n -vv

No cliente reinicie o cron

  # invoke-rc.d cron restart

Volte ao terminal 2 e observe a saída do log.

  # tail -f /var/log/cron.log
  Apr 12 23:49:42 reisfa-vostro cron[3050]: (CRON) INFO (pidfile fd = 3)
  Apr 12 23:49:42 reisfa-vostro cron[3051]: (CRON) STARTUP (fork ok)
  Apr 12 23:49:42 reisfa-vostro cron[3051]: (CRON) INFO (Skipping @reboot jobs -- not system startup)

Volte ao terminal 3 e observe a saída do log.

  # tcpdump port 514 -i eth0 -n -vv
  tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
  00:46:51.198563 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 102)
  192.168.220.36.38980 > 192.168.220.34.514: SYSLOG, length: 74
  Facility cron (9), Severity info (6)
  Msg: Apr 13 00:46:52 reisfa-vostro cron[2909]: (C[|syslog]
  00:46:51.198579 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 98)
  192.168.220.36.38980 > 192.168.220.34.514: SYSLOG, length: 70
  Facility cron (9), Severity info (6)
  Msg: Apr 13 00:46:52 reisfa-vostro cron[2910]: (C[|syslog]
  00:46:51.200372 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 131)
  192.168.220.36.38980 > 192.168.220.34.514: SYSLOG, length: 103
  Facility cron (9), Severity info (6)
  Msg: Apr 13 00:46:52 reisfa-vostro cron[2910]: (C[|syslog]

Todas as atividades do efetuadas no cron serão logadas.



Veja a relação completa dos artigos de Flavio Alexandre dos Reis