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

Opinião dos Leitores

Thiago
25 Jul 2014, 00:05
valeeeeu me ajudou bastante !
Daniel Moreno
17 Jun 2014, 17:16
Qual a configuração do rsyslog que mostra IP ao invés de hostname ?

Atencisosamente,
Daniel Moreno
Rodrigo
04 Mar 2013, 10:45
rapaiz, eu dei este comando:
invoke-rc.d rsyslog restart

agora ele fica rodando isso aqui na minha tela:
nel:[ 502.903375] INPUT:IN=eth2 OUT= MAC=00:e0:7d:ee:58:a2:1c:7e:e5:2a:95:d0:08:00 SRC=192.168.0.10 DST=192.168.0.1 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=12281 DF PROTO=TCP SPT=3349 DPT=22 WINDOW=64140 RES=0x00 ACK URGP=0

Message from syslogd@proxy at Mar 4 10:41:13 ...
kernel:[ 502.904664] OUTPUT:IN= OUT=eth2 SRC=192.168.0.1 DST=192.168.0.10 LEN=332 TOS=0x10 PREC=0x00 TTL=64 ID=58466 DF PROTO=TCP SPT=22 DPT=3349 WINDOW=142 RES=0x00 ACK PSH URGP=0

Message from syslogd@proxy at Mar 4 10:41:13 ...
kernel:[ 502.905572] OUTPUT:IN= OUT=eth2 SRC=192.168.0.1 DST=192.168.0.10 LEN=364 TOS=0x10 PREC=0x00 TTL=64 ID=58467 DF PROTO=TCP SPT=22 DPT=3349 WINDOW=142 RES=0x00 ACK PSH URGP=0

Message from syslogd@proxy at Mar 4 10:41:13 ...
kernel:[ 502.905572] INPUT:IN=eth2 OUT= MAC=00:e0:7d:ee:58:a2:1c:7e:e5:2a:95:d0:08:00 SRC=192.168.0.10 DST=192.168.0.1 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=12282 DF PROTO=TCP SPT=3349 DPT=22 WINDOW=65340 RES=0x00 ACK URGP=0

Message from syslogd@proxy at Mar 4 10:41:13 ...
kernel:[ 502.905572] OUTPUT:IN= OUT=eth2 SRC=192.168.0.1 DST=192.168.0.10 LEN=332 TOS=0x10 PREC=0x00 TTL=64 ID=58468 DF PROTO=TCP SPT=22 DPT=3349 WINDOW=142 RES=0x00 ACK PSH URGP=0

Message from syslogd@proxy at Mar 4 10:41:13 ...
kernel:[ 502.905572] OUTPUT:IN= OUT=eth2 SRC=192.168.0.1 DST=192.168.0.10 LEN=364 TOS=0x10 PREC=0x00 TTL=64 ID=58469 DF PROTO=TCP SPT=22 DPT=3349 WINDOW=142 RES=0x00 ACK PSH URGP=0

Message from syslogd@proxy at Mar 4 10:41:13 ...
kernel:[ 502.903375] INPUT:IN=eth2 OUT= MAC=00:e0:7d:ee:58:a2:1c:7e:e5:2a:95:d0:08:00 SRC=192.168.0.10 DST=192.168.0.1 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=12283 DF PROTO=TCP SPT=3349 DPT=22 WINDOW=64724 RES=0x00 ACK URGP=0

Message from syslogd@proxy at Mar 4 10:41:13 ...
kernel:[ 502.905572] OUTPUT:IN= OUT=eth2 SRC=192.168.0.1 DST=192.168.0.10 LEN=364 TOS=0x10 PREC=0x00 TTL=64 ID=58470 DF PROTO=TCP SPT=22 DPT=3349 WINDOW=142 RES=0x00 ACK PSH UR

e nao para, ja tentei reiniciar o servidor mas continua. Alguem me da uma luz ai ? abraços
maico
22 Mai 2012, 16:38
Bom e Objetivo! Boa também a dica para habiltar o tcp ao invés de udp.
Arthur Duarte
04 Mai 2011, 08:39
Olá, muito bom tutorial.

Só algumas coisinhas erradas:

No segundo campo de código, está errado:

# apttude install rsyslog

Deveria ser:

# aptitude install rsyslog

E lá quase no final, nessa parte:

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

Você poderia ter usado TCP, porque a maioria do pessoal que usa Cloud Server vai ter problemas usando UDP se a máquina fonte for uma EC2.

Obrigado.
felipe
02 Fev 2011, 09:32
Muito show!!!
Parabéns..abraços!!!
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script