Gestern war es mal wieder soweit, ich habe meinem Hoster eine Mail geschrieben weil ich auf dem Server etwas gefunden habe von dem ich meine daß das so nicht sein sollte. Ich habe schon die eine oder andere Mail verschickt an Leute wenn ich meinte daß da irgendwas komisch konfiguriert war, speziell was Apache angeht, mit dem habe ich mich viel beschäftigt und auch den einen oder anderen aufgesetzt.

Ich habe gedacht ich schreibe hier mal meine gesammelten Apache-Einrichtungs-Erfahrungen auf um Euch vor den meiner Meinung nach übelsten Konfigurationfehlern zu bewahren.

Der Teil der jetzt kommt setzt voraus daß Ihr wenigstens wißt, was die httpd.conf ist und wie man die bearbeitet. Ich persönlich nutze dazu vim, es soll auch Menschen geben, die mit emacs oder nano oder pico zum Ziel kommen. YMMV.

An der Standard-httpd.conf ändere ich als erstes immer zwei Sachen:

  1. Aus ServerSignature On mache ich ServerSignature Off
  2. Ich füge direkt darunter eine Zeile ServerTokens Prod ein

Ersteres dient dazu, auf Fehlerseiten – soweit Ihr keine angepaßten benutzt – die Versionsnummer des Apache zu unterdrücken.

Zweiteres ist ein kleines bißchen fortgeschrittener aber meiner Meinung nach viel wichtiger: in der Standardkonfiguration ist der Apache – leider – sehr mitteilungsfreudig was seine Versionsnummer, das OS auf dem er läuft und vor allen Dingen alle installierten Module samt Versionsnummer angeht, sprich: er plappert sehr viel. Mit den Informationen an der Hand ist es ein leichtes, auf einschlägigen Seiten zu gucken, welches der Module oder der Apache selbst in genau der Versionsnummer über welche Lücken verfügt und die dann zu mißbrauchen. Es ist also in Eurem Interesse, das nicht jeden wissen zu lassen.

Hier mal ein echtes Beispiel eines schlecht konfigurierten Apache, so sieht der entsprechende Teil des HTTP-Headers aus:

Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) mod_gzip/1.3.26.1a mod_macro/1.1.2 mod_ssl/2.8.14 OpenSSL/0.9.6m mod_perl/1.29 mod_throttle/3.1.2

Mit ServerTokens Prod steht da nur

Apache

Besser, oder?

Dann gibt es meiner Meinung nach noch zwei weitere wichtige Punkte:

  1. mod_speling (ja, ein L; Informatikerhumor) ist böse!
    Wenn man das installiert und aktiviert macht man Anderen das Auffinden vermeintlich “versteckter” Inhalte nur unnötig einfach
  2. In die robots.txt gehören keine nicht verlinkten oder “versteckten” Inhalte!
    Nur durch das interessierte Angucken der robots.txt habe ich schon die eine oder andere vermeintlich “versteckte” Konfigurationsseite, PHPMyAdmin oder sonstwas gefunden, teilweise nicht durch Paßwörter gesichert.
    Wenn Ihr das Zeug einfach nicht verlinkt und die URL nur bookmarked findet man das nur sehr schwer, vorausgesetzt Ihr seid etwas kreativ bei der Vergabe der Pfadnamen.

Und wenn Ihr lieb und brav seid erzähle ich Euch irgendwann mal, warum Klartextprotokolle wie FTP und telnet auf den virtuellen Müllhaufen des Informationszeitalters gehören und man die meidet wo es nur geht.