Der Apache Webserver ist einer der beliebtesten und am weitesten verbreiteten Webserver für das Hosting von Dateien und Websites. Er ist einfach zu installieren und einzurichten, um Ihren Hosting-Bedürfnissen gerecht zu werden. Die Standardeinstellungen bieten jedoch keine ausreichende Sicherheit, um Ihrer Website den erforderlichen Schutz zu gewährleisten.
In dieser Anleitung betrachten wir einige Apache-Server-Härtungstipps und -tricks, die Sie umsetzen können, um die Sicherheit Ihres Webservers zu verbessern.
1. So verbergen Sie die Apache-Version und die Betriebssysteminformationen
Standardmäßig zeigt der Apache-Webserver seine Version an, wenn Sie eine falsche URL einer Website besuchen. Hier ist ein Beispiel einer Fehlerseite, die angibt, dass die Seite auf der Website nicht gefunden werden kann. Die letzte Zeile gibt die Apache-Version, das Host-Betriebssystem, die IP-Adresse und den Port an, an dem es lauscht.

Es ist nie eine gute Idee, Ihre Webserverinformationen anzuzeigen, da dies für Hacker ein willkommenes Geschenk bei ihrer Aufklärungsmission sein kann. Um einen Sicherungsschutz hinzuzufügen und es für Hacker schwieriger zu machen, wird empfohlen, die Webserverinformationen zu verbergen.
Um dies zu tun, öffnen Sie die Standardkonfigurationsdatei von Apache auf Debian-basierten Distributionen.
$ sudo vim /etc/apache2/apache2.conf
Für auf RHEL-basierten Systemen wie RHEL, Fedora, CentOS, Rocky und AlmaLinux.
$ sudo vim /etc/httpd/conf/httpd.conf
Fügen Sie die folgenden Zeilen am Ende der Datei hinzu.
ServerTokens Prod ServerSignature Off
Speichern Sie die Änderungen und starten Sie den Apache-Webserver neu.
$ sudo systemctl restart apache2 [On Debian, Ubuntu and Mint] $ sudo systemctl restart httpd [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
Jetzt laden Sie die Seite neu, und dieses Mal wird die Webserver-Information nicht angezeigt.

2. Verzeichnisliste in Apache deaktivieren
Standardmäßig erlaubt Apache die Anzeige von Verzeichnissen, und Besucher könnten alle Dateien oder Verzeichnisse sehen, die Sie in Ihrem Dokument-Root-Verzeichnis haben.
Um dies zu demonstrieren, erstellen wir ein Verzeichnis namens test.
$ sudo mkdir -p /var/www/html/test
Anschließend navigieren wir in das Verzeichnis und erstellen einige Dateien.
$ cd /var/www/html/test $ sudo touch app.py main.py
Wenn wir jetzt auf die URL http://localhost/test
zugreifen, können wir die Verzeichnisliste anzeigen.

Um die Verzeichnisliste zu deaktivieren, gehen Sie zur Hauptkonfigurationsdatei von Apache und suchen Sie nach dem Attribut ‚Directory‚. Setzen Sie den Parameter ‚Options‚ auf '-Indexes'
, wie gezeigt.
<Directory /opt/apache/htdocs> Options -Indexes </Directory>
Starten Sie Apache neu, und dieses Mal werden die Verzeichnisse nicht mehr angezeigt, wenn Sie die URL besuchen.

3. Apache regelmäßig aktualisieren
Es wird immer empfohlen, alle Ihre Anwendungen auf dem neuesten Stand zu halten, da die neuesten Anwendungen Fehlerbehebungen und Sicherheitspatches enthalten, die zugrunde liegende Sicherheitslücken in älteren Softwareversionen beheben.
Als solches wird empfohlen, Ihre Anwendungen regelmäßig auf ihre neuesten Versionen zu aktualisieren.
$ sudo apt update && sudo apt upgrade [On Debian, Ubuntu and Mint] $ sudo dnf upgrade [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]

4. Verwenden Sie die HTTPS-Verschlüsselung auf Apache
Apache verwendet standardmäßig das HTTP-Protokoll, das ein schwaches und unsicheres Protokoll ist, das anfällig für Abhören ist. Um die Sicherheit Ihrer Website zu verbessern und noch mehr Ihre Google-SEO-Rankings zu verbessern, sollten Sie in Betracht ziehen, Ihre Website mithilfe eines SSL-Zertifikats zu verschlüsseln.
Dadurch wird das standardmäßige HTTP-Protokoll auf HTTPS umgestellt, wodurch es für niemanden schwieriger wird, die Kommunikation zwischen Server und Client abzufangen und zu entschlüsseln.
Sehen Sie sich an, wie Sie den Apache-Webserver unter Linux mit einem Let’s Encrypt SSL absichern können.
- So sichern Sie Apache mit einem Let’s Encrypt SSL-Zertifikat unter RHEL
- So sichern Sie Apache mit einem kostenlosen Let’s Encrypt SSL-Zertifikat unter Ubuntu und Debian
5. Aktivieren Sie die HTTP Strict Transport Security (HSTS) für Apache
Neben der Verschlüsselung Ihrer Website mit einem TLS/SSL-Zertifikat sollten Sie die HSTS-Web-Sicherheitsmechanismus über HTTPS implementieren.
HTTP Strict Transport Security (HSTS) ist ein Richtlinienmechanismus, der Websites vor Man-in-the-Middle-Angriffen und Cookie-Hijacking schützt. Dies geschieht, wenn Angreifer das HTTPS-Protokoll auf das unsichere HTTP-Protokoll herabstufen.
HSTS ermöglicht es dem Webserver, strikt zu erklären, dass Webbrowser nur über HTTPS mit ihm interagieren sollten und niemals über das HTTP-Protokoll.
Um HSTS zu aktivieren, stellen Sie sicher, dass Ihre Website HTTPS verwendet und über ein gültiges TLS/SSL-Zertifikat verfügt.
Aktivieren Sie dann das Header-Modul für Apache:
$ sudo a2enmod headers
Starten Sie dann Apache neu, um die Änderungen zu übernehmen.
$ sudo systemctl restart apache2
Greifen Sie als nächstes auf die Konfigurationsdatei des virtuellen Hosts Ihrer Domain zu.
$ sudo vim /etc/apache2/sites-available/mydomain.conf
Fügen Sie als nächstes diese Zeile innerhalb des <VirtualHost *:443>
-Blocks hinzu:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Dies sieht wie folgt aus.
<VirtualHost *:443> # ..... # .... Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" </VirtualHost>
Der Parameter max-age weist Webbrowser an, Ihre Website für das nächste Jahr nur über HTTPS zu öffnen (31536000 = 1 Jahr).
Starten Sie schließlich Apache neu, damit die HSTS-Richtlinie wirksam wird.
$ sudo systemctl restart apache2
6. Aktivieren Sie HTTP/2 auf Apache
Im Jahr 2015 wurde HTTP/2 veröffentlicht, das eine neue Version des HTTP-Protokolls ist, die versucht, mehrere Probleme zu lösen, die die Schöpfer von HTTP/1.1 nicht vorausgesehen haben.
Während HTTP/1.1 immer noch weit verbreitet ist, wird es mit Leistungsproblemen in Verbindung gebracht, die mit der Verwendung mehrerer TCP-Verbindungen zur Bearbeitung mehrerer Anfragen vom Browser einhergehen, was zu hohen Ressourcenbelastungen auf der Clientseite führt und zu einer Beeinträchtigung der Netzwerkleistung führt.
Mit zunehmender Komplexität und Funktionalität von Anwendungen wurde HTTP/2 entwickelt, um die Mängel von HTTP/1.1 zu beheben, zu denen lange HTTP-Header, langsame Seitenaufbauzeiten und allgemeine Leistungseinbußen gehören.
HTTP/2 bietet mehr Schutz und Privatsphäre als sein Vorgänger. Ebenso wichtig ist die verbesserte Leistung durch die Verwendung von multiplexen Datenströmen. Mit HTTP/2 gewährleistet eine einzige TCP-Verbindung eine effektive Bandbreitennutzung, selbst bei der Übertragung mehrerer Datenströme.
Sehen Sie sich an, wie Sie HTTP/2 auf dem Apache-Webserver aktivieren können, indem Sie verwenden:
7. Zugriff auf sensible Verzeichnisse in Apache beschränken
Eine weitere Sicherheitsmaßnahme, die Sie ergreifen können, besteht darin, den Zugriff auf Verzeichnisse zu beschränken, die möglicherweise sensible Informationen wie Benutzerdaten, Protokolle und Konfigurationsdateien enthalten.
<VirtualHost *:80> ServerName example.com DocumentRoot /var/www/html # Other virtual host settings <Directory /var/www/html/sensitive_directory> Require all denied </Directory> </VirtualHost>
In der obigen Konfiguration verweigert Require all denied
allen, die versuchen, auf Dateien in /sensitive_directory zuzugreifen, den Zugriff.
Speichern Sie die Änderungen und verlassen Sie die Datei. Starten Sie dann Apache neu, damit die Änderungen wirksam werden.
8. Deaktivieren Sie die ServerSignature-Direktive in Apache
Die ServerSignature-Direktive in der Apache-Konfigurationsdatei fügt Fußzeilen zu servergenerierten Dokumenten hinzu, die Informationen über die Konfiguration Ihres Webservers wie die Version und das Betriebssystem enthalten, auf dem er läuft. Die Offenlegung wichtiger Details über Ihren Webserver gegenüber bösartigen Akteuren erhöht die Wahrscheinlichkeit eines Angriffs erheblich.
Um die Offenlegung solcher Informationen zu verhindern, müssen Sie diese Direktive in der Apache-Konfigurationsdatei deaktivieren:
ServerSignature Off
Speichern Sie die Änderungen und starten Sie Apache erneut, damit die Änderungen wirksam werden.
$ sudo systemctl restart apache2
9. Legen Sie die ‚ServerTokens‘-Direktive auf ‚Prod‘ fest
Die ‚ServerTokens‘-Direktive steuert, welche Informationen der Server sendet, einschließlich Apache-Version (Haupt- und Nebenversion), Betriebssystem und Art des Web-Servers, der läuft.
Die geringste Menge an Informationen, die Sie der Öffentlichkeit preisgeben möchten, ist, dass der Webserver Apache ist. Alles andere würde Ihren Server nur potenziellen Angriffen aussetzen. Daher wird empfohlen, die ‚ServerTokens‘-Direktive in der Apache-Konfigurationsdatei auf ‚prod‚ festzulegen.
ServerTokens Off
Wie immer, speichern Sie die Änderungen und stellen Sie sicher, dass Sie Apache neu starten.
10. Sichern Sie Apache mit Fail2ban
Fail2ban ist eine Open-Source-Anwendung zur Einbruchverhütung, die Linux-Systeme vor externen Bedrohungen wie DoS- und Bruteforce-Angriffen schützt. Es funktioniert, indem es ständig Systemprotokolle auf schädliche Aktivitäten überwacht und Hosts sperrt, die Muster erkennen lassen, die Angriffsverhalten nachahmen.
Fail2ban kann so konfiguriert werden, dass es Apache vor DoS-Angriffen schützt, indem es Apache-Protokolle ständig auf fehlgeschlagene Anmeldeversuche überwacht und vorübergehend die IPs der Übeltäter sperrt.
Erfahren Sie, wie Sie Fail2ban unter Linux installieren können, indem Sie folgende Schritte befolgen:
11. Deaktivieren Sie unnötige Module
Apache-Module sind einfach Programme, die geladen werden, um die Funktionalität des Webservers zu erweitern. Zu den durch Module erweiterten Funktionen gehören grundlegende Authentifizierung, Inhaltszwischenspeicherung, Verschlüsselung, Sicherheit usw.
Es wird immer empfohlen, alle Module zu deaktivieren, die derzeit nicht verwendet werden, um die Chancen zu minimieren, Opfer eines Angriffs zu werden.
Um alle aktivierten Module anzuzeigen, führen Sie den Befehl aus
$ apache2ctl -M

Um zu überprüfen, ob ein bestimmtes Modul aktiviert ist, führen Sie beispielsweise den Befehl aus, um das Rewrite-Modul zu überprüfen.
$ apache2ctl -M | grep rewrite

Um das Modul zu deaktivieren, führen Sie den Befehl aus:
$ sudo a2dismod rewrite

12. Verwenden Sie die Module mod_security und mod_evasive, um Apache zu sichern
Sie können die mod_security– und mod_evasive-Module aktivieren, um Apache vor Brute-Force-Angriffen oder DDoS-Angriffen zu schützen.
- Das mod_security-Modul fungiert wie eine Web Application Firewall (WAF) und blockiert verdächtigen und unerwünschten Datenverkehr zu Ihrer Seite.
- Das mod_evasive-Modul schützt Ihren Server vor Brute-Force- und Denial-of-Service-Angriffen (DoS).
Lesen Sie mehr darüber, wie Sie Apache mithilfe der Module mod_security und mod_evasive schützen können.
13. Eingeschränkte unerwünschte Dienste in Apache
Um Apache weiter abzusichern, sollten Sie bestimmte Dienste wie symbolische Links und CGI-Ausführung deaktivieren, wenn sie derzeit nicht benötigt werden. Standardmäßig folgt Apache Symbolischen Links, wir können diese Funktion sowie das -Includes
-Feature und CGI in einer Zeile deaktivieren.
Um dies zu tun, fügen Sie die Zeile '-ExecCGI -FollowSymLinks -Includes'
für die ‘Options’-Direktive im Abschnitt ‘Directory‘ hinzu.
<Directory /your/website/directory> Options -ExecCGI -FollowSymLinks -Includes </Directory>
Dies kann auch auf Verzeichnisebene erreicht werden. Hier zum Beispiel deaktivieren wir Includes und Cgi-Dateiausführungen für das “/var/www/html/mydomain1”-Verzeichnis.
<Directory "/var/www/html/mydomain1"> Options -Includes -ExecCGI </Directory>
Speichern Sie die Änderungen und starten Sie Apache neu.
14. Begrenzung der Datei-Upload-Größe in Apache
Ein weiterer Weg, Ihren Webserver abzusichern, besteht darin, die Gesamtgröße des HTTP-Anforderungsbodens zu begrenzen, der vom Client an den Webserver gesendet wird. Sie können es im Kontext des Servers, pro Verzeichnis, pro Datei oder pro Ort festlegen.
Zum Beispiel, wenn Sie den Datei-Upload in ein bestimmtes Verzeichnis, sagen wir /var/www/domain.com/wp-uploads-Verzeichnis, erlauben möchten und die Größe der hochgeladenen Datei auf 4M = 4194304Bytes beschränken möchten, fügen Sie die folgende Direktive Ihrer Apache-Konfigurationsdatei oder .htaccess-Datei hinzu.
<Directory "/var/www/domain.com/wp-uploads"> LimitRequestBody 4194304 </Directory>
Änderungen speichern und Apache neu starten.
Sie können es im Kontext des Servers, pro Verzeichnis, pro Datei oder pro Standort festlegen. Die Direktive wehrt abnormalen Client-Anforderungsverhalten ab, das manchmal eine Form eines Denial-of-Service (DoS)-Angriffs sein kann.
15. Aktivieren Sie das Protokollieren in Apache
Die Protokollierung bietet alle Details zu Client-Anforderungen und allen anderen Informationen zur Leistung Ihres Webservers. Dies liefert nützliche Informationen, falls etwas schief geht. Das Aktivieren von Apache-Protokollen, insbesondere in virtuellen Host-Dateien, ermöglicht es Ihnen, ein Problem zu lokalisieren, falls etwas mit dem Webserver schief geht.
Um das Protokollieren zu aktivieren, müssen Sie das Modul mod_log_config einbinden, das zwei Hauptprotokollierungsdirektiven bereitstellt.
- ErrorLog – Legt den Pfad der Fehlerprotokolldatei fest.
- CustomLog – Erstellt und formatiert eine Protokolldatei.
Sie können diese Attribute in einer virtuellen Host-Datei im Abschnitt für virtuelle Hosts verwenden, um das Protokollieren zu aktivieren.
<VirtualHost 172.16.25.125:443> ServerName example.com DocumentRoot /var/www/html/example/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Die {APACHE_LOG_DIR}
Direktive in Debian-Systemen ist definiert als /var/log/apache2 Pfad.
16. Führen Sie Apache als separaten Benutzer und Gruppe aus
Das Ausführen von Apache als separater Benutzer und Gruppe ist eine gängige Sicherheitspraxis. Dadurch können Sie den Webserver-Prozess von anderen Systemprozessen isolieren und potenzielle Schäden minimieren, wenn der Webserver kompromittiert wird.
Zuerst sollten Sie einen neuen Benutzer und eine neue Gruppe speziell für Apache erstellen.
$ sudo groupadd apachegroup $ sudo useradd -g apachegroup apacheuser
Dann müssen Sie die Apache-Konfigurationsdatei bearbeiten, um den neuen Benutzer und die neue Gruppe anzugeben.
User apacheuser Group apachegroup
Da Sie den Benutzer und die Gruppe ändern, unter denen Apache ausgeführt wird, müssen Sie möglicherweise die Besitzverhältnisse von Webverzeichnissen und -dateien aktualisieren, um sicherzustellen, dass Apache sie weiterhin lesen kann.
$ sudo chown -R apacheuser:apachegroup /var/www/html
Nachdem Sie diese Änderungen vorgenommen haben, starten Sie Apache neu, um sie anzuwenden:
$ sudo systemctl restart httpd # For RHEL/CentOS $ sudo systemctl restart apache2 # For Debian/Ubuntu
17. Schutz vor DDoS-Angriffen und Absicherung
Es ist zwar wahr, dass Sie Ihre Website nicht vollständig vor DDoS-Angriffen schützen können. Hier sind jedoch einige Richtlinien, die Ihnen helfen können, sie zu mildern und zu verwalten.
- TimeOut – Diese Direktive ermöglicht es Ihnen, die Dauer festzulegen, die der Server auf das Abschließen bestimmter Ereignisse wartet, bevor er einen Fehler zurückgibt. Der Standardwert beträgt 300 Sekunden. Für Websites, die anfällig für DDoS-Angriffe sind, ist es ratsam, diesen Wert niedrig zu halten. Die geeignete Einstellung hängt jedoch weitgehend von der Art der Anfragen ab, die Ihre Website erhält. Hinweis: Ein niedriger Timeout kann bei einigen CGI-Skripten Probleme verursachen.
- MaxClients – Diese Direktive legt das Limit für die Anzahl der gleichzeitig bedienten Verbindungen fest. Neue Verbindungen über dieses Limit werden in die Warteschlange gestellt. Es ist sowohl in den Prefork– als auch in den Worker MPMs verfügbar. Der Standardwert beträgt 256.
- KeepAliveTimeout – Diese Direktive legt die Dauer fest, die der Server auf eine nachfolgende Anfrage wartet, bevor er die Verbindung schließt. Der Standardwert beträgt 5 Sekunden.
- LimitRequestFields – Diese Direktive legt ein Limit für die Anzahl der von Clients akzeptierten HTTP-Anforderungskopffelder fest. Der Standardwert beträgt 100. Wenn DDoS-Angriffe aufgrund einer übermäßigen Anzahl von HTTP-Anforderungsköpfen auftreten, wird empfohlen, diesen Wert zu reduzieren.
- LimitRequestFieldSize – Diese Direktive legt eine Größenbeschränkung für den HTTP-Anforderungskopf fest.
18. Führen Sie regelmäßige Schwachstellen-Scans durch
Ein weiterer Weg, um Ihren Webserver zu schützen, besteht darin, regelmäßige Schwachstellen-Scan-Tests durchzuführen. Dies hilft dabei, potenzielle Sicherheitslücken zu identifizieren, die von Hackern ausgenutzt werden könnten, um Zugriff auf sensible Dateien zu erhalten oder Malware einzuschleusen.
Schwachstellen-Scan-Tools helfen auch dabei, unsichere Konfigurationseinstellungen aufzuzeigen und bei der Überprüfung auf Einhaltung zu unterstützen. Zu den beliebten Schwachstellen-Scan-Tools gehören Acutenix, Nessus, Nexpose, Sucuri und viele mehr.
Zusammenfassung
Dies sind einige der Apache-Härtungstipps, die Sie auf Ihrem Webserver implementieren können, um eine zusätzliche Schutzschicht zu bieten und Eindringlinge fernzuhalten.