IIS für Einsteiger Erste Schritte – IIS Bestandteile und erste Website einrichten. Nach der Installation – Bestandteile des IIS. Was sind die wichtigsten Verzeichnisse und Dateien für den IIS, welche Benutzerkonten werden angelegt bzw. verwendet und wie heißen die IIS-Dienste welche bei der Installation des IIS7 erzeugt werden: Wichtige Verzeichnisse und Dateien. C:\Windows\System32\inetsrv Hauptverzeichnis des IIS beeinhaltet z.B. die Dateien zur IIS Konfiguration, Verwaltung (z.B.MMC), IIS-Module, Executables für die IIS Dienste C:\Windows\System32\inetsrv\config\applicationHost.config ApplicationHost.config ist eine editierbare XML Datei welche die Root-|Hauptdatei des IIS 7.0 Konfigurationssystems darstellt. Sie beeinhaltet Definitionen für alle Websites , Anwendungen, virtuelle Verzeichnisse und Anwendungspools , sowie globale Standards für die Web-Server – Einstellungen. Die Konfiguration sollte in regelmässigen Abständen gebackupt werden, z.B. mit dem Commando: C:\Windows\System32\inetsrv>appcmd add backup BACKUP object "20100623T150732" added Die Backups landen im Verzeichnis: C:\Windows\System32\inetsrv\backup Mehr unter Introduction to ApplicationHost.config und Arbeiten mit Konfigurationsdateien in IIS 7.0 Web.config Der IIS erlaubt das Delegieren von Einstellungen. D.h. es können IIS Einstellungen außerhalb der applicationHost.config überschrieben | modifiziert werden, um das Verhalten des IIS auf z.B. Website-, Anwendungs- und Verzeichnis-Ebene zu verändern. Beispiel (s.u.): Caching für einen Untordner deaktivieren. Die Einträge werden in eine web.config Datei geschrieben und im selben Order der Webinhalte abgelegt (i.d.R). Inetpub-Verzeichnis Das C:\inetpub Verzeichnis ist das Lese- und Schreibverzeichnis des IIS. Es enthält folgende Unterverzeichnisse: Ordner Beschreibung C:\inetpub\AdminScripts C:\inetpub\custerr C:\inetpub\history VB Skript zur Administration der IIS Vorgängerversion (IIS6) – wg. Kompatibilität – kommt mit den „IIS 6 Scripting Tools“ Enthält die Fehler-Seiten welche der IIS im Fehlerfall (z.B. File not found 404) dem Websiten Besucher schickt. Unterstützt Mehrsprachigkeit. Mehr unter How to Use HTTP Detailed Errors in IIS 7.0 Sicherheitsnetz: Die IIS Konfiguration wird automatisch bei Änderungen gesichert. Ermöglicht den „rollback“ zu einer früheren funktionierenden Konfiguration falls Fehler bei Einstellungen gemacht wurden. C:\inetpub\logs Ordner für IIS Log-Dateien aller Art, u.a. Web Zugriff- Log-Dateien und Fehlerlogs C:\inetpub\temp Zwischenspeicher-Verzeichnis u.a. um komprimierte Web-Dateien vorzuhalten oder für bereits kompilierte ASP.NET Dateien C:\inetpub\wwwroot Beherbergt das Verzeichnis für die IIS7 Default Web Seite. Anm.: Standardmäßig wird der Inetpub Ordner auf der Systempartition installiert. Aus Sicherheitsgründen mag es evtl. Sinn machen diesen Ordner zu Verschieben siehe hierzu: IIS7: Moving the INETPUB directory to a different drive Welche Dienste bringt die IIS Installation? Dienstname Prozessname svchost.exe -k apphost Application Host (C:\Windows\system32\) Helper Service (AppHostSvc) IIS Admin Services inetinfo.exe (C:\Windows\system32\inetsrv\) Web Management Service (WMSVC) wmsvc.exe (C:\Windows\system32\inetsrv\) Beschreibung Verantwortlich u.a. für automatische Konfigurationssicherung. App -Pool -Konto Mapping. (-> C:\inetpub\history) Sinnvoller Dienst. Für Kompatibilität: Bestandteil der „IIS6 Management Kompatibility“ Features. Verantwortlich für das schreiben in das „alte“ IIS6 Konfig-System „metabase.xml“ Nur erforderlich wenn der Windows SMTP Dienst oder der „alte“ FTP-Dienst betrieben wird (also vor FTP7.5). Ermöglicht die remote Verwaltung des IIS7 (via https). Nicht gestartet bei Default. Windows Process Activation Service (WAS) svchost.exe -k iissvcs (C:\Windows\system32\) World Wide Web Publishing Service (W3SVC) svchost.exe -k iissvcs (C:\Windows\system32\) Verwaltet Anwendungs-Pool Konfiguration und Web-Arbeitsprozesse (w3wp.exe) und startet diese ggf. (Prozess Aktivierung). Dieser Service ist für den IIS unerlässlich! Benötigt auch für WCF Anwendungen. Konfiguriert und updated den HTTP.sys. Informiert den WAS wenn eine http Anfrage eintrifft. Sammelt Performance Counter für Websites. Dieser Service ist für den IIS unerlässlich! Wichtige IIS7 Benutzer Konten & Gruppen: Die unten aufgeführten Benutzerkonten benötigen Rechte auf die Ordner mit Website Inhalten siehe hierzu Secure Content in IIS Through File System ACLs Name IUSR Siehe Understanding Built-In User and Group Accounts in IIS 7 IIS_IUSRS Siehe Understanding Built-In User and Group Accounts in IIS 7 ApplicationPoolIdentity z.B. “IIS APPPOOL\DefaultAppPool” Mehr dazu unter Application Pool Identities Typ Bedeutung | Verwengungszweck Benutzer Der IIS greift standardmäßig unter diesen Benutzerkontext für anonyme Website Besucher auf html Dateien zu. Gruppe Webseiten verrichten ihre Arbeiten auf dem System in w3wp.exe Prozessen und sind, da i.d.Regel mehrere w3wp.exe‘s, voneinander isoliert (Prozessisolation). Die w3wp.exe Prozesse können mit verschiedenen Benutzern betrieben werden um die Isolation der Seiten durch unterschiedliche Benutzerrechte weiter zu erhöhen (z.B. durch unterschiedliche Rechte für w3wp.exeUser1 auf Verzeichnis X zu w3wp.exeUser2 auf Verzeichnis Y ). Benutzer welche dieser Gruppe zugeteilt sind haben die notwendigen Rechte auf Dateien und Systemressourcen um für den IIS als AnwendungsPool Identität (und damit w3wp.exe User) zu fungieren. Benutzer Neuer Benutzeraccount , eingeführt (für IIS7.x) ab SP2 für Windows Vista und Windows Server 2008. Ab diesen SP Stand können Application Pools je unter einer eigenen quasi dynamisch für ihn erzeugten Identität laufen. Vergibt man Zugriffsrechte auf Ordner pro Application Pool Identität, erreicht man eine einfache Isolation der Application Pools untereinander und kann somit Websites voneinander sicher abgrenzen. Ist automatisch Mitglied in der IIS_IUSRS Gruppe. Sollte man sich ansehen grade wenn man Isolation von mehreren Websiten auf ein und demselben System sicherstellen muss (z.B. in Hosting Szenarien bzw. Betreiben von Websites von Dritten) Jetzt geht’s los – „Die erste Webseite.“ Start -> Eingabe von „inetmgr“ öffnet die IIS Verwaltungskonsole. Wir wählen die Default Web Site aus und gelangen über einen rechten Mouseklick + Explore in den für die Website konfigurierten Inhalts-Ordner. Wir tauschen die vorhandenen Dateien gegen eine Beispiel Site bestehend aus statischen Inhalten (Html, Bilder, Stylesheet u.ä): Die Beispielseite finden Sie hier zum download. samplesite1.zip Zum Anzeigen der Seite im Browser wählen wir die Option „Browse“ vom Action-Menü: Der Internet Explorer startet und wir bekommen wahrscheinlich folgende Fehlermeldung: Grund für diese Fehlermeldung ist: Der Besucher hat ein Verzeichnis angesurft (siehe URL http://localhost/), daher wird versucht dem Besucher eine Start Seite (z.b. index.htm) zurückzuspielen. Dazu hat der IIS eine Liste an Default Dokumenten (aka Webserver directory index), die definiert welche Dateien einer Seite als mögliche Startseiten in Betracht kommen. Findet der IIS im Verzeichnis keine Datei welche in der Liste aufgeführt wird versucht er das Verzeichnis als Ganzes aufzulisten, da dies aus Sicherheitsgründen standardmäßig untersagt ist bekommen wir die Fehlermeldung 403 Forbidden. Abhilfe: Wir teilen dem IIS mit dass er die Seite start.html in die Default Document Liste aufnehmen soll: Default Web Site auswählen -> Doppelklick auf Default Document -> Add -> start.html Anm.: Dieser Eintrag wird in eine lokale (also im Ordner der Website) web.config Datei geschrieben, d.h. man hätte auch die Einstellung direkt mit einem Texteditor machen können. Das ist kein absonderlicher Weg und dazu ist kein Neustart der Website notwendig – sondernd der IIS reagiert automatisch Änderungen in der web.config Datei. Warum?: Damit haben Entwickler welche z.B. nur Dateien per FTP hochladen können (und keinen anderen Zugang zu Verwaltungstools haben) die Möglichkeit dem Webserver Einstellungen für die eigene Website selbst zu regeln. Greifen wir nun auf unsere Website mit http://localhost/ zu, erscheint folgende gewünschte Ansicht: „Noch eine Website anlegen!“ Auf einem IIS lassen sich natürlich mehrere Websites anlegen. Die Frage „Wieviele?“ läßt sich nicht generell beantworten, da dies davon abhängig ist wie stark die Websites den Server beanspruchen. Soviel sei jedoch gesagt, bei Internet Service Providern können das schon mal hunderte bis wenige tausende sein. Es gibt 3 Parameter welche eine IIS-Website eindeutig bestimmen: Die IP Adresse, den Port und Host Namen. Das Triplet IP:Port:Hostname wird als Binding bezeichnet: Binding Beispiele Bedeutung Parameter IP Adresse All Unassigned oder * Alle auf dem Die IP ist quasi die ‚Telefonnummer‘ des Server vohandenen IPs Servers, davon kann ein Server mehrere 192.168.2.1 IPv4 Adresse haben. Einzelne Websites können auf eine, 2a01:110:8:f001:200:5efe:65.53.236.86 mehrere oder alle IP Adressen ‚hören‘. Egal Ipv6 Adresse ob Ipv4 oder Ipv6. Port 80 Standardport für http Die ‚Durchwahlnummer‘ 443 Standardport für https I.d. Regel würde man im Browser den Port Oder andere mit bei der URL angeben z.B. http://www.microsoft.com:80 macht kein Mensch – außer wenn kein Standardport verwendet wird (z.B. AdministrationsSite welche nicht für jedermann gleich sichtbar sein soll) Host www.microsoft.com Fully Qualified „Kann ich bitte den Klaus sprechen?“: Name Domain Name Beim Aufruf von http://www.microsoft.com bfrank7 Host Name im Browser wird in einem Teils des Nachrichtenkopfes der http Anfrage dem sog. Host Header mit dem String „www.microsoft.com“ geschrieben. Der IIS wertet diesen Header aus leitet die Anfrage an die entsprechende Website weiter. D.h diverse Websites können dieselbe IP haben müssen aber unterschiedliche Hostnamen haben. Als Host Header funktionieren FQDN’s (Internet). Im Intranet finden auch Host | Maschine-Namen Verwendung. Vorsicht: Host Namen lassen sich nur mit Einschränkung für https verwenden. Siehe dazu: SSL certificates on Sites with Host Headers Bei der Erstellung von mehreren Websites auf einem IIS ist darauf zu achten, daß die Bindings sich voneinander unterscheiden. Ansonsten läßt der IIS die Website erst gar nicht starten, z.B.: Mögliche Konstellation von mehreren Websites auf einem IIS: Konstellation Beispielszenarien Gleiche IP, gleicher Port Häufig anzutreffen auf Internet Webservern mit einer IP auf dem und unterschiedlicher mehrere unterschiedliche Domains gehostet sind, welche alle über Hostname den http Standardport angesprochen werden sollen. Gleiche IP, Seltener anzutreffen, gut zum mal schnell testen. Die Ports müssen unterschiedlicher Port und explizit in der URL im Browser angegeben werden z.B. gleicher (oder kein) http://www.xyz.de:8080 und http auf nicht Standardports werden ggf. Hostname von Firewalls blockiert bzw. müssen explizit erlaubt weren. Unterschiedliche IP, Z.B. Wenn mehrere Websites auf einem Server via verschlüsseltem gleicher Port, und gleicher https erreichbar sein müssen (z.B. mehrere Internet shops auf einem (oder kein) Hostname Server) Anm.: Bei Verwendung von https machen Hostnamen nur im Ausnahmefall Sinn. Siehe dazu: SSL certificates on Sites with Host Headers Wir erstellen nun eine 2te Website die sich zur 1sten bei im Port (80 vs. 8080) unterscheidet. Default Web Site auswählen -> rechter Mouseklick auf Sites -> Add Web Site -> Folgende Einstellungen: Site name: myothersite Physical path: c:\webs\myothersite Port: 8080 Die neu erstellte myothersite bekommt die ID 2 zugewiesen und ist bereits gestartet. Man beachte, daß als Website Verzeichnis ein neu angelegter Ordner (c:\webs\myothersite) angegeben worden ist. Dieser Ordner wird mit Inhalten gefüllt: samplesite2.zip Beispiesite hier: Und bekommt abschließend noch die für den IIS notwendigen Benutzerrechte: Jeweils Read & Execute für den Benutzer IUSR und die Gruppe IIS_IUSRS auf den Ordner mit den Web-Inhalten: Ein Aufruf von http://localhost:8080/im lokalen Internet Explorer liefert: Damit haben wir erstmal was es braucht um mehrere anonyme Websites auf einer IIS Installation einzurichten. Weitere Einstellungen des IIS gibt es in nachfolgenden Einträgen.