Rhel

為什麼在 /var/log/messages 中會報告 SELinux 問題?

  • November 27, 2020

我發現了一個關於 logrotate 的 SELinux 問題。我只是想知道為什麼它是在 中報告的/var/log/messages,而不是在/var/log/audit/audit.log. 我假設任何 SELinux 問題都會記錄到 audit.log 中。誰能解釋原因?

我在 RHEL 8 系統上遇到了這種行為。在消息中找到條目:

Nov 22 03:23:14 itsrv2489 setroubleshoot[2468163]: SELinux is preventing logrotate from read access on the directory /var/www/html/g6. For complete SELinux messages run: sealert -l 2c99b2ca-3bf0-486d-b1c3-54bc6e87105e
Nov 22 03:23:14 itsrv2489 platform-python[2468163]: SELinux is preventing logrotate from read access on the directory /var/www/html/g6.#012#012*****  Plugin catchall (100. confidence) suggests   **************************#012#012If you believe that logrotate should be allowed read access on the g6 directory by default.#012Then you should report this as a bug.#012You can generate a local policy module to allow this access.#012Do#012allow this access for now by executing:#012# ausearch -c 'logrotate' --raw | audit2allow -M my-logrotate#012# semodule -X 300 -i my-logrotate.pp#012

上面的這兩行由我格式化:

Nov 22 03:23:14 itsrv2489 setroubleshoot[2468163]: SELinux is preventing logrotate from read access on the directory /var/www/html/g6. 
For complete SELinux messages run: 
sealert -l 2c99b2ca-3bf0-486d-b1c3-54bc6e87105e

Nov 22 03:23:14 itsrv2489 platform-python[2468163]: SELinux is preventing logrotate from read access on the directory /var/www/html/g6.

*****  Plugin catchall (100. confidence) suggests   **************************

If you believe that logrotate should be allowed read access on the g6 directory by default.

Then you should report this as a bug.
You can generate a local policy module to allow this access.

allow this access for now by executing:
# ausearch -c 'logrotate' --raw | audit2allow -M my-logrotate
# semodule -X 300 -i my-logrotate.pp

通常我會在/var/log/audit/audit.log.

**更新:**最後我發現,audit.log 是自己輪換的,因為它非常大,所以刪除了一些記錄。這就是我在那些審計日誌文件中找不到關鍵字“logrotate”的原因。我修改/etc/audit/auditd.conf為禁用輪換,第二天我能夠在 audit.log 中找到“logrotate”(由 cron 作業觸發,每天一次)。

audit.log確實會收到原始的 SELinux 拒絕消息,這是真的。

但是您正在查看的消息並不是由 SELinux 本身直接生成的。相反,它們是由setroubleshoot一個 Python 工具記錄的,它對 SELinux 審計日誌消息進行後處理,並提供對它們的更易讀、更高級別的解釋。

審計日誌只專用於審計子系統:因為setroubleshoot它不是審計子系統的實際部分,它需要在別處記錄其消息。所以它/var/log/messages改為登錄。

引用自:https://unix.stackexchange.com/questions/621470