Konfigurieren von httpd auf einem benutzerdefinierten Port und Verstehen des SELinux-Kontexts
In diesem Schritt lernen Sie, wie Sie den Apache-Webserver (httpd
) so konfigurieren, dass er auf einem nicht standardmäßigen Port ausgeführt wird, und wie SELinux den Portzugriff verwaltet. Wir werden mit Port 8081 arbeiten und die SELinux-Portverwaltung untersuchen, auch wenn der Dienst in einigen Konfigurationen erfolgreich startet.
Die erforderlichen Pakete (httpd
, policycoreutils-python-utils
und firewalld
) wurden bereits in der Setup-Phase installiert. Das Paket policycoreutils-python-utils
stellt den Befehl semanage
bereit, den Sie in einem späteren Schritt verwenden werden.
Beginnen wir damit, die Standardkonfiguration von httpd
so zu ändern, dass sie auf einem nicht standardmäßigen Port, 8081
, lauscht. Die Hauptkonfigurationsdatei für httpd
befindet sich unter /etc/httpd/conf/httpd.conf
. Wir verwenden den Editor nano
, um den Listening-Port zu ändern.
sudo nano /etc/httpd/conf/httpd.conf
Verwenden Sie im Editor nano
die Pfeiltasten, um nach unten zu scrollen und die Zeile Listen 80
zu finden. Ändern Sie diese Zeile in:
Listen 8081
Um die Datei zu speichern und nano
zu beenden, drücken Sie Ctrl+X
, dann Y
, um die Änderungen zu bestätigen, und schließlich Enter
, um in die Datei zu schreiben.
Nachdem die Konfiguration geändert wurde, versuchen wir, den httpd
-Dienst zu starten. In dieser containerisierten Umgebung ist systemctl
nicht verfügbar. Wir starten den httpd
-Daemon direkt.
sudo /usr/sbin/httpd
Möglicherweise wird eine Warnmeldung über den vollqualifizierten Domänennamen des Servers angezeigt, aber dies ist normal und kann ignoriert werden.
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::216:3eff:fe02:1a1e%eth0. Set the 'ServerName' directive globally to suppress this message
Überprüfen wir, ob der Dienst ausgeführt wird, indem wir nach httpd
-Prozessen suchen.
ps aux | grep httpd
Sie sollten mehrere httpd
-Prozesse sehen, was darauf hindeutet, dass der Webserver erfolgreich gestartet wurde.
root 4813 0.0 0.2 23364 7736 ? Ss 09:32 0:00 /usr/sbin/httpd
apache 4814 0.0 0.1 23020 5092 ? S 09:32 0:00 /usr/sbin/httpd
apache 4815 0.0 0.4 1441064 14620 ? Sl 09:32 0:00 /usr/sbin/httpd
apache 4816 0.0 0.5 1441064 18736 ? Sl 09:32 0:00 /usr/sbin/httpd
apache 4837 0.0 0.4 1572200 16872 ? Sl 09:32 0:00 /usr/sbin/httpd
labex 4996 0.0 0.0 6408 2176 pts/3 S+ 09:32 0:00 grep --color=auto httpd
Überprüfen wir auch die httpd
-Fehlerprotokolle, um zu sehen, was beim Start passiert ist.
sudo tail /var/log/httpd/error_log
Sie sollten normale Startmeldungen sehen, die darauf hindeuten, dass der Server ordnungsgemäß ausgeführt wird.
[Tue Jun 17 09:32:46.374275 2025] [core:notice] [pid 4812:tid 4812] SELinux policy enabled; httpd running as context system_u:system_r:unconfined_service_t:s0
[Tue Jun 17 09:32:46.377265 2025] [suexec:notice] [pid 4812:tid 4812] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Tue Jun 17 09:32:46.394284 2025] [lbmethod_heartbeat:notice] [pid 4813:tid 4813] AH02282: No slotmem from mod_heartmonitor
[Tue Jun 17 09:32:46.399433 2025] [mpm_event:notice] [pid 4813:tid 4813] AH00489: Apache/2.4.62 (Red Hat Enterprise Linux) configured -- resuming normal operations
[Tue Jun 17 09:32:46.399458 2025] [core:notice] [pid 4813:tid 4813] AH00094: Command line: '/usr/sbin/httpd'
Interessanterweise startete der httpd
-Dienst ohne Probleme mit SELinux. Überprüfen wir, ob es im Audit-Protokoll SELinux-Verweigerungen gab.
sudo grep AVC /var/log/audit/audit.log | grep httpd
Wenn keine Ergebnisse vorliegen, bedeutet dies, dass SELinux den httpd-Dienst nicht daran gehindert hat, sich an Port 8081 zu binden. Dies könnte folgende Gründe haben:
- Port 8081 ist möglicherweise in einigen Konfigurationen standardmäßig für HTTP-Dienste zugelassen.
- Der httpd-Prozess wird möglicherweise in einem unbeschränkten Kontext ausgeführt.
- Port 8081 ist möglicherweise bereits in der SELinux-Richtlinie definiert.
Überprüfen wir den aktuellen SELinux-Modus:
getenforce
Sie sollten sehen, dass sich SELinux im Modus "Enforcing" befindet, was bedeutet, dass es Richtlinien aktiv durchsetzt. Die Tatsache, dass httpd erfolgreich gestartet wurde, deutet darauf hin, dass Port 8081 möglicherweise bereits eine ordnungsgemäße SELinux-Kennzeichnung hat oder der Dienst in einem unbeschränkten Kontext ausgeführt wird, wie in den Protokollmeldungen gezeigt. Für diese Übung fahren wir mit dem nächsten Schritt fort, in dem wir die SELinux-Portverwaltung untersuchen und eine ordnungsgemäße Konfiguration sicherstellen.