syslog-ng 手动启动并运行良好...使用 systemd 时启动但不创建日志

syslog-ng 手动启动并运行良好...使用 systemd 时启动但不创建日志

Redhat 7.6 带有最新的 syslog-ng (3.22)

我搜索并尝试了所有旧方法。但都无法解决这个问题。

我的 syslog-ng.conf 文件包含许多端口和许多目的地。当有东西进入端口时,它会创建目的地的日志和文件夹。很简单。

如果我以 root 身份从 CLI 执行此操作:

/usr/sbin/syslog-ng -F --cfgfile /etc/syslog-ng/syslog-ng.conf --control /var/lib/syslog-ng/syslog-ng.ctl --persist-file /var/lib/syslog-ng/syslog-ng.persist --pidfile /var/run/syslog-ng.pid

一切正常。我可以查看我的日志文件夹并查看正在生成的日志。没问题。

ps -ef |grep 系统日志

节目

root      7179  7166  0 17:15 pts/1    00:00:00 /usr/sbin/syslog-ng -F --cfgfile /etc/syslog-ng/syslog-ng.conf --control /var/lib/syslog-ng/syslog-ng.ctl --persist-file /var/lib/syslog-ng/syslog-ng.persist --pidfile /var/run/syslog-ng.pid

然而

如果我像这样运行它(并且当系统启动时):

systemctl start syslog-ng

一切似乎都正常。ps -ef|grep syslog

节目

root      7434     1  0 17:22 ?        00:00:00 /usr/sbin/syslog-ng -F --cfgfile /etc/syslog-ng/syslog-ng.conf --control /var/lib/syslog-ng/syslog-ng.ctl --persist-file /var/lib/syslog-ng/syslog-ng.persist --pidfile /var/run/syslog-ng.pid

唯一的区别是,从 systemd 运行时,不会创建任何日志。我不知道是什么原因造成的。Netstats 显示它仍在监听所有端口。

journalctl -eu syslog-ng 显示:

Aug 27 17:22:32 system-new systemd[1]: Starting System Logger Daemon...
Aug 27 17:22:32 system-new systemd[1]: Started System Logger Daemon.

根据评论更新1:

  1. 不是 selinux 问题(所有需要的端口都已被允许)
  2. 防火墙也一样
  3. 从未查看过审计日志,但粘贴了最新的停止然后在下面开始(当我手动运行时没有任何内容进入审计日志)
  4. 我没有尝试使用 Journald — 不管它默认启用什么。我确实尝试根据我找到的搜索结果在配置中取消注释 ForwardToSyslog=yes。这没什么区别。
  5. 在考虑防火墙规则等以及端口问题时也要记住...它在手动运行时确实有效,这意味着防火墙并不是真正的问题

审计日志

type=SERVICE_STOP msg=audit(1566960199.893:2253): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=syslog-ng comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'

type=SERVICE_START msg=audit(1566960207.896:2263): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=syslog-ng comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'

ps -efZ-systemctl

system_u:system_r:syslogd_t:s0  root      3207     1  0 19:03 ?        00:00:00 /usr/lib/systemd/systemd-journald
system_u:system_r:syslogd_t:s0  root      9499     1  0 20:31 ?        00:00:00 /usr/sbin/syslog-ng -F --cfgfile /etc/syslog-ng/syslog-ng.conf --control /var/lib/syslog-ng/syslog-ng.ctl --persist-file /var/lib/syslog-ng/syslog-ng.persist --pidfile /var/run/syslog-ng.pid

ps -efZ-手动运行

system_u:system_r:syslogd_t:s0  root      3207     1  0 19:03 ?        00:00:00 /usr/lib/systemd/systemd-journald
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 9543 1  0 20:34 ? 00:00:00 supervising syslog-ng
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 9544 9543  0 20:34 ? 00:00:00 /usr/sbin/syslog-ng --cfgfile /etc/syslog-ng/syslog-ng.conf --control /var/lib/syslog-ng/syslog-ng.ctl --persist-file /var/lib/syslog-ng/syslog-ng.persist --pidfile /var/r$

网络状态

系统控制

tcp        0      0 0.0.0.0:10001           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10002           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10003           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10004           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10101           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10005           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10006           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10007           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10008           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10009           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10201           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10202           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10010           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10011           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10203           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10012           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10013           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10301           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10014           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10015           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10016           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10017           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10018           0.0.0.0:*               LISTEN      9645/syslog-ng
tcp        0      0 0.0.0.0:10019           0.0.0.0:*               LISTEN      9645/syslog-ng
udp        0      0 0.0.0.0:514             0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10001           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10002           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10003           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10004           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10005           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10006           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10007           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10008           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10009           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10010           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10011           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10012           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10013           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10014           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10015           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10016           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10017           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10018           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10019           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10101           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10201           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10202           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10203           0.0.0.0:*                           9645/syslog-ng
udp        0      0 0.0.0.0:10301           0.0.0.0:*                           9645/syslog-ng

手动运行

tcp        0      0 0.0.0.0:10001           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10002           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10003           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10004           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10101           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10005           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10006           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10007           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10008           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10009           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10201           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10202           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10010           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10011           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10203           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10012           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10013           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10301           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10014           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10015           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10016           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10017           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10018           0.0.0.0:*               LISTEN      9544/syslog-ng
tcp        0      0 0.0.0.0:10019           0.0.0.0:*               LISTEN      9544/syslog-ng
udp        0      0 0.0.0.0:514             0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10001           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10002           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10003           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10004           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10005           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10006           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10007           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10008           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10009           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10010           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10011           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10012           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10013           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10014           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10015           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10016           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10017           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10018           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10019           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10101           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10201           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10202           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10203           0.0.0.0:*                           9544/syslog-ng
udp        0      0 0.0.0.0:10301           0.0.0.0:*                           9544/syslog-ng

更新2syslogd_t 的审计日志 grep

type=SYSCALL msg=audit(1566959653.640:2104): arch=c000003e syscall=83 success=no exit=-13 a0=212b2b0 a1=1ed a2=ffffffffffffdcc0 a3=7ffd07da1a34 items=0 ppid=1 pid=9499 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="syslog-ng" exe="/usr/sbin/syslog-ng" subj=system_u:system_r:syslogd_t:s0 key=(null)

type=AVC msg=audit(1566959663.651:2105): avc:  denied  { write } for  pid=9499 comm="syslog-ng" name="log_collection" dev="dm-5" ino=35651585 scontext=system_u:system_r:syslogd_t:s0 tcontext=unconfined_u:object_r:unlabeled_t:s0 tclass=dir permissive=0

type=SYSCALL msg=audit(1566959663.651:2105): arch=c000003e syscall=83 success=no exit=-13 a0=212b2b0 a1=1ed a2=ffffffffffffdcc0 a3=7ffd07da1a34 items=0 ppid=1 pid=9499 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="syslog-ng" exe="/usr/sbin/syslog-ng" subj=system_u:system_r:syslogd_t:s0 key=(null)

答案1

您遇到的是 SELinux 问题。

RHEL 及其相关版本(CentOS、Fedora)通常都启用了 SELinux。

SELinux 支持可编程策略,可以自定义或替换。默认情况下,RHEL/CentOS/Fedora 使用有针对性的策略,该策略不限制所有进程(你的 shell 以及你从中启动的任何进程都将以该unconfined_t类型运行),但它确实对某些进程施加了限制有针对性的守护进程,其中包括 syslog 守护进程(sysklogd、rsyslog、syslog-ng 和 journald)。

SELinux 将类型应用于进程(您可以使用 检查ps -Z)以及文件/目录(您可以使用 查看ls -Z)。

它将设置规则,这样当特定类型的进程执行另一种类型的二进制文件时,生成的进程将在该类型下运行。这就是 systemd(在 下运行init_t)生成 syslog-ng(类型为 的二进制文件syslogd_exec_t)生成在 下运行的进程的方式syslogd_t(但如果您直接运行它,您将得到unconfined_t,如您所见。)

接下来,策略定义了在什么环境下运行的进程syslogd_t 能做和不能做更具体地说,系统日志守护进程应该仅有的写入日志,因此 SELinux 策略默认只允许它写入/var/log文件系统中的其他地方。(这样,如果您的 syslog 守护程序受到威胁,攻击者将无法使用它来覆盖系统二进制文件,因为 SELinux 会阻止它写入这些文件。)

处理这个问题的方式同样是通过 SELinux 类型。/var/log目录有一个var_log_t类型,策略只允许 syslog 写入具有该类型的目录。

如果您希望 syslog 将日志写入其他地方,则应该用相同类型标记该其他位置。

就您而言,该位置是/data/log_collection

为了将 的标签设置/data/log_collectionvar_log_t,您可以使用chcon命令。

但您实际上想要做的是使其成为永久配置,以便即使文件系统被重新标记,该目录也将始终保留该上下文。

您可以使用以下方式设置该配置:

$ sudo semanage fcontext -a -t var_log_t '/data/log_collection(/.*)?'

此命令将更新 下的 SELinux 文件/etc/selinux/targeted/contexts/files/。它使用正则表达式作为路径,以匹配目录本身及其下的任何文件。

然后应用它:

$ sudo restorecon -R -v /data/log_collection

有关详细信息,请参阅SELinux 上下文 — 标记文件在 Red Hat 文档门户。

相关内容