Rsyslog não está funcionando corretamente, não registra nada

11

Estou executando um servidor Debian e, alguns dias atrás, meu rsyslog começou a se comportar muito estranho, o daemon está sendo executado, mas parece não fazer nada. Muitas pessoas usam o sistema, mas eu sou o único com acesso root (legal).

Estou usando a configuração padrão do rsyslogd (se você achar relevante, eu a anexarei, mas é a que acompanha o pacote).

Depois que eu girei todos os arquivos de log, eles permaneceram vazios:

# ls -l /var/log/*.log
-rw-r--r-- 1 root root 0 Jun 27 00:25 /var/log/alternatives.log
-rw-r----- 1 root adm  0 Jun 26 13:03 /var/log/auth.log
-rw-r----- 1 root adm  0 Jun 26 13:03 /var/log/daemon.log
-rw-r--r-- 1 root root 0 Jun 27 00:25 /var/log/dpkg.log
-rw-r----- 1 root adm  0 Jun 26 13:03 /var/log/kern.log
-rw-r----- 1 root adm  0 Jun 26 13:03 /var/log/lpr.log
-rw-r----- 1 root adm  0 Jun 26 13:03 /var/log/mail.log
-rw-r----- 1 root adm  0 Jun 26 13:03 /var/log/user.log

Qualquer tentativa de forçar uma gravação de log não tem nenhum efeito:

# logger hey
# ls -l /var/log/messages 
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/messages

Lsof mostra que o rsyslogd não possui nenhum arquivo de log aberto:

# lsof -p 1855
COMMAND   PID USER   FD   TYPE     DEVICE SIZE/OFF       NODE NAME
rsyslogd 1855 root  cwd    DIR      202,0     4096          2 /
rsyslogd 1855 root  rtd    DIR      202,0     4096          2 /
rsyslogd 1855 root  txt    REG      202,0   342076      21649 /usr/sbin/rsyslogd
rsyslogd 1855 root  mem    REG      202,0    38556      32153 /lib/i386-linux-gnu/i686/cmov/libnss_nis-2.13.so
rsyslogd 1855 root  mem    REG      202,0    79728      32165 /lib/i386-linux-gnu/i686/cmov/libnsl-2.13.so
rsyslogd 1855 root  mem    REG      202,0    26456      32163 /lib/i386-linux-gnu/i686/cmov/libnss_compat-2.13.so
rsyslogd 1855 root  mem    REG      202,0   297500    1061058 /usr/lib/rsyslog/imuxsock.so
rsyslogd 1855 root  mem    REG      202,0    42628      32170 /lib/i386-linux-gnu/i686/cmov/libnss_files-2.13.so
rsyslogd 1855 root  mem    REG      202,0    22784    1061106 /usr/lib/rsyslog/imklog.so
rsyslogd 1855 root  mem    REG      202,0  1401000      32169 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so
rsyslogd 1855 root  mem    REG      202,0    30684      32175 /lib/i386-linux-gnu/i686/cmov/librt-2.13.so
rsyslogd 1855 root  mem    REG      202,0     9844      32157 /lib/i386-linux-gnu/i686/cmov/libdl-2.13.so
rsyslogd 1855 root  mem    REG      202,0   117009      32154 /lib/i386-linux-gnu/i686/cmov/libpthread-2.13.so
rsyslogd 1855 root  mem    REG      202,0    79980      17746 /usr/lib/libz.so.1.2.3.4
rsyslogd 1855 root  mem    REG      202,0    18836    1061094 /usr/lib/rsyslog/lmnet.so
rsyslogd 1855 root  mem    REG      202,0   117960      31845 /lib/i386-linux-gnu/ld-2.13.so
rsyslogd 1855 root    0u  unix 0xebe8e800      0t0        640 /dev/log
rsyslogd 1855 root    3u  FIFO        0,5      0t0       2474 /dev/xconsole
rsyslogd 1855 root    4u  unix 0xebe8e400      0t0        645 /var/spool/postfix/dev/log
rsyslogd 1855 root    5r   REG        0,3        0 4026532176 /proc/kmsg

Fiquei tão frustrado que até reinstalou o pacote rsyslog, mas ele ainda se recusa a registrar qualquer coisa:

# apt-get remove --purge rsyslog
# apt-get install rsyslog

Eu pensei que alguém havia hackeado o sistema, então execute rkhunter, chkrootkit, reexibir na tentativa de encontrar ocultar processos / portas e nmap em um host remoto para comparar com as portas mostradas pelo netstat. E eu sei que isso não significa nada, mas tudo parece ok. O sistema também possui um firewall de tabelas de ip muito restritivo às conexões de entrada / saída.

Isso está me deixando louco, alguma idéia do que está acontecendo aqui?

[EDIT - informações sobre espaço em disco]

# df -h
Filesystem            Size  Used Avail Use% Mounted on
rootfs                 24G   22G  629M  98% /
/dev/root              24G   22G  629M  98% /
devtmpfs               10M  112K  9.9M   2% /dev
tmpfs                  76M   48K   76M   1% /run
tmpfs                 5.0M     0  5.0M   0% /run/lock
tmpfs                 151M   40K  151M   1% /tmp
tmpfs                 151M     0  151M   0% /run/shm

[EDIT - informações do rastreio]

Strace parece ok para mim

[pid 28824] access("/var/log/auth.log", F_OK) = 0
[pid 28824] access("/var/log/syslog", F_OK) = 0
[pid 28824] access("/var/log/daemon.log", F_OK) = 0
[pid 28824] access("/var/log/kern.log", F_OK) = 0
[pid 28824] access("/var/log/lpr.log", F_OK) = 0
[pid 28824] access("/var/log/mail.log", F_OK) = 0
[pid 28824] access("/var/log/user.log", F_OK) = 0
[pid 28824] access("/var/log/mail.info", F_OK) = 0
[pid 28824] access("/var/log/mail.warn", F_OK) = 0
[pid 28824] access("/var/log/mail.err", F_OK) = 0
[pid 28824] access("/var/log/news/news.crit", F_OK) = 0
[pid 28824] access("/var/log/news/news.err", F_OK) = 0
[pid 28824] access("/var/log/news/news.notice", F_OK) = 0
[pid 28824] access("/var/log/debug", F_OK) = 0
[pid 28824] access("/var/log/messages", F_OK) = 0

O log de rastreamento completo pode ser baixado aqui

Victor Henriquez
fonte
2
O disco de log está cheio?
Jenny D
Oh, desculpe, esqueci de adicionar essa informação, vou atualizar a pergunta. Mas ainda há espaço suficiente para gravar logs.
Victor Henriquez
1
tentar strace -p <pid> ou iniciar rsyslog manualmente sob strace e verificar se ele está reclamando sobre algo
manjiki
Bom conselho, infelizmente não consegui encontrar nada relevante. Atualizei a pergunta com o log de strace, para o caso de você encontrar algo que está faltando. Estou muito frustrada.
Victor Henriquez
execute manualmente no modo de depuração (-d se iirc), para não bifurcar ou use a opção de seguir garfos do strace. Meu mal, desculpe.
manjiki

Respostas:

12

Provavelmente é um problema de propriedade de arquivos. O rsyslog começa a ser executado como root, mas descarta privilégios e é executado como usuário syslog (diretiva de configuração $ PrivDropToUser ).

Os arquivos syslog (auth.log, daemon.log, etc.) pertencem inicialmente ao syslog: adm, mas se você alterar a propriedade para root (como parece na sua lista de arquivos), não importa se você HUP (ou seja, recarrega) o rsyslog ou reinicie-o, pois será negado abrir esses arquivos devido à falta de privilégios.

Se a mudança de propriedade ocorreu após a rotação do log, verifique a createopção da sua configuração de rotação do log . O configure-o como create 0644 syslog admno /etc/logrotate.d/rsyslogou melhor ainda, defini-lo globalmente em /etc/logrotate.confomitindo o modo, proprietário e grupo, simplesmente como este create(que é a configuração padrão, por sinal), caso em que serão utilizados os mesmos valores do arquivo. Consulte man logrotatepara mais detalhes.

Algumas versões do rsyslog incluem uma diretiva $ omfileForceChown como uma solução alternativa para a alteração externa da propriedade do arquivo, mas isso não é recomendado. A maneira recomendada é configurar corretamente a propriedade e as permissões. Mais informações sobre esse problema podem ser encontradas após esse link.

AAA
fonte
1
Este. Para mais discussão e detalhes, veja o bug rsyslogd no Launchpad: bugs.launchpad.net/ubuntu/+source/rsyslog/+bug/940030
JustinC
Você homem da rocha, eu perdi dois dias encontrar este problema
DeFreitas
0

Eu tive esse problema porque meu / var / log residia em um ramdisk para reduzir o desgaste do meu SSD e queria movê-lo para um HDD, para que eu tivesse mais histórico do que apenas a inicialização atual.

O engraçado é que, como era um ramdisk, eu não tinha um para copiar no modo de usuário único, então não sabia quais deveriam ser as permissões e a propriedade! Duh.

Resumindo, com seu novo local:

chmod 770 /var/log
chgrp syslog /var/log
initctl restart rsyslog

Agora, o Rsyslog poderá gravar em / var / log, pois é executado como usuário 'syslog', grupo 'syslog'.

Greg Bell
fonte
0

Se as permissões de arquivo forem boas e o logrotate estiver configurado corretamente, sua próxima etapa será dar uma olhada nas chamadas do sistema rsyslog.

# find the start command 
me@d2-slprod02:~$ sudo systemctl status rsyslog
● rsyslog.service - System Logging Service
   Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-06-21 10:04:43 CEST; 2h 26min ago
     Docs: man:rsyslogd(8)
           http://www.rsyslog.com/doc/
 Main PID: 18753 (rsyslogd)
    Tasks: 4
   Memory: 1.4M
      CPU: 291ms
   CGroup: /system.slice/rsyslog.service
           └─18753 /usr/sbin/rsyslogd -n

 # let's have a look at syscalls.
 sudo strace /usr/sbin/rsyslogd -n
 ...
 write(2, "rsyslogd: error during parsing f"..., 206rsyslogd: error during parsing file /etc/rsyslog.d/50-default.conf, on or before line 8: warnings occured in file '/etc/rsyslog.d/50-default.conf' around line 8 [v8.16.0 try http://www.rsyslog.com/e/2207 ]
 ...

Assim que meu erro de digitação foi corrigido nesse arquivo /etc/rsyslog.d/50-default.conf, o syslog começou a gravar em / var / log / syslog novamente!

Bjarte Brandt
fonte