Word Press oder URL Rewrite auf Windows Server 2016 bzw. IIS 10 installieren
Grundsätzlich ist die Installation mit dem Webplattforminstaller eine einfache Angelegenheit. Leider ist die angebotene Software schlecht gepflegt.
Grund warum die Installation nicht klappt ist die Versionskontrolle in URL-Rewrite, die zwar sagt es muss IIS Version 7 oder höher installiert sein, aber mit einem Hexwert a (Version 10) kommt die Installationsroutine wohl nicht zurecht. Der Trick ist einfach:
Ändern Sie die Versionsnummer von IIS in der Registry von a auf 7 unter:
HKLM:\Software\Microsoft\InetStp\MajorVersion
Danach lässt sich URL-Rewrite problemlos installieren. Ebenso Wordpress, dass URL-Rewrtie benötigt wird dann bei der Installation nicht mehr meckern.
Zum Abschluß sollten Sie aber nicht vergessen, in der Registry unter besagtem Key wieder ein a einzutragen.
IIS 7 und 7.5 URL für verschiedene (mobile) Clients, auch Handys genannt, ohne Programmierkenntnisse umbiegen
Normaler Weise wird direkt im Code für die Website (php, asp, aspx oder was auch immer) festgelegt wie eine Website für den jeweiligen Client dargestellt wird. Oft wird auch von einer sog. Browserweiche gesprochen. Das kann man aber aber auch direkt vom IIS erledigen lassen. Beispiele im Web gibt es genug dafür nur entweder funktionieren die nicht, oder ich bin zu dusselig. 😉
Hier eine reich bebilderte Beschreibung über 5 Seiten wie das ganz einfach geht: IIS7 Websites für Mobile Clients erkennen
Identity Management bei IIS 7.5 unter Windows Server 2008 auf einen Blick
Bei IIS 7.5 unter Windows Server 2008 R2 und auch bei IIS 7 ist es gar nicht so leicht zu durchblicken wann welcher Benutzer zur Authentifizierung und Autorisierung zum Einsatz kommt. Daher habe ich einmal ein Schaubild gezeichnet auf dem die Zusammenhänge der verschiedenen Einstellungen deutlich werden (wenn das Bild fehlt bitte auf die Artikel-Überschrift klicken):
Weitere Informationen zur Application Pool Identity bei IIS 7.5 finden Sie hier. Wie man den Zugriff auf UNC-Freigaben weiterleitet wird hier erklärt.
Soll ich bei IIS 7.x den Usermode-, oder den Kernelmodecache aktivieren, oder beide?
Die Antwort lautet wie üblich: Es kommt ganz darauf an! 😉
Fakten: Kernelmodecache ist schneller als Usermodecache, da ein Übergang in den Usermode immer viel Zeit kostet! Wenn ein Webserver im Normalfall ca. 550/s Anfragen schafft, so werden daraus bei aktiviertem Usermodecache ca. 650/s, bei Kernelcache 950/s. Aktiviert man bei geht er knapp über 1000/s. Allerdings hat man dafür nicht immer genug Speicherreserven.
Des Weiteren ist es davon abhängig wie IIS mit der jeweiligen Website arbeitet. Wird von der Webanwendung mehr im Usermode gearbeitet, ist es sinnvoller den Usermodecache zu aktivieren, arbeitet Sie mehr im Kernelmode, natürlich lieber den Kernelcache. Dazu muss man allerdings wissen, wie die jeweilige Webanwendung tickt. Das verrät der folgende Powershell-Befehl:
Get-WmiObject win32_process | ? {$_.caption -eq "w3wp.exe"} | select commandline,usermodetime,kernelmodetime | fl
Ausgabe sind alle Workerprozesse vom IIS. Dabei wird als erstes angezeigt, welcher Applicationpool sich hinter dem Workerprocess versteckt und danach folgen die Zeiten die er sich im User und im Kernelmode aufhält. Anhand dieser Zahlen kann man sehr schön festlegen, welche Cacheart die sinnvollere für den jeweiligen Applicationpool und den damit verknüpften Websites ist. Zugegeben ,man hätte das ganze noch viel eleganter Lösen können am besten gleich mit der automatischen Cachekonfiguration. Aber das war eben mal so auf die Schnelle Quick & Dirty eben ;-).
IIS 7.5 Webserverkennung ändern
Im Internet gibt es unzählige Beiträge wie man den HTTP-Responseheader beim IIS verändert, oder abschaltet. Diese Tipps funktionieren aber nur bei ältern IIS Webservern. Die Beispiele die ich für IIS 7.5 unter Windows Server 2008 R2 gefunden habe sind entweder wirkungslos oder produzieren nur Fehler. Hier die Lösung!
Installieren Sie, falls noch nicht vorhanden, den Rollendienst ASP.NET mit dem Servermanager. Legen Sie in Ihrem Webverzeichnis einen Ordner namens App_Code an ( keine Verhandlungen – das Verzeichnis muss so heißen!). In diesem Verzeichnis erstellen Sie eine Datei Namens Martins.ServerModules.RemoveServerHeaderModule.cs. In die Datei schreiben Sie mit Notepad folgenden Text:
using System; using System.Text; using System.Web;
namespace Martins.ServerModules { public class RemoveServerHeaderModule : IHttpModule { public void Init(HttpApplication context) { context.PreSendRequestHeaders += OnPreSendRequestHeaders; } public void Dispose() { } private void OnPreSendRequestHeaders(object sender, EventArgs e) { HttpContext.Current.Response.Headers.Set("Server", "Apache"); } } }
Dann fügen Sie in der IIS-Verwaltungskonsole für die Website in der Sie vorhin den Ordner App_Code erstellt haben ein verwaltetes Modul hinzu. Unter Name schreiben Sie etwas was Sie wiedererkennen also z. B. MartinsModul und unter Typ schreiben Sie den Dateinamen ohne die Dateinamenerweiterung, also: Martins.ServerModules.RemoveServerHeaderModule. Dämliche Rückfragen mit Ja beantworten und schon ist Ihr IIS angeblich ein Apache. Das was er da anmotzt behebt er automatisch.
Mit einem Netzwerksniffer sehen Sie nun in der Rückantwort vom Server statt:
Server: Microsoft-IIS/7.0\r\n
Server: Apache\r\n
Den Eintrag: X-Powered-By: ASP.NET\r\n werden Sie ganz einfach über HTTP-Antwortheader in der IIS-Verwaltungskonsole los. Das kann ja jeder ;-), aber etwas löschen was nicht da steht ist gar nicht so einfach!
Was ist beim IIS 7.5 unter Server 2008 R2 die Application Pool Identität?
Unter IIS 7 bei Windows Server 2008 ist die Standardidentität unter welcher der Workerprocess (w3wp.exe) ausgeführt wird der Netzwerkdienst. Die Identität des Workerprocess wird am Applicationpool bzw. zu Deutsch Anwendungspool eingestellt. Bei IIS 7.5 unter Windows Server 2008 R2 ist dies standardmäßig die Identität ApplicationPoolIdentity.
Diese Einstellung ist noch sicherer als Netzwerkdienst, aber auch etwas problematischer. Denn wie gebe ich dieser Identität Berechtigungen auf die Dateien? Diese Identitäten werden nämlich erst beim starten des jeweiligen Applicationpools von WAS erzeugt und dies wiederum passiert nur, wenn ein Benutzer auf die Website/Anwendung zugreift. Zudem werden die Identitäten immer wieder neu generiert und tauchen weder im AD noch in der lokalen Benutzerverwaltung auf.
Um der ApplicationPoolIdentity Berechtigungen am Dateisystem zu geben müssen Sie zunächst wie gewohnt vorgehen, wenn Sie dann den Benutzer/Gruppe auswählen möchten müssen Sie unter Pfad den lokalen Computer angeben (nicht AD) und dann „IIS APPPOOL\DefaultAppPool“ eintippen, da die Benutzer in der grafischen Auswahl nicht angezeigt werden. Je nachdem um welchen ApplicationPool es sich handelt müssen Sie natürlich „DefaultAppPool“ durch den Namen Ihrer selbst erstellen Applicationpools austauschen.
Wie man mit IIS eigenen Benutzern im IIS 7 und 7.5 die Remoteverwaltung konfiguriert
Ab IIS 7 unter Windows Server 2008 und R2 (IIS 7.5) hat man die Möglichkeit im IIS selbst Benutzer anzulegen um ihnen die Remoteverwaltung zu ermöglichen, statt auf lokale Benutzerkonten oder Konten aus dem Active Directory zurück zu greifen.
Da IIS 7 seine Konfiguration der Websites in der Datei web.config hinterlegt stellt die Remoteverwaltung ein kleines Problem dar. Wem gebe ich die Berechtigungen auf die Datei web.config, damit ein IIS Benutzer die Konfiguration ändern kann, denn die IIS Benutzer werden ja bei der NTFS-Rechtevergabe nicht angezeigt. Dort sieht man nur die Benutzer aus dem AD und die lokalen Benutzerkonten. Um den Benutzer des IIS Ändern Berechtigung auf die jeweilige web.config zu geben muss man dem Dienst die Berechtigung Ändern geben. Somit ist es mit NTFS-Berechtigungen nicht möglich für die verschiedenen IIS-Benutzer unterschiedliche NTFS-Berechtigungen einzuräumen. Um den Dienst zu autorisieren müssen sie den lokalen Computer (nicht AD) bei der Rechtevergabe auswählen und „NT Service\WMSvc“ eintippen (Anklicken/Auswählen ist nicht, weil es ja keine lokalen Benutzer sind und Dienstekonten auch nicht gelistet werden!) und auf „OK“ klicken. Anschliessend sehen Sie WMSvc in der Rechteliste. Nun können Sie die Berechtigungen auf „Ändern“ wie gewohnt erweitern. Ab nun sollten Sie von einem anderen Server aus die Verbindung mit der IIS-Verwaltungskonsole unter dem erstellen Benutzerkonto herstellen können und auch Einstellungen vornehmen können.
Ein weiterer Stolperstein ist, dass der Webverwaltungsdienst zwar aktiviert wird, aber nach dem Reboot nicht automatisch neu startet. Also ist unter Diensten die Startart für den Webverwaltungsdienst vom „Manuell“ auf „Automatisch“ umzustellen.
Dies ist nur eine Beschreibung wie man den Haken bei der ganzen Geschichte beseitigt, sollten Sie eine komplette Anleitung wünschen hinterlassen Sie doch bitte einen Kommentar oder schicken Sie mir eine e-Mail, dann schreibe ich den Rest auch noch dazu.
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. 🙂
Webplattforminstaller 3.0 von Microsoft
Den Webplattforminstaller von Microsoft gibt es nun inzwischen schon in der Version 3.0 und dennoch kennt diese fabelhafte Programm kaum ein Webserver Administrator.
Mit dem Webplattforminstaller lassen sich automatisch alle kostenlosen Microsoft Webservererweiterungen ohne Fummeleien am System installieren. Egal ob Sie .NET und php Erweiterungen installieren möchten oder gar Joomla!, Drupal, Moodle oder Wordpress. 5 Mausklicks und Sie sind fertig!!! Sollte die ein oder andere Webanwendung einen Datenbankserver benötigen…kein Problem, entweder wird MYSQL oder SQL Express automatisch mitinstalliert und sicher konfiguriert.
Älteste unterstützen Betriebssystemplattformen sind Windows XP ab SP2 (auch Clients haben einen IIS!) und Windows Server 2003 SP1.