Schlagwort-Archive: Apache Webserver

Der Apache HTTP Server ist in fast allen Linux-Distributionen und in macOS standardmäßig enthalten.

Apache Serversignatur deaktivieren

HTTP-Server-Header, Serversignatur bei Apache, PHP, Nginx

Es gibt zahlreiche Möglichkeiten, wie Webseiten Sicherheitsbedrohungen ausgesetzt werden. Informationen in der Serversignatur sind für Systeme erhöhte Risiken und können gegen sie eingesetzt werden.

Die Serversignatur liefert wichtige Information über den Server mit den Erweiterungen und das Betriebssystem. Bei einem Apache Server auf Debian GNU/Linux wird die Apache Versionsnummer und Betriebssysteminformation in der HTTP Server Header Signatur angezeigt.

Diese im HTTP Server Header angezeigte Information bei Zeile 10 gibt aufschluss über die Webserver Versionsnummer und die PHP-Version, die OpenSSL Version für Transport Layer Security sowie das Betriebssystem.

Signaturen können vertrauliche Informationen zu den auf dem Webserver ausgeführten Softwareversionen enthalten. Wird eine Seite auf dem Server nicht gefunden, sendet der Server dem Client eine Fehlerseite, dabei erscheint im Browser die Seite, Not Found.

404_Not_Found
Abbildung: Browser Seite mit HTTP-Statuscode 404 und Serversignatur

Ein toter Link wird mit dem HTTP-Statuscode 404 dem Browser zurückgegeben, dazu werden noch weitere Informationen über den Webserver sowie die verwendete Version bekanntgegeben.

Es wird empfohlen die Serversignatur zu deaktivieren, wenn das System vor offenen Bedrohungen geschützt werden soll. In diesem Tutorial wird gezeigt, wie die Serversignatur deaktiviert werden kann.

Apache HTTP Serversignatur bei Debian GNU/Linux deaktivieren

Unter Debian 10 (buster) wird die Konfiguration der Serversignatur in der Datei security.conf vorgenommen.

Die Standard Einstellung bei Debian 10 (buster) und auch bei Ubuntu für ServerSignature ist On und ServerTokens ist Full. Daktivieren lassen sich diese wie folgt.

Die änderung der Apache Webserver Konfiguration übermehmen.

Apache HTTP Serversignatur bei CentOS GNU/Linux deaktivieren

Bei CentOS (RedHat) wird die änderung der Serversignatur in der Apache Konfigurationsdatei httpd.conf vorgenommen.

Deaktivierung der HTTP-Serversignatur für CentOS übernehmen.

Nach der deaktivierung der Serversignatur wird diese in der HTTP Server Header Ausgabe nicht mehr angezeigt. Die überprüfung der änderung kann mit wget oder hier gemacht werden.

Das deaktivieren der Serversignatur kann auch mit einer .htaccess-Datei erreicht werden, diese wird falls nicht bereits vorhanden, in der Docroot erstellt.

PHP-Version im HTTP Server Header deaktivieren

Die Ausgabe der PHP Versionsnummer wird bei Debian 10 (buster) wie folgt in der Datei php.ini deaktiviert.

Bei CentOS (RedHat) wird der PHP Version Header in der php.ini unter folgendem Pfad vorgenommen.

Apache HTTP-Response-Header

Die Apache ServerTokens Direktive hat die folgenden möglichen Werte, die an Clients gesendet werden, wenn der spezifische Wert festgelegt wird.

Diese Einstellung gilt für den gesamten Server und kann nicht auf Virtual-Host-Basis aktiviert oder deaktiviert werden.

Nginx HTTP Server_tokens OFF

Für den Nginx Webserver ist die Datei nginx.conf zu editieren.

Die deaktivierung der Nginx Serversignatur übernehmen.

Apache-Konfigurationsdateien mehrzeilig auskommentieren

Mehrzeilige Kommentarblöcke in Apache.conf Konfigurationsdateien

Apache .conf-Dateien unterstützen nur einzeilige Kommentare, beginnend jeweils mit einem Hash (#) Zeichen. Sollen mehrere Zeilen als zusammenhängende Blöcke kommentiert werden, um beispielsweise eine VirtualHost-Konfiguration vorübergehend zu deaktivieren, bietet sich hierzu eine nicht vorhandene Laufzeitvariable anzuwenden, mit einer erfundenen IfDefine-Direktive umschliesst man den Codeblock der ignoriert werden soll, wie in folgendem Beispiel:

Die VirtualHost-Direktive wird ignoriert, da IgnoreLines ein erfundener Parameter ist, der niemals auf true getestet wird. Wenn man die VirtualHost-Direktive wieder ausführen möchte, entfernt man einfach IfDefine wieder.

Um zu verifiziren welche VirtualHost ausgeführt werden, führt man bei redhat und CentOS folgendes Apache control command aus.

Bei Ubuntu ist das Apache HTTP server control command wie folgt.

htaccess und Dynamische IP Adressen

Apache htaccess Allow from Dynamic IP Address

Apache Webserver Zugriffsteuerung über htaccess, auch um Autorisierten Zugang auf Webseiten zu ermöglichen.

Mit der Apache direktive Allow from ist es möglich eine bestimmte IP von der Anmeldeaufforderung auszuschliessen. Dabei ist die Übergabe von Hostnamen und FQDN leider nicht möglich. Anhand des folgenden Scriptes wird die Dynamische IP eines Hostname ausgelesen und in die htaccess-Datei eingetragen.

Der folgende Shell Script ermöglicht die Auflösung der IP Adresse und schreiben der IP Adresse in die htaccess-Datei. Die folgenden Zeilen in der Konsole mit copy & paste einfügen, damit wird die Script Datei erstellt.

 Copy Paste

Der Script schreibt hier auf einem CentOS Host die htaccess-Datei um. Bei Zeile Allow from mit der Marke #DDNS wird der Hostname ausgelesen, auf der nächsten Zeile mit der Marke #DDNS-IP wird die aufgelöste IP des Host geschrieben. Die Pfad Variable htpath kann DocumentRoot oder ein Unterverzeichnis sein, dabei bearbeitet der Script alle vorkommenden .htaccess-Dateien rekursive ab htpath.

Die htaccess-Datei wird im Webverzeichnis gespeichert dieses geschützt werden soll. Mit cd in das gewünschten Verzeichnis wechseln und die folgenden Zeilen mit copy & paste in der Konsole einfügen, dies erzeugt die .htaccess-Datei.

 Copy Paste

Die Zeilen mit #DDNS und #DDNS-IP (mit #) dienen zur Markierung.

Der Script muss noch  ausführbar gemacht werden.

Damit die Auflösung der Dynamischen IP laufend aktualisiert wird, kann mit crontab -e ein Cron job erstellt werden.

Nach restart des Cron Daemon ist der job aktive.

Hinweis:
Ab Apache 2.4 lautet die direktive von zuvor Allow from nun Require.
Apache 2.x mod_access_compat

Apache 2.4 mod_authz_host

Die von mod_access_compat bereitgestellten Allow-, Deny- und Order-Direktiven sind veraltet und werden in den zukünftigen Version nicht mehr unterstützt. Es wird empfohlen die neuen Direktiven zu verwenden.