Rsyslogが正しく動作せず、何も記録されません


11

私はDebianサーバーを実行しており、2、3日前にrsyslogが非常に奇妙な振る舞いを始めました。デーモンは実行されていますが、何もしないようです。多くの人がこのシステムを使用していますが、私だけが(合法的な)rootアクセス権を持っています。

デフォルトの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、unhideを実行して非表示プロセス/ポートを検索し、リモートホストで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は私には大丈夫に見えます

[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

申し訳ありませんが、その情報を追加するのを忘れていました。質問を更新します。ただし、ログを書き込むのに十分なスペースがまだあります。
ビクター

1
試してstrace -p <pid>またはstraceの下でrsyslogを手動で開始し、何か不満があるかどうかを確認してください
-manjiki

良いアドバイス、残念ながら私は関連するものを見つけることができませんでした。不足しているものを見つけることができるように、straceログで質問を更新しました。私は本当にイライラしています。
ビクター

デバッグモード(iircの場合は-d)で手動で実行するため、フォークしないか、straceのfollow forksオプションを使用します。残念、ごめんなさい。
マンジキ

回答:


12

ほとんどの場合、ファイルの所有権の問題です。rsyslogはrootとして実行を開始しますが、特権を削除してユーザーsyslog(構成ディレクティブ$ PrivDropToUser)として実行します。

syslogファイル(auth.log、daemon.logなど)は、最初はsyslog:admによって所有されていますが、所有権をルートに変更した場合(ファイルリストから見た場合)、rsyslogをHUP(リロード)しても、再起動してください。権限がないためにこれらのファイルを開くことが拒否されます。

ログのローテーション後に所有権の変更が発生したcreate場合は、logrotate構成のオプションを確認してください。のようcreate 0644 syslog admに設定する/etc/logrotate.d/rsyslogか、さらに良い/etc/logrotate.conf方法で、モード、所有者、およびグループを省略してグローバルに定義します。これは単にcreate(デフォルトの構成です)この場合、ファイルの同じ値が使用されます。詳細man logrotateについては、ご相談ください。

rsyslogの一部のバージョンには、ファイル所有権の外部変更の回避策として$ omfileForceChownディレクティブが含まれていますが、推奨されていません。推奨される方法は、所有権とアクセス許可を適切に構成することです。このリンクについては、この問題に関する詳細情報をご覧ください。


1
この。詳細については、ランチパッドのrsyslogdのバグを参照してください: bugs.launchpad.net/ubuntu/+source/rsyslog/+bug/940030
JustinC

ロックマン、この問題を見つけて2日間失った
deFreitas

0

SSDの磨耗を減らすために/ var / logがramdiskに常駐していたので、この問題が発生しました。それをHDDに移動したいので、現在のブートよりも多くの履歴がありました。

おもしろいことに、これはRAMディスクであったため、シングルユーザーモードでコピーするものがなかったため、アクセス許可と所有権がどうなっているかわからなかったのです!ああ。

新しい場所での短い話:

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

Rsyslogは、「syslog」ユーザー、グループ「syslog」として実行されるため、/ var / logに書き込むことができるようになります。


0

ファイルのアクセス許可がすべて良好で、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.conf、syslogは/ var / log / syslogに再び書き込みを開始しました!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.