Rsyslog không hoạt động đúng, nó không ghi lại bất cứ điều gì


11

Tôi đang chạy một máy chủ Debian và một vài ngày trước, rsyslog của tôi bắt đầu hoạt động rất kỳ lạ, trình nền đang chạy nhưng dường như nó không làm gì cả. Nhiều người sử dụng hệ thống nhưng tôi là người duy nhất có quyền truy cập root (hợp pháp).

Tôi đang sử dụng cấu hình rsyslogd mặc định (nếu bạn nghĩ là có liên quan tôi sẽ đính kèm, nhưng đó là cấu hình đi kèm với gói).

Sau khi tôi xoay tất cả các tệp nhật ký, chúng vẫn trống:

# 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

Bất kỳ cố gắng để viết một bản ghi nhật ký không có bất kỳ tác dụng:

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

Lsof cho thấy rsyslogd không có bất kỳ tệp nhật ký nào được mở:

# 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

Tôi đã rất thất vọng khi thậm chí cài đặt lại gói rsyslog, nhưng nó vẫn từ chối đăng nhập bất cứ điều gì:

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

Tôi nghĩ rằng ai đó đã hack hệ thống, vì vậy hãy chạy rkhunter, chkrootkit, bỏ qua nỗ lực tìm các tiến trình / cổng ẩn và nmap trong một máy chủ từ xa để so sánh với các cổng được hiển thị bởi netstat. Và tôi biết điều này không có nghĩa gì cả, nhưng tất cả đều ổn. Hệ thống cũng có tường lửa iptables rất hạn chế với các kết nối đến / đi.

Điều này đang khiến tôi phát điên, có ai biết chuyện gì đang xảy ra ở đây không?

[EDIT - thông tin không gian đĩa]

# 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 - thông tin bước đi]

Strace có vẻ ổn đối với tôi

[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

Nhật ký strace hoàn chỉnh có thể được tải xuống từ đây


2
Đĩa log đã đầy chưa?
Jenny D

Ôi xin lỗi, tôi quên thêm thông tin đó, tôi sẽ cập nhật câu hỏi. Nhưng vẫn còn đủ không gian để viết nhật ký.
Victor Henriquez

1
thử và strace -p <pid> hoặc bắt đầu rsyslog theo cách thủ công và kiểm tra xem nó có phàn nàn về điều gì không
manjiki

Lời khuyên tốt, thật không may, tôi không thể tìm thấy bất cứ điều gì có liên quan. Tôi đã cập nhật câu hỏi với nhật ký strace, chỉ trong trường hợp bạn có thể tìm thấy thứ gì đó tôi đang thiếu. Tôi thực sự thất vọng.
Victor Henriquez

chạy thủ công trong chế độ gỡ lỗi (-d nếu iirc), vì vậy nó sẽ không rẽ nhánh hoặc sử dụng tùy chọn forks for strace. Xấu của tôi, xin lỗi
manjiki

Câu trả lời:


12

Rất có thể đó là một vấn đề sở hữu tập tin. rsyslog bắt đầu chạy với quyền root nhưng sau đó bỏ đặc quyền và chạy dưới dạng syslog của người dùng (chỉ thị cấu hình $ PrivDropToUser ).

Các tệp syslog (auth.log, daemon.log, v.v.) ban đầu được sở hữu bởi syslog: adm nhưng nếu bạn thay đổi quyền sở hữu thành root (có vẻ như từ danh sách tệp của bạn) thì không có vấn đề gì nếu bạn HUP (tức là tải lại) rsyslog hoặc khởi động lại nó, nó sẽ bị từ chối để mở các tệp đó do thiếu các đặc quyền.

Nếu thay đổi quyền sở hữu xảy ra sau khi xoay vòng log, thì hãy kiểm tra createtùy chọn cấu hình logrotate của bạn. Hoặc cấu hình nó như create 0644 syslog admtrong /etc/logrotate.d/rsysloghoặc thậm chí tốt hơn, xác định nó trên toàn cầu khi /etc/logrotate.confbỏ qua chế độ, chủ sở hữu và nhóm, chỉ đơn giản như thế này create(đó là cấu hình mặc định theo cách này), trong trường hợp đó, các giá trị tương tự của tệp sẽ được sử dụng. Tư vấn man logrotateđể biết chi tiết đầy đủ.

Một số phiên bản của rsyslog bao gồm một lệnh $ omfileForceChown như một cách giải quyết cho sự thay đổi bên ngoài của quyền sở hữu tệp, nhưng không được khuyến nghị. Cách được đề xuất là cấu hình đúng quyền sở hữu và quyền. Thông tin thêm về vấn đề này có thể được tìm thấy theo liên kết đó.


1
Điều này. Để thảo luận nhiều hơn và chi tiết, vui lòng xem lỗi rsyslogd trên bệ phóng: bugs.launchpad.net/ubuntu/+source/rsyslog/+bug/940030
JustinC

Bạn rock, tôi đã mất hai ngày để tìm ra vấn đề này
deFreitas

0

Tôi gặp vấn đề này vì / var / log của tôi đang lưu trữ trên một đĩa RAM để giảm hao mòn cho ổ SSD của tôi và tôi muốn chuyển nó sang ổ cứng để tôi có nhiều lịch sử hơn là chỉ khởi động hiện tại.

Điều thú vị là, vì nó là một ramdisk, tôi đã không có một bản sao từ chế độ một người dùng, vì vậy tôi không biết quyền và quyền sở hữu là gì! Tât nhiên.

Truyện ngắn, với vị trí mới của bạn:

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

Bây giờ, Rsyslog sẽ có thể ghi vào / var / log vì nó chạy với tư cách là người dùng 'syslog', nhóm 'syslog'.


0

Nếu tất cả các quyền của tệp đều tốt và logrotate được cấu hình chính xác, bước tiếp theo của bạn sẽ là xem xét các cuộc gọi hệ thống 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 ]
 ...

Ngay sau khi lỗi đánh máy của tôi được sửa trong tệp này /etc/rsyslog.d/50-default.conf, syslog bắt đầu ghi vào / var / log / syslog một lần nữa!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.