NGINX: Verstecke Dateien und Ordner nicht ausliefern

16.09.2011 yahe administration legacy linux security

Eine eigentlich typische Anforderung: Versteckte Dateien und Ordner, denen unter Linux ein Punkt (".") vorangestellt wird, sollen nicht über den Webserver abrufbar sein. Wie man das beim Apache löst, hatte ich vor einiger Zeit bereits gezeigt. Für den Wechsel zu NGINX musste ich dieses Feature nun natürlich auch umsetzen. Meine erste Konfiguration, dies zu lösen, sah wie folgt aus:

  location ~ ^(.*)\/\.(.*)$ {
    return 404;
  }

Hier wird geprüft, ob, im Dateinamen ein Slash gefolgt von einem Punkt enthalten ist. Oder anders ausgedrückt, ob irgendwo eine Datei oder ein Ordner im Dateinamen steckt, der mit einem Punkt beginnt. Spannenderweise hat diese Variante einen Haken: Sie funktioniert nicht für Dateien, die sich in einem versteckten Ordner befinden. Warum das so ist, weiß ich persönlich nicht, denn wenn man den gleichen regulären Ausdruck in einem Rewrite verwendet, funktioniert es, wie gewünscht:

  rewrite ^(.*)\/\.(.*)$ @404 break;

  location = @404 {
    return 404;
  }

Falls jemand eine Idee hat, warum "location" hier anders reagiert als "rewrite", wäre ich über einen Hinweis dankbar.


Search

Categories

administration (40)
arduino (12)
calcpw (2)
code (33)
hardware (16)
java (2)
legacy (113)
linux (27)
publicity (6)
review (2)
security (58)
thoughts (21)
windows (17)
wordpress (19)