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