Archiv für die Kategorie ‘apache’

Apache - Server Signatur verändern

Sonntag, 07. September 2008

Nach der Installation “out of the box” ist der Apache Webserver recht “gesprächig”.

Auf den Fehlerseiten, wie etwa 404 - Nicht gefunden, oder im HTTP Header finden sich Angaben wie die folgende:

Apache/2.2.8 (Ubuntu) mod_auth_kerb/5.3 PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch Server at foobar.de Port 80

Sowohl Module, Scriptinterpreter und Betriebssystem werden mit allen Versionsangaben und teilweise noch mit Hinweisen auf angewandte Patches ausgegeben. Mit dieser Standardeinstellung erleichtern wir potentiellen Angreifern und Einbrechern die Arbeit erheblich, da diese genau wissen, nach welchen exploits sie suchen müssen.

Mit dem folgenden Kommando:

 gksudo gedit /etc/apache2/apache2.conf

starten Sie einen Editor mit der Apache Konfigurationsdatei. Ändern Sie im folgenden Abschnitt:

#
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of:  Full | OS | Minor | Minimal | Major | Prod
# where Full conveys the most information, and Prod the least.
#
ServerTokens Full

den Wert

ServerTokens Full

auf

ServerTokens Prod

Speichern Sie die Datei und beenden Sie den Editor.
Starten Sie mit:

sudo /etc/init.d/apache2 restart

den Apache Webserver neu.
Danach sollte der Webserver nur noch die folgende Ausgabe liefern: Apache Server at foobar.de Port 80

Weitere mögliche Werte für ServerTokens

  • # ServerTokens Major
    Ausgabe: Apache/2
  • # ServerTokens Minor
    Ausgabe: Apache/2.2
  • # ServerTokens Minimal
    Ausgabe: Apache/2.2.8
  • # ServerTokens Os
    Ausgabe: Apache/2.2.8 (Ubuntu)

Ruft man nicht existierende URL’s ab, wird in der 404 Fehlermeldung nur noch die minimalste Ausgabe erzeugt. Solange man HTML Seiten abruft sieht auch die Ausgabe im HTTP Header sauber aus. Wird jedoch ein PHP Script aufgerufen, erhält man folgenden HTTP Header:

HTTP/1.x 200 OK
Date: Sun, 07 Sep 2008 20:32:52 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5.3
Content-Length: 414
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html

PHP fügt dem HTTP Header bei der Ausgabe eines Scriptes selbstständig diese Informationen hinzu. Um dies zu ändern muss die Datei php.ini geändert werden.
Geben Sie folgenden Befehl ein:

gksudo gedit /etc/php5/apache2/php.ini

Etwa ab Zeile 254 findet sich folgender Abschnitt:

; Misc
;
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
expose_php = On

Ändern Sie

expose_php = On

in

expose_php = Off

Damit die Änderungen wirksam werden müssen Sie selbstverständlich auch den Webserver mit:

sudo /etc/init.d/apache2 restart

noch einmal neu starten. Nun sollte auch der Hinweis aus PHP beim ausführen von Scripten aus dem Header verschwunden sein.

Links:
http header online auslesen

Apache DocumentRoot - Permission denied

Sonntag, 24. August 2008

Der Apache Server ist installiert und nach Eingabe von http://localhost/ im Browser wird ein Dokument mit dem Text It works! angezeigt. Die entsprechende Datei index.html befindet sich im Verzeichnis /var/www. Sie erhalten jedoch eine Fehlermeldung, die besagt, das Sie nicht über die erfordelichen Berechtigungen verfügen, um die Datei index.html zu ändern.

Apache wird in den meisten Fällen unter dem Benutzer root installiert. Daher ist der Besitzer des Basisverzeichnisses, aus dem die Dokumente ausgeliefert werden, auch root und Sie haben als angemeldeter User nicht die Berechtigungen um diese Dokumente zu bearbeiten, weitere Unterordner anzulegen, etc.

Um dies zu ändern und weiteren Nutzern die Möglichkeit zu bieten, Dokumente auf dem Webserver anzulegen und zu ändern, ist es sinnvoll eine neue Gruppe anzulegen, z.B. webuser. Erstes Mitglied dieser neuen Gruppe sollten natürlich Sie selbst werden, damit Sie ebenfalls die erforderlichen Berechtigungen erhalten.

Nachdem die Gruppe erstellt ist und Sie Mitglied sind, geben Sie den folgenden Befehl auf der Konsole ein und ersetzen Sie dabei user mit Ihrem Usernamen.

sudo chown user:webuser /var/www -R

Jetzt sind Sie Eigentümer der www Basisverzeichnisses und aller Unterordner. Außerdem ist der Zugriff für die Gruppe webuser erlaubt. Sie können dieser Gruppe bei Bedarf weitere User hinzufügen.

Hinweis:
Es handelt sich hierbei nicht um eine sichere Konfiguration. Sie können über PHP Scripte traversieren und haben u.U. zumindest systemweit Leserechte.