Das Blog von Benni und Jonas
  • Directory listing unter Apache verhindern

    Geschrieben am 27. Januar 2010 benni 6 Kommentare

      Wie ich nicht ohne Stolz schon oft verkündet habe, sind wir gerade dabei, auf einen vServer umzuziehen. Bevor wir diesen aber für die Allgemeinheit über dieses Blog zugänglich machen, richten wir ihn natürlich erst ein.

      Unter anderem gibts bei Apache viel zu entdecken (und zu zerstören), weswegen ich Experimente nur langsam ausprobiere. Eines der Experimente war heute: Das Directory listing zu verhindern. Bei vielen Servern sieht man nämlich oft deren Inhalt, wenn man einen beliebigen Pfad zu einem vorhandenen Ordner eingibt. Das kann insofern gefährlich werden, als dass es Suchmaschinen so einfacher fällt, den Server mit allen Daten zu scannen, als auch dass andere über Befehle wie wget alle Dateien herunterladen und damit unnötigen Traffic erzeugen (ja, sowas kommt vor). Ganz abgesehen davon, dass es Kriminellen geradezu in die Hände spielt.

      In Foren kursiert oft die „Holzhammermethode“, dass man einfach in jeden Ordner eine leere index.html legt. Dass dies kein sinnvoller Weg ist, ist wohl offensichtlich ;-)

      Um diese „Lücke“ in der Sicherheit tatsächlich zu schließen, kann man unter Apache dieses Listing einfach deaktivieren. Notwendig sind dazu folgende Befehle:

      sudo a2dismod autoindex
      sudo /etc/init.d/apache2 restart

      Danach ist es nicht mehr möglich, über http den Ordnerinhalt auszulesen, selbst wenn in einer .htaccess für den Ordner ein +Indexes angegeben ist.

      Wiederbeleben kann man den autoindex mit diesen Befehlen:

      sudo a2enmod autoindex
      sudo /etc/init.d/apache2 restart
      Share and Enjoy:
      • Facebook
      • Digg
      • del.icio.us
      • Google Bookmarks
      • Identi.ca
      • MisterWong.DE
      • MySpace
      • Reddit
      • Slashdot
      • Twitter
       

      Kommentare:

      • Hab grad keinen Apache laufen, aber wars nicht so, dass man das auch verhindern konnte, indem man dem Ordner n ‘chmod o-x’ verpasst?

      • Mir gefällt eine “leere” (mit einer sinnvollen Fehlermeldung gefüllte) index.html besser. Warum?

        Weil man in der obigen Ausgabe gleich die Apache- PHP- und Betriebssystemversion auslesen kann, und das einem potenziellen Angreifer das Wissen um die vorhandenen Sicherheitslücken frei Haus liefert.

        Gerade Fehlermeldungen oder Login-Prompts sollten eigentlich nie irgendwelche Informationen enthalten.

      • Sollte es nicht reichen, die Ordnerrechte auf 750 oder gar 700 zu setzen?

      • Es hätte auch eine .htaccess im root-Ordner deiner Webseite gereicht (alternativ auch im VHost):

        Options -Indexes

        @Gerald:
        Das lässt sich in der apache2.conf abstellen. Aber an sich ist deine Begründung schlecht, da diese Informationen bei jeder Fehlerseite (ja, auch 404) dabeibstehen.

      • Noch ein kleiner Tip: Mit einem “sudo /etc/init.d/apache2 force-reload” kann man die neue Konfiguration einlesen, ohne den Apache komplett neu zu starten. Auch nützlich wenn ein neuer Virtueller Host dazukommt.

        Auch wenn 2 Sekunden “Downtime” nicht tragisch sind: Es geht einfach schneller :)

      • super – danke für deinen Tipp!
        Genau das habe ich gesucht =)


      Einen Kommentar schreiben: