![Was versucht Apache mit dem Port 80 zu tun, den SELinux blockiert?](https://rvso.com/image/760967/Was%20versucht%20Apache%20mit%20dem%20Port%2080%20zu%20tun%2C%20den%20SELinux%20blockiert%3F.png)
Ich habe einen kleinen Webserver (CentOS 8), auf dem eine kleine PHP- und MySQL-App läuft. Außerdem laufen dort Nagios, BIND und Postfix als sekundärer MX.
Alles scheint zu „funktionieren“, und ich habe nie irgendwelche Probleme bemerkt. Ich kann Nagios und die anderen PHP-Apps über Port 443 laden. Wenn ich die URLs über Port http / Port 80 lade, ist Apache so konfiguriert, dass es auf 443 umleitet, und das funktioniert genauso gut.
Allerdings protokolliert Selinux routinemäßig den folgenden AVC, was auf ein Problem auf Port 80 hinweist:
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
Wenn ich mir anschaue /var/log/httpd/error_log
, sehe ich, dass für dieselbe PID zur selben Zeit eine entsprechende Berechtigung verweigert wurde:
[Sat Dec 12 01:55:16.608941 2020] [core:warn] [pid 631936] (13)Permission denied: AH00056: connect to listener on [::]:80
Gibt es für mich eine Möglichkeit herauszufinden, was genau Apache versucht, das blockiert wird? Wie ich bereits erwähnt habe, scheint nichts kaputt zu sein, also habe ich nicht versucht, ein Modul zu erstellen, das dies ermöglicht. Aber ich würde hier gerne die Grundursache für die Meldung „AVC verweigert“ finden und entweder:
- Erlauben Sie es, wenn es harmlos ist und tatsächlich erlaubt sein sollte, ODER
- Konfigurieren Sie Apache so, dass es aufhört, das zu tun, was es gerade versucht.
Antwort1
Die hier hergestellte Verbindung ist eine Verbindung zwischen Apache und sich selbst: Diese werden als protokolliert internal dummy connection
und sind Apaches Art,Aufwecken der untergeordneten Prozesse.
Standardmäßig erlaubt SELinux dem Webserver keine ausgehenden Netzwerkverbindungen. Dieses Verhalten lässt sich durch verschiedene Boolesche Werte ändern, aber der, den Sie wahrscheinlich zur Behebung verwenden möchten, ist, httpd_graceful_shutdown
dass Apache dadurch eine Verbindung zu jedem TCP-Port mit der Bezeichnung http_port_t
(80, 81, 443, 488, 8008, 8009, 8443, 9000) herstellen kann und sonst zu nichts. Wie der Name schon sagt, sorgt dies dafür, dass Apache beim Herunterfahren keine falschen Warnungen ausgibt, da es beim Herunterfahren auch eine Verbindung zu sich selbst herstellen möchte. Dadurch wird auch das sofortige Problem behoben und die interne Dummy-Verbindung zugelassen.
setsebool -P httpd_graceful_shutdown 1