Что Apache пытается сделать с портом 80, который блокирует SELinux?

Что Apache пытается сделать с портом 80, который блокирует SELinux?

У меня есть небольшой веб-сервер (CentOS 8), на котором запущено небольшое приложение php и mysql. На нем также запущены Nagios, BIND и Postfix, работающий как вторичный MX.

Кажется, все "работает", и я никогда не замечал никаких проблем. Я могу загрузить Nagios и другие приложения php через порт 443. Если я загружаю URL-адреса через порт http / порт 80, 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, я вижу соответствующее сообщение Permission Denied для того же pid в то же время:

[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 так, чтобы он прекратил попытки сделать то, что он пытается сделать

решение1

Соединение, которое здесь устанавливается, это соединение Apache с самим собой: они регистрируются как internal dummy connectionи являются способом Apacheпробуждение его дочерних процессов.

По умолчанию SELinux не позволяет веб-серверу устанавливать исходящие сетевые соединения. Несколько булевых значений изменят это поведение, но, вероятно, вам нужно использовать то, httpd_graceful_shutdownчто позволяет Apache подключаться к любому порту TCP с меткой http_port_t(80, 81, 443, 488, 8008, 8009, 8443, 9000) и ни к чему больше. Как следует из названия, это позволяет Apache не выдавать ложные предупреждения при завершении работы, так как он также хочет подключиться к себе при завершении работы. Это также избавит от мгновенной проблемы и разрешит внутреннее фиктивное соединение.

setsebool -P httpd_graceful_shutdown 1

Связанный контент