Rsyslog ทำงานไม่ถูกต้องไม่บันทึกสิ่งใด


11

ฉันใช้เซิร์ฟเวอร์ Debian และสองสามวันที่ผ่านมา rsyslog ของฉันเริ่มทำงานผิดปกติมาก daemon กำลังทำงานอยู่ แต่ดูเหมือนจะไม่ทำอะไรเลย หลายคนใช้ระบบ แต่ฉันเป็นคนเดียวที่เข้าถึงรูท (ถูกกฎหมาย)

ฉันใช้การตั้งค่าเริ่มต้น rsyslogd (ถ้าคุณคิดว่ามีความเกี่ยวข้องฉันจะแนบ แต่มันเป็นสิ่งที่มาพร้อมกับแพ็คเกจ)

หลังจากฉันหมุนไฟล์บันทึกทั้งหมดแล้วไฟล์เหล่านั้นจะยังคงว่างเปล่า:

# 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

ความพยายามใด ๆ ที่จะบังคับให้เขียนบันทึกไม่มีผลกระทบใด ๆ :

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

Lsof แสดงให้เห็นว่า rsyslogd ไม่ได้เปิดไฟล์บันทึกใด ๆ :

# 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

ฉันผิดหวังมากที่ติดตั้งแพคเกจ rsyslog แต่ก็ยังปฏิเสธที่จะบันทึกอะไร:

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

ฉันคิดว่ามีบางคนที่แฮ็คระบบดังนั้นให้เรียกใช้ rkhunter, chkrootkit, เลิกซ่อนในความพยายามที่จะค้นหาโพรเซส / พอร์ตและ nmap ในรีโมตโฮสต์เพื่อเปรียบเทียบกับพอร์ตที่แสดงโดย netstat และฉันรู้ว่านี่ไม่ได้หมายความว่าอะไร แต่ทุกอย่างดูโอเค ระบบยังมีไฟร์วอลล์ iptables ที่ จำกัด มากด้วยการเชื่อมต่อขาเข้า / ขาออก

นี่ทำให้ฉันบ้าความคิดใด ๆ เกิดขึ้นที่นี่

[แก้ไข - ข้อมูลพื้นที่ดิสก์]

# 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

[แก้ไข - ข้อมูล strace]

Strace ดูโอเคสำหรับฉัน

[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

สามารถดาวน์โหลดบันทึก strace แบบสมบูรณ์ได้ที่นี่


2
ดิสก์บันทึกข้อมูลเต็มหรือไม่
เจนนี่ D

ขอโทษที่ฉันลืมเพิ่มข้อมูลฉันจะอัปเดตคำถาม แต่ยังมีพื้นที่ว่างเพียงพอในการเขียนบันทึก
Victor Henriquez

2
และพยายาม strace -p <pid> หรือเริ่ม rsyslog ด้วยตนเองภายใต้ strace และตรวจสอบหากมีการร้องเรียนเกี่ยวกับบางสิ่งบางอย่าง
manjiki

คำแนะนำที่ดีน่าเสียดายที่ฉันไม่สามารถค้นหาสิ่งที่เกี่ยวข้องได้ ฉันได้อัปเดตคำถามด้วยบันทึก strace ในกรณีที่คุณสามารถค้นหาบางสิ่งที่ขาดหายไป ฉันผิดหวังจริงๆ
Victor Henriquez

เรียกใช้ด้วยตนเองในโหมดแก้ไขข้อบกพร่อง (-d ถ้า iirc) ดังนั้นมันจะไม่แยกหรือใช้ตัวเลือกการติดตามของ strace ไม่ดีขอโทษด้วย
manjiki

คำตอบ:


13

ส่วนใหญ่อาจเป็นปัญหาการเป็นเจ้าของไฟล์ rsyslog เริ่มทำงานในฐานะรูท แต่จากนั้นให้ลดระดับสิทธิ์และเรียกใช้ในฐานะผู้ใช้ syslog (คำสั่งกำหนดค่า$ PrivDropToUser )

ไฟล์ syslog (auth.log, daemon.log ฯลฯ ) เริ่มแรกเป็นเจ้าของโดย syslog: adm แต่ถ้าคุณเปลี่ยนความเป็นเจ้าของให้เป็นรูท รีสตาร์ทมันว่ามันจะถูกปฏิเสธที่จะเปิดไฟล์เหล่านั้นเนื่องจากการขาดสิทธิ์

หากการเปลี่ยนแปลงการเป็นเจ้าของเกิดขึ้นหลังจากการหมุนเวียนบันทึกให้ตรวจสอบcreateตัวเลือกการกำหนดค่า logrotate ของคุณ กำหนดค่าอย่างใดอย่างหนึ่งมันเหมือนcreate 0644 syslog admใน/etc/logrotate.d/rsyslogหรือดียิ่งกว่ากำหนดมันทั่วโลกที่/etc/logrotate.confถนัดโหมดเจ้าของและกลุ่มเพียงเช่นนี้create(ซึ่งเป็นกำหนดค่าเริ่มต้นโดยวิธีการ) ซึ่งในกรณีที่ค่าเดียวกันของไฟล์จะถูกนำมาใช้ ปรึกษาman logrotateรายละเอียดทั้งหมด

rsyslog บางเวอร์ชันมีคำสั่ง$ omfileForceChownเป็นวิธีแก้ปัญหาสำหรับการเปลี่ยนแปลงความเป็นเจ้าของไฟล์ภายนอก แต่ไม่แนะนำ วิธีที่แนะนำคือการกำหนดค่าความเป็นเจ้าของและสิทธิ์อย่างถูกต้อง ข้อมูลเพิ่มเติมเกี่ยวกับปัญหานี้อาจพบได้ที่ลิงค์นั้น


1
นี้. สำหรับการสนทนาและรายละเอียดเพิ่มเติมโปรดดูข้อผิดพลาด rsyslogd บน launchpad: bugs.launchpad.net/ubuntu/+source/rsyslog/+bug/940030
JustinC

คุณมนุษย์ร็อคฉันสูญเสียสองวันในการค้นหาปัญหานี้
deFreitas

1

หากสิทธิ์ไฟล์ทั้งหมดดีและมีการกำหนดค่า logrotate อย่างถูกต้องขั้นตอนต่อไปของคุณคือดูการเรียกระบบ 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 ]
 ...

ทันทีที่การพิมพ์ผิดของฉันได้รับการแก้ไขในไฟล์นี้/etc/rsyslog.d/50-default.confsyslog เริ่มเขียนถึง / var / log / syslog อีกครั้ง!


0

ฉันมีปัญหานี้เพราะ / var / log ของฉันอาศัยอยู่บน ramdisk เพื่อลดการสึกหรอบน SSD ของฉันและฉันต้องการย้ายไปยัง HDD ดังนั้นฉันจึงมีประวัติมากกว่าการบูทปัจจุบัน

สิ่งที่ตลกคือเนื่องจากเป็น ramdisk ฉันไม่ต้องคัดลอกจากในโหมดผู้ใช้คนเดียวดังนั้นฉันจึงไม่รู้ว่าสิทธิ์และความเป็นเจ้าของควรจะเป็นอะไร! ดุจ

เรื่องสั้นที่ตั้งใหม่ของคุณ:

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

ตอนนี้ Rsyslog จะสามารถเขียนไปยัง / var / log ได้เนื่องจากจะทำงานในฐานะผู้ใช้ 'syslog' กลุ่ม 'syslog'

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.