Website von IIS 7 auf UNC Freigabe Share bereitstellen

So lange man auf der lokalen Festplatte mit IIS 7 arbeitet ist das mit dem Zugriff ja alles noch relativ unkompliziert. Beim IIS 6 stellt eine Freigabe im Netzwerk auch kein Problem dar um als Speicherort für Websites zu dienen. IIS 7 bekommt das aber nur mit einigen Verrenkungen auf die Reihe. Wie Sie IIS 7 dazu überreden können erfahren Sie hier.

Unter dem Punkt Nachtrag weiter unten finden Sie noch eine Methode mit der es bei Windows Server 2008 R2 möglich ist anonyme und authentifizierte Freigabe in einem Share und Anwendungspool bereit zu stellen.

Anonymer Zugriff auf eine Website auf einem Fileserver mit IIS 7

Erstellen Sie im AD einen Benutzer für den Zugriff auf die Freigabe. Beachten Sie dabei bitte, dass das Kennwort nicht abläuft und der Benutzer es nicht beim ersten Anmelden ändern muss, ansonsten klappt es nur einen gewissen Zeitraum bzw. gar nicht.

Diesem AD-Benutzer geben Sie die NFTS- und Freigabeberechtigung Lesen. Wenn Sie es benötigen auch mehr, aber der Sicherheit zuliebe würde ich anonymen Benutzern nie mehr als Lesen einräumen. Auf keinen Fall vergessen dürfen Sie dem Verwalter der Website Vollzugriff (NTFS+Share, wie beim User auch) einzuräumen. In meinem Fall der Domänenadmin. Wenn Sie das vergessen, können Sie keine Einstellungen an der Website vornehmen, da wir nur lesenden Zugriff auf die web.config Datei hätten, welche die Einstellungen der Website enthält.

Klicken Sie mit der rechten Maustaste in der Webserververwaltung im linken Abschnitt auf den Knoten Sites und dann auf „Website hinzufügen“. Geben Sie dem Kind einen Namen und weisen Sie den UNC-Pfad (\\Server\Freigabe – die Sie zuvor erstellt haben) zum Dateiserver an. Klicken Sie auf „Verbinden als“ und geben Sie Ihren ebenfalls zuvor erstellten AD Benutzer und sein Kennwort (2x) an. Bindungen nach Ihren Vorstellungen einstellen und schon sollte der anonyme Zugriff klappen (es sollten natürlich korrekte html Dokumente im Share liegen, die abgerufen werden können).

Die Einstellungen des Application-Pools (ob integriert, oder klassisch – Netzwerkdienst oder ApplicationPoolIdentity spielt keine Rolle). Wenn es jetzt immer noch nicht klappt, haben Sie schon einmal Ihre Firewalleinstellungen gecheckt? Sind alle Module und Handler in der Website standardmäßig eingestellt?

Authentifizierter Zugriff auf eine Website auf einem Fileserver mit IIS 7

Erstellen Sie wie oben im blauen Abschnitt beschrieben Ihre Website. Der Unterschied besteht darin nun keinen Benutzer anzugeben, sondern die Pass-Through-Authentifizierung zu nutzen.

Aktivieren Sie die Standardauthentifizierung, installieren Sie ggf. das Modul über Rollendienste hinzufügen im Servermanager nach. Windows oder Digestauthentifizierung funktionieren nicht!!! Wenn Sie die Standardauthentifizierung sicher machen möchten, weil Kennwörter im Klartext übertragen werden müssen Sie SSL einsetzen. Aber das ist eigentlich nicht wirklich tragisch, wenn man überlegt, dass bei den anderen Authentifizierungsvarianten ja auch nur die Anmeldung verschlüsselt wird und nachfolgend alle Daten im Klartext über die Leitung spazieren!

Nun brauchen wir aber auch noch einen AD-Benutzer und einen freigegebenen Ordner auf einem Dateiserver. Den Benutzer weisen wir nun dem Anwendungspool der mit unserer eben erstellten Website verknüpft ist zu indem wir ihn unter Anwendungspools mit der linken Maustaste anklicken und dann auf der rechten Seite auf „erweiterte Einstellungen“ klicken. Dort sehen wir eine Zeile die mit Identität beginnt. Je nach Version steht dort standardmäßig Netzwerkdienst oder ApplicationpoolIdentity. Klicken Sie rechts den Eintrag an und es tauchen 3 Punkte auf. Da auch noch einmal drauf klicken und den unteren Eintrag Benutzerdefiniertes Konto anklicken und dort unseren AD-User mit Kennwort eintragen.

Auf dem Fileserver geben wir dem Verwalter der Website (meist der Admin) Vollzugriff und unserem selbst gebastelten AD-User Ändern Berechtigung (nur wenn unbedingt notwendig Vollzugriff) sowohl in den Freigabeberechtigungen als auch unter dem Reiter Sicherheit. Auf die im Verzeichnis enthaltene web.config bekommt wieder nur der Websiteverwalter (meist der Admin) Vollzugriff und unser AD-User bekommt Lesen. Schalten Sie ggf. die Vererbung der Berechtigungen bei NTFS aus. Alle anderen Dateien und Verzeichnisse geben Sie nur den Benutzern die gewünschten Berechtigungen die auch entsprechend darauf zugreifen sollen.

Interessanter Weise müssen Sie beim Zugriff unbedingt „http://“ vorne dran schreiben. Vergisst man das, klappt der Zugriff kurioser Weise nicht!

 

Nachtrag:

Auf aktuellen Windows Server 2008 R2 Systemen ist es mir geglückt, einen UNC-Share mit kombiniertem anonymen und authentifiziertem Zugriff (Standard-Authentifizierung) bereit zu stellen.

Erstellen Sie im AD einen Benutzer für den Zugriff von IIS auf die Freigabe. Beachten Sie dabei bitte, dass das Kennwort nicht abläuft und der Benutzer es nicht beim ersten Anmelden ändern muss, ansonsten klappt es nur einen gewissen Zeitraum bzw. gar nicht.

Diesem AD-Benutzer geben Sie die NFTS-Berechtigung „Ändern“ auf den freizugebenden Ordner. Benutzer bekommen „Lesen“ und Administratoren natürlich „Vollzugriff“. Bei der Freigabeberechtigung selbst tragen Sie der Einfachheit halber Jeder=“Ändern“ ein (dies tut der Sicherheit, dank der Kombination mit NTFS keinen Abbruch). Dies sorgt bei den darin enthaltenen Unterordnern und Dateien für eine gute Ausgangsbasis. Alle nun enthaltenen Dateien und Unterordner stehen somit zunächst einmal jedem Besucher anonym zur Verfügung.

An der Datei web.config müssen Sie die Berechtigungen für Ihren IIS-Benutzer auf „Ändern“ aufbohren, damit Ihr Webserver die Einstellungen bearbeiten kann, falls dies nicht automatisch bei Anlegen der Website/Anwendung geschieht.

Wenn Sie paranoid veranlagt sind können Sie auch noch die Berechtigungsvererbung abschalten und der Gruppe der Benutzer den Zugriff komplett entziehen und entsprechend die von Ihnen gewünschten Benutzer/Gruppen mit Ihren speziellen Berechtigungen versehen.

Dateien/Ordner die nur bestimmten Benutzern nach einer Authentifizierung zur Verfügung stehen sollen schalten Sie die Vererbung aus und entziehen der Gruppe der Benutzer den Zugriff komplett. Dafür tragen Sie die Benutzer und Gruppen ein, die dann den Zugriff darauf erhalten sollen.

So, nun brauchen wir natürlich noch die Einstellungen am IIS. Legen Sie eine Website, oder eine Anwendung an, je nachdem ob Sie es für eine komplette Website einsetzen möchten oder nur für einen Teilbereich. Lassen Sie dabei einen neuen Anwendungspool erstellen…um den kümmern wir uns gleich. Beim physikalischen Pfad tragen Sie Ihren UNC-Pfad ein (Beispiel: \\Servername\Freigabename). Unter „Verbinden als…“ lassen Sie bitte die Standardeinstellung „Anwendungsbenutzer“ stehen. Die Bindungseinstellungen können Sie nach Ihren Wünschen wie gewohnt festlegen.

Nun wechseln Sie zu den Anwendungspools und wählen Sie Ihren eben mit der Website erstellten aus. Klicken Sie im rechten Bereich auf „Erweiterte Einstellungen“. Auf dem sich öffnenden Popup unter „Prozessmodell/Identität“ tragen Sie Ihren Benutzer aus dem AD ein (Beispiel: Domänenname\IISBenutzer).

Jetzt zurück zu Ihrer Website. Unter „IIS/Authentifizierung“ bitte nur „Anonyme Authentifizierung“ und „Standardauthentifizierung“ aktivieren. Wenn die Standardauthentifizierung nicht vorhanden ist müssen Sie im Servermanager erst das Modul nachinstallieren. Bei der Standardauthentifizierung können Sie noch Ihre Domäne als Standarddomäne und Bereich vorgeben. Die Anonyme Authentifizierung benutzt standardmäßig die Identität IUSR *. Alle anderen möglicher Weise angebotenen Authentifizierungsvarianten müssen dabei deaktiviert sein!!! Da Sie für die Authentifizierung Standard einsetzen müssen, sollten Sie sich darüber im Klaren sein, dass die Anmeldeinformationen im Klartext übertragen werden, wenn Sie den Zugriff nicht mit SSL absichern. Bei den anderen verschlüsselten Authentifizierungsverfahren frage ich mich aber auch warum ich die Authentifizierung verschlüssele und die nachfolgend übertragenen Daten im Klartext über die Leitung spazieren. Mit SSL stellt die Klartextvariante also kein Sicherheitsproblem dar, verglichen mit sog. sichern Authentifizierungsverfahren ohne SSL!

* Mit dieser Einstellung hätten dann aber auch anonyme Benutzer potentiell Schreibzugriff auf die web.config. Dies ist wohl weniger wünschenswert. Für die Sicherheit empfehle ich daher im AD noch einen weiteren Benutzer für den anonymen Zugriff zu erstellen. Dann geht man in die Authentifizierungseinstellungen unter IIS und wählt die „anonyme Authentifizierung“ aus und klickt rechts auf „Bearbeiten“. Hier gibt man nun unter „Bestimmter Benutzer“ statt IUSR den eben erstellten Benutzer für anonymen Zugriff aus dem AD an (Beispiel: Domänenname\IISAnonymous“). Die ApplicationPool ID würde ich hier nicht einsetzen, um den Zugriff nun mit ACLs beim NTFS genau steuer zu können.

 

Wenn jemand diese Anleitung unter Server 2008 ausprobiert hat würde ich mich über einen Kommentar, ob es bei W2k8 auch funktioniert sehr freuen. 🙂


Kommentare

Eine Antwort zu „Website von IIS 7 auf UNC Freigabe Share bereitstellen“

  1. Avatar von Michael
    Michael

    Hallo Martin,

    danke für die klasse Anleitung!
    Beim Umstieg auf IIS 7 bin ich erstmal mit der GUI nicht durchgestiegen und nachdem ich endlich die Anmeldeinfos eingegeben hatte, bin ich an der Geschichte mit der web.config gescheitert. Zum Glück habe ich deine Seite hier gefunden.

    Letztendlich habe ich eine web.config auf einem lokalen Testverzeichnis angelegt und die Datei auf meine Freigabe mit den zu „servierenden“ Daten gepackt.
    Danach noch den WWW-Publishingdienst neu gestartet und lief.
    Wenn man das so handhabt, braucht man keinen zweiten Benutzer, verliert jedoch etwas Komfort bei der Administration, wenn man häufiger Änderungen an der Webserverkonfiguration macht.

    Gruß und nochmals Danke!
    Michael

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert