Directory Listing: Bei einer normalen Apache-Konfiguration ist das Directory Listing normalerweise eingeschaltet. Dies sorgt dafür, dass wenn ein Ordner des Webservers direkt angesteuert wird und dort keine index.html, index.htm, index.php, […] vorhanden ist, ein Inhaltsverzeichnis erstellt wird, welches alle in den jeweiligen Ordner vorhandenen Dateien auflistet.
Die Gefahr: Dies kann neben der unfreiwilligen Preisgabe von Informationen noch andere Folgen haben, sollte man zum Beispiel ein Backup in solch einen Unterordner lagern. Es ist daher ratsam, das Directory Listing auszuschalten oder zumindestens selektiv einzuschränken. Es handelt sich wie bei meinen anderen Information Disclosure Teilen um das Prinzip Security through Obscurity. Auch wenn es unterschiedliche Meinungen zu diesem Thema gibt: Gegen Bots und automatisierte Eindringlinge ist die Wirkung unumstritten.
Lösung: Eine Lösungsmöglichkeit wäre zum Beispiel, in alle Unterordner ohne Index.php oder Index.html eine solche reinzukopieren (welche natürlich leer sein kann). Sollte man nun einen solchen Unterordner direkt ansteuern, so würde man statt der Auflistung der Dateien nur den Inhalt der Index-Datei sehen -also eine weiße Seite. Die Informationspreisgabe ist hiermit unterbunden. Eine andere Möglichkeit bietet uns .htaccess an. Schieben wir eine solche .htaccess-Datei in die jeweiligen Ordner, welche wir vor Directory Listing schützen wollen, so schützt dies je nach Einstellung ebenfalls. Zusätzlich bietet uns die .htaccess-Variante auch noch andere Möglichkeiten:
1
2
3
4
5
6
7
8
9
10
11
|
Option +Indexes # Sorgt dafür, dass die Liste der vorhandenen Dateien angezeigt wird Option -Indexes # Die Auflistung ist unterbunden. Es wird beim Aufrufen des betroffenen Ordners ein “403-Error” angzeigt (fehlende Berechtigung) IndexIgnore *.tgz *.sql *. tar # Eine Auflistung wird angezeigt – die entsprechenden Dateitypen werden jedoch ausgenommen und versteckt. Sie erscheinen nicht in der Liste IndexIgnore * # Sorgt wahrscheinlich gut für Verwirrung: Erzeugt einen leeren Index, da alle Dateien ausgeschlossen werden |
Einstellungen im VirtualHost: Neben dem selektiven Verbieten des Directory Listing gibt es noch eine ganz andere und komfortablere Lösung: Das globale Verbieten des Directory Listings. Dafür müssen wir einen Eintrag des VirtualHosts ändern, um das komplette Directory Listing im Ordner /html/ und dessen Unterordnern zu verbieten:
1
2
3
|
<directory ⁄srv⁄www⁄htdocs⁄testpage⁄html> Options -Indexes </directory> |