Selinux

Apache 試圖用 SELinux 阻塞的埠 80 做什麼?

  • December 12, 2020

我有一個執行小型 php 和 mysql 應用程序的小型 Web 伺服器(CentOS 8)。它還執行作為輔助 MX 執行的 Nagios、BIND 和 Postfix。

一切似乎都“工作”,我從來沒有註意到任何問題。我能夠通過埠 443 載入 Nagios 和其他 php 應用程序。如果我通過埠 http / 埠 80 載入 URL,Apache 被配置為重定向到 443,並且做得同樣好。

但是,selinux 會定期記錄以下 AVC,表明埠 80 存在一些問題:

time->Sat Dec 12 01:55:16 2020
type=AVC msg=audit(1607756116.608:1381369): avc:  denied  { name_connect } for  pid=631936 comm="httpd" dest=80 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0

查看/var/log/httpd/error_log,我同時看到同一個 pid 對應的 Permission Denied :

[Sat Dec 12 01:55:16.608941 2020] [core:warn] [pid 631936] (13)Permission denied: AH00056: connect to listener on [::]:80

有沒有辦法讓我追查到,Apache 試圖做的到底是什麼被阻止了?正如我所提到的,似乎沒有任何東西被破壞,所以我沒有嘗試建構一個模組來允許這個。但我想在這裡找到 AVC denied 消息的根本原因,或者:

  • 如果它是無害的並且實際上應該被允許,則允許它,或者
  • 配置 Apache 以停止嘗試做它正在嘗試做的任何事情

這裡建立的連接是 Apache 連接回自身:這些被記錄為internal dummy connection並且是 Apache喚醒其子程序的方式。

預設情況下,SELinux 不允許 Web 伺服器進行出站網路連接。幾個布爾值會改變這種行為,但可能你想用來解決這個問題的一個布爾值httpd_graceful_shutdown允許 Apache 連接到任何標有http_port_t(80、81、443、488、8008、8009、8443、9000)的 TCP 埠,但什麼也沒有別的。顧名思義,這使得 Apache 的關閉不會引發虛假警告,因為它還希望在關閉時連接到自身。它還將擺脫即時問題並允許內部虛擬連接。

setsebool -P httpd_graceful_shutdown 1

引用自:https://serverfault.com/questions/1045938