Rsyslog tidak berfungsi sebagaimana mestinya, ia tidak mencatat apa pun

11

Saya menjalankan server Debian dan beberapa hari yang lalu rsyslog saya mulai bertingkah sangat aneh, daemon berjalan tetapi sepertinya tidak melakukan apa-apa. Banyak orang menggunakan sistem tetapi saya satu-satunya dengan akses root (legal).

Saya menggunakan konfigurasi rsyslogd default (jika menurut Anda relevan, saya akan melampirkannya, tetapi ini adalah paket yang disertakan).

Setelah saya memutar semua file log, mereka tetap kosong:

# 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

Upaya apa pun untuk memaksa penulisan log tidak berpengaruh:

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

Lsof menunjukkan bahwa rsyslogd tidak membuka file log:

# 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

Saya sangat frustrasi bahkan menginstal ulang paket rsyslog, tetapi masih menolak untuk login apa pun:

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

Saya pikir seseorang telah meretas sistem, jadi jalankan rkhunter, chkrootkit, sembunyikan dalam upaya menemukan proses menyembunyikan / port dan nmap di host jarak jauh untuk membandingkan dengan port yang ditunjukkan oleh netstat. Dan saya tahu ini tidak berarti apa-apa, tetapi semua terlihat baik-baik saja. Sistem ini juga memiliki firewall iptables yang sangat ketat dengan koneksi masuk / keluar.

Ini membuatku gila, tahu apa yang sedang terjadi di sini?

[EDIT - info ruang disk]

# 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 - info strace]

Strace terlihat oke untukku

[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

Log strace lengkap dapat diunduh dari sini

Victor Henriquez
sumber
2
Apakah log disk penuh?
Jenny D
Oh maaf, saya lupa menambahkan info itu, saya akan memperbarui pertanyaan. Tetapi masih ada cukup ruang untuk menulis log.
Victor Henriquez
1
coba dan strace -p <pid> atau mulai rsyslog secara manual di bawah strace dan periksa apakah ada keluhan tentang sesuatu
manjiki
Saran yang bagus, sayangnya saya belum dapat menemukan yang relevan. Saya telah memperbarui pertanyaan dengan strace log, kalau-kalau Anda dapat menemukan sesuatu yang saya lewatkan. Saya benar-benar frustrasi.
Victor Henriquez
berjalan secara manual dalam mode debug (-d jika iirc), jadi itu tidak akan bercabang, atau menggunakan opsi fork ikuti garpu strace. Saya buruk, maaf
manjiki

Jawaban:

12

Kemungkinan besar itu masalah kepemilikan file. rsyslog mulai berjalan sebagai root tetapi kemudian menjatuhkan hak istimewa dan berjalan sebagai syslog pengguna (direktif konfigurasi $ PrivDropToUser ).

file syslog (auth.log, daemon.log, dll.) pada awalnya dimiliki oleh syslog: adm tetapi jika Anda mengubah kepemilikan menjadi root (seperti yang terlihat dari daftar file Anda) maka tidak masalah jika Anda HUP (mis. reload) rsyslog atau restart itu, bahwa itu akan ditolak untuk membuka file-file itu karena kurangnya hak istimewa.

Jika perubahan kepemilikan terjadi setelah rotasi log, maka periksa createopsi konfigurasi logrotate Anda. Baik mengkonfigurasinya seperti create 0644 syslog admdi /etc/logrotate.d/rsyslogatau bahkan lebih baik, mendefinisikannya secara global dengan /etc/logrotate.confmenghilangkan mode, pemilik dan grup, cukup seperti ini create(yang merupakan konfigurasi default dengan cara), dalam hal ini nilai yang sama dari file akan digunakan. Konsultasikan man logrotateuntuk detail selengkapnya.

Beberapa versi rsyslog menyertakan $ omfileForceChown direktif sebagai solusi untuk perubahan eksternal kepemilikan file, tetapi tidak disarankan. Cara yang disarankan adalah mengonfigurasi kepemilikan dan izin dengan benar. Informasi lebih lanjut tentang masalah ini dapat ditemukan mengikuti tautan itu.

AAA
sumber
1
Ini. Untuk diskusi dan perincian lebih lanjut, lihat bug rsyslogd di launchpad: bugs.launchpad.net/ubuntu/+source/rsyslog/+bug/940030
JustinC
Anda rock man, saya kehilangan dua hari menemukan masalah ini
deFreitas
0

Saya memiliki masalah ini karena / var / log saya berada di ramdisk untuk mengurangi keausan pada SSD saya dan saya ingin memindahkannya ke HDD jadi saya memiliki lebih banyak sejarah daripada hanya boot saat ini.

Lucunya, karena itu adalah ramdisk, saya tidak punya satu untuk menyalin dari dalam mode pengguna tunggal, jadi saya tidak tahu apa yang seharusnya izin dan kepemilikan! Duh.

Cerpen, dengan lokasi baru Anda:

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

Rsyslog sekarang dapat menulis ke / var / log karena dijalankan sebagai pengguna 'syslog', grup 'syslog'.

Greg Bell
sumber
0

Jika semua izin file baik dan logrotate dikonfigurasi dengan benar, langkah Anda selanjutnya adalah melihat panggilan sistem 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 ]
 ...

Segera setelah kesalahan ketik saya diperbaiki pada file ini /etc/rsyslog.d/50-default.conf, syslog mulai menulis ke / var / log / syslog lagi!

Bjarte Brandt
sumber