Manchmal sind es Kleinigkeiten, die mich erfreuen :-) Beim Eintragen eines A-Record über ein W2K8 Server ist mir eben aufgefallen, dass man hier endlich mit Copy & Paste arbeiten kann. Gerade im DNS kann ein Tippfehler echt tödlich sein :-) In den Vorgängerversionen waren die einzelnen Quads abgebildet und der Versuch, etwas in das geteilte Eingabefeld zu kopieren, scheitert. Manchmal in weniger mehr.
Ciao Marco
Dirk Primbs hat seine Top 10 Tools auf 14 erweitert, nachdem er meinen Post gelesen hatte. Live Mesh wurde besonders hervorgehoben. Ich nutzte für einige Dev-Aufgaben wie angedeutet ja ein Windows Server 2008. Die Basis Installation wurde überarbeitet und ich starte direkt mit SP2 die Neuinstallation. Jetzt wollte ich die tollen Tools mit dem “tollen” Tool Live Mesh auf meine Maschine holen… aber es wollte sich nicht installieren lassen :-S
http://msdn.microsoft.com/en-us/library/aa368304.aspx
Mein Rechnung sieht also so aus:
14 Tools minus 1 Tool macht nicht 13 sondern 0, weil das eine Tool alle transportiert :-S
Ich glaube, ich hatte in der alten Installation UAC abgeschaltet und eventuell deswegen den Fehler nicht bekommen. Im Moment will ich doch mal versuchen mit UAC zu leben und dafür muss man dann kurzfristig folgenden RegKey setzen:
Nach der Installation habe ich den Key wieder gelöscht. Ich hoffe ich erlebe nicht noch mehr solcher Überraschungen.
Nach der Installation habe ich mich mal auf den Weg gemacht, den Grund zu finden… aber mehr als das habe ich nicht gefunden:
http://social.msdn.microsoft.com/Forums/en-US/liveframework/thread/d71d367a-7604-4b26-9459-1a8f3dcdf7fc
Ciao Marco
Heute ist der Tag der Windows Firewall und NETSH. Nachdem ich unserem Cloud SQL Flügel gemacht hatte, musste ich mich kurz dem FTP des IIS7 annehmen. Wichtig: Der FTP Server, der unter Features hinzugefügt werden kann ist der IIS6 FTP und kann auch auf dem Windows Server 2008 nicht überzeugen. Erst der Download von IIS.NET bringt den “echten” FTP Server auf die neuste MS Serverplattform. Es geht noch immer um den selben und nun geht es darum sicher FTP Daten auszutauschen. FTP im Standard macht da wenig Spaß. Die heruntergeladene Komponente des IIS kann aber mit SSL (TLS) umgehen. Mit Hilfe diese Funktion kann ich mein Login und den Transfer vor Mithörern schützen. Eine Anleitung zum nackten Einrichten gibt es hier:
http://learn.iis.net/page.aspx/263/installing-and-troubleshooting-ftp7/
Jetzt hat man ein FTP auf der Kiste und nun kann man mit gesunden Menschenverstand oder dieser Anleitung die SSL Konfig vornehmen:
http://learn.iis.net/page.aspx/304/using-ftp-over-ssl/
Mit der Firewall hat das leider alles immer noch nicht viel zu tun. Ein Connect auf offenem Port 21 bringt nach der Erfolgreichen Anmeldung folgenden Fehler in FilZilla: “Error: Failed to retrieve directory listing”. Im IIS Manager kann man zwar für Passiv-FTP eine Portrange angeben, allerdings ist die Windows Firewall nicht in der Lage, eine Portrange entgegen zu nehmen. Eine Rule wie “21, 5000-6000” schlägt fehl… und all einzeln eingeben? Nö. Wie geht es also weiter? Keine Ahnung, warum MS da so wenig Wert drauf legt, non LAN Szenarien einfach mal zu dokumentieren. Aber irgendwo wird dann auch auf den Blog von Jaro Dunajsky verlinkt:
http://blogs.iis.net/jaroslad/archive/2007/09/29/windows-firewall-setup-for-microsoft-ftp-publishing-service-for-iis-7-0.aspx
Für ein Server, der im Internet steht und FTP SSL sprechen soll, muss also folgendes getan werden:
- Download und Installation des FTP7
- Konfiguration des FTP zum Beispiel mit einem Self-Signed-Cert dank IIS7 Cert-Manager
- Binding auf einen Port (zum Beispiel 21)
- Zertifikat zuweisen
- NETSH Konfiguration
netsh advfirewall firewall add rule name="FTP for IIS7" service=ftpsvc action=allow protocol=TCP dir=in
netsh advfirewall set global Statefulftp disable - Für den Zugriff aus .NET heraus ist wichtig:
- Es muss der Passiv-Mode verwendet werden
- Es muss kein spezieller Port verwendet werden, er muss nur mit dem des Servers übereinstimmen
- Die Zertifikate müssen bekannt sein oder ignoriert werden
Jetzt funktioniert’s und ist sogar mit den .NET Bordmitteln (.NET 2.0 oder höher) zu erreichen.
Ciao Marco
Wir entwickeln gerade an einer Anwendung mit Cloud Komponenten. Wichtig… wir sind HIP… oder heißt das heute anders? In der Cloud hat den Vorteil, fast alles über HTTP(S) machen zu können. Das Arbeiten in der Cloud hat aber auch Nachteile… zum Beispiel, das es fast nur HTTP(S) gibt :-) Mir geht es hier nicht um Probleme anderer Leute, alternative Ansätze stehe nicht zur Diskussion… ich erzähle, das hier, weil ich damit gerade ein Problem hatte. Also zu den Details.
Wir haben ein Server im Internet (sucht euch ein Hoster aus und stellt euch da ein Server vor). Dieser Server wird auch zu Entwicklungszwecken genutzt, da wir die Probleme des Web 2.0 von Anfang an benötigen (DNS, Cross-Site-Access, SSL Validation, etc). Der Server hat als Betriebssystem Windows Server 2008. Ein IIS7 bietet die Cloud-Dienste an und ein SQL Server 2008 steht hinter unserer Cloud für das Persistieren der Daten bereit. Mit Hilfe von Astoria (aka ADO.NET Data Services) gibt es Zugriff auf die Daten. Für das Erstellen der Zugriffsschicht (EDMX) benötigt das Visual Studio direkten Zugriff auf die SQL Datenbank. Hier liegt nun das Problem: Für Browsing ins Internet nutzten wir eine schnelle DSL Leitung mit wechselnden IP Adressen. Ich kann dern Windows Server also nicht einfach eine IP Eintragen und fertig. Für den Quickstart (und für den Quasi-Securitytest) wurde der gepatchte Server einfach auf 1433 (SQL Standard TCP Port) geöffnet. Schon nach einem Tag zeige das EventLog massiv viele Einträge über fehlerhafte SA Loginversuche. Slammer lässt also noch 2008 grüßen :-)
Welche Optionen gibt es in solchen Fällen?
- Die Clients benötigen eine Statische IP Adresse
- Für die Servernetze ist das ok, aber fürs Browsen muss das nicht sein
- Den Server ins Clientnetz holen
- Einfach aber nicht realitätsnah
- Eine VPN Lösung einsetzen
- Administrativer Aufwand ist zu hoch und am Client muss man immer schauen das die VPN oben ist
- Die dynamische IP Adresse am Server bekannt machen
- Bingo… aber wie? Einfach weiter lesen.
Wir mache ich also eine dynamisch DSL IP, die täglich einmal wechselt, auf dem Server bekannt? Für die ersten zwei Tage habe ich unsere IP bei http://www.wasistmeineip.de nachgeschlagen und in der Firewall des SQL Server eingetragen. Funktioniert… aber ist auf dauer langweilig. Jetzt kommen die Tools aus dem Titel zum Einsatz:
- Windows Server 2008 Advanced Firewall
Eine Inbound-Rule anlegen, die 1433 erlaubt. - NETSH
Eine CommandLine, die in der Lage ist, Rules der Advanced Firewall zu modifizieren. - PowerShell
Die Script-Umgebung für den Zugriff auf .NET Objekte wir zum Beispiel: System.Net.DNS - DynDNS
Ein Dienst, der auf vielen Routern genutzt werden kann, um sein “privates” DSL Netz mit einer dynamischen IP im Netz auffindbar zu machen. - Windows Task Scheduler 2.0
Kurze Zeit nach dem IP Wechsel (der ja in der Regel immer zur selben Zeit ist) wird das PowerShell los getreten, um die Firewall zu modifizieren.
Und so sieht das ganze aus:
1: ipconfig /flushdns
2: $ip = [System.Net.Dns]::GetHostAddresses("meindynamischesnetz.dyndns.org")[0].ToString()
3: $ip = $ip + "/255.255.255.255,192.168.1.1/255.255.255.255"
4: netsh advfirewall firewall set rule name="SQL-Server" new remoteip=$ip
1: FLUSHDNS für einen frischen DNS Cache
2: Ermitteln der ersten IP Adresse des DYNDNS Eintrags
3: Hinzufügen der IP mit SubNetMask zu weiteren statischen IP Adressen
4: Die REMOTEIP auf die Rule mit dem Namen “SQL-Server” setzen
Die Lösung ist beliebig erweiterbar. Zum Beispiel, die aktuelle Konfig auszulesen und die IP zu ersetzen. Für mich hat es so erst mal gereicht… und vielleicht reicht es auch für andere mit einem selben Problem. Wichtig: Die SQL-Verbindung ist da durch nicht geschützt! Eine Lösung hierfür: Encypt=yes
Ciao Marco
UPDATED: 2008-09-25 – FlushDNS ins Script mit aufgenommen
Auf einer internen Fortbildung hatte ich mir den IIS7 angesehen. Eine der unscheinbarsten Änderungen trifft alle, die sich mit Kerberos auf einem IIS auseinander setzen müssen. Meine SharePoint Installationen sind also in Zukunft davon betroffen. Der Internet Information Server 7 (IIS7) kommt in der Default Konfiguration mit der Einstellung "Enable Kernel-mode authentication" gleich ON daher. Damit unterscheidet sich das Auflösen der Service Principlal Names (SPN) drastisch von der Art, die der IIS6 durchführt. Normalerweise wurde der SPN auf dem Application Pool (AppPool) Acount gesucht. Also auf einem Domain Acount oder auf dem Machine Account, wenn es der "Network Service" oder das "Local System" ist. Die Konfiguration auf einem IIS7 sieht nun so aus, dass die Auflösung mit "Kernel-mode authentication" immer den Machine Account heranzieht. Es ist ein Detail welches man einfach kennen sollte. Wichtig: In einer SharePoint NLB Farm muss man natürlich dieses Feature abschalten, da hier der SPN auf einem Domain Account sitzen muss, da die virtuelle NLB Instanz anders als ein echter Cluster nicht im AD als Objekt vetreten ist und somit auch nicht korrekt für Kerberos und die Delegation konfiguriert werden kann. Das Setting kann aber über den neuen IIS Manager einfach gesetzt werden. Mehr Info's gibt es auch bei dem Kollegen Spencer Harbar:
Using Kerberos with SharePoint on Windows Server 2008
Ciao Marco
Meine SharePoint Installationen sind in der Regel Intranet Installationen. Je nach Szenario ist Kerberos über NTLM als Authentifizierung zu beorzugen. Es ist schwer mit Pauschalen zu arbeiten, aber in der Regel empfehle ich den EInsatz von Kerberos. Die Intrastruktur läßt sich so schnell an wachsende Aufgaben (Reporting, OTP, etc) anpassen. Beim Setzen der Service Principal Names (SPN) ist es wichtig, das der Service nur auf einm einzigen Objekt im Active Directory (AD) liegt. Zum Setzen und Auslesen der SPN's gibt es SETSPN.exe aus dem Ressource Kit (oder in Windows Server 2008 bereits enthalten). In der W2K8 Version von SETSPN kann ich beim Hinzufügen gleich auf doppelte Einträge prüfen lassen. Nur wenn es den Service Name noch nicht auf einem anderen Objekt gibt, wird er auf das gewüschte Element auch gesetzt. Die W2K8 Version läuft (wie immer) nicht auf den Vorgänger-Versionen. Es kommt hinzu, dass ich so Doubletten vermeide, aber wenn ich den entsprechenden Eintrag setzen will, muss ich irgendwie an die Information kommen, wo der Service registriert wurde. Ich habe im Internet gegooglet und eine passende Lösung gefunden:
http://blogs.dirteam.com/blogs/carlos/archive/2006/04/21/812.aspx
1: <GC_Server_Name> = CMD -> SET -> value of LOGONSERVER
2: <Service> = e.g. HOST or HTTP or ...
3: <URI> = e.g. URL of portal -> http://portal.ms.local
4: ldifde -s <GC_Server_Name> -f c:\<My_SPN_Dump_File>.txt -d "" -r "(serviceprincipalname=<Service>/<URI>)" -p subtree -t 3268 -l dn,serviceprinciplename
Ciao Marco
Aus der Woche in der ich mich intensiver mit dem Windows Server 2008 und dem IIS7 beschäftigt habe, hat sich ein Detail eingebrannnt:
Achtung: Firewall ist by default eingeschaltet!
Total sicher, aber auch total ungewohnt. Ich bin gleich drei mal in den Fehler gelaufen:
- IIS7 FTP Server von einem Vista Client aus testen
- SharePoint Server in die Farm joinen
- Reporting Services Integration auf dem Shareoiint aktivieren
Ich habe die Firewall nicht abgeschaltet, sondern einfach die Ports, die ich jetzt benötigte, eingetragen als Exception. Es ist einfach Gewohnheitssache. Ich habe nicht ganz so viel Zeit verloren, da ich nicht so viele Ports benötige, aber Kollegen in deutlich komplexeren Szenarien, hat es einiges mehr an Zeit gekostet.
Ciao Marco
Ich beschäftige mich gerade mit dem Windows Server 2008 (wird ja auch Zeit) und schaue mir speziell den IIS an. Einen Post dazu wird es sicher in Zukunft geben. Meinem Interesse am W2K8 Server gilt natürlich auch speziell der SharePoint-Fähigkeit. Erstes Fazit ist toll, aber auch dazu später mehr. Negativ aufgefallen ist nun der fehlende POP3 Service. Ob die Mehrheit ihn benötigt, ist jetzt nicht die Frage. Für ein (schlanke) SharePoint Testumgebung war es allerdings die einfachste Möglichkeit, eine Szenario samt Mail zu realisieren.
Ich bin natürlich nicht der einzige, der ihn vermißt:
http://patrickyong.net/2008/05/15/pop3-server-for-windows-server-2008/
Die Lösung habe ich nicht getestet, da ich überlege, ob ich nicht den hMailServer für so was nehme. Wenn jemand ein Vorschlag hat, der ohne Exchange auskommt, bin ich für alle Berichte bankbar.
Ciao Marco