<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.adopenstatic.com/cs/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Ken Schaefer</title><subtitle type="html">200 OK :: Internet Information Services, ASP.NET and other sundry things</subtitle><id>http://www.adopenstatic.com/cs/blogs/ken/atom.aspx</id><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/default.aspx" /><link rel="self" type="application/atom+xml" href="http://www.adopenstatic.com/cs/blogs/ken/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.60809.935">Community Server</generator><updated>2008-01-24T11:59:00Z</updated><entry><title>IIS and Kerberos Part 8 - a simple cross Forest/Domain delegation scenario</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/06/28/17805.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/06/28/17805.aspx</id><published>2008-06-29T10:45:00Z</published><updated>2008-06-29T10:45:00Z</updated><content type="html">&lt;p style="font-family:verdana, geneva, arial;"&gt;In this part we extend, slightly, upon the &lt;a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/05/12/17533.aspx" title="IIS and Kerberos Part 8 - a simple cross Forest/Domain scenario"&gt;previous scenario&lt;/a&gt;, by adding delegation. Now we need to allow IIS, in our resource Forest (or domain) to delegate the end user&amp;rsquo;s credentials, to a backend service (SQL Server in this case):&lt;/p&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;The machines this case are:&lt;/p&gt;&lt;table style="font-family:verdana, geneva, arial;"&gt;&lt;tr&gt;&lt;td&gt;Machine&lt;/td&gt;&lt;td&gt;Domain&lt;/td&gt;&lt;td&gt;IP address&lt;/td&gt;&lt;td&gt;Role&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;svr03-r2-dc-1&lt;/td&gt;&lt;td&gt;DomainA&lt;/td&gt;&lt;td&gt;192.168.132.10&lt;/td&gt;&lt;td&gt;DC&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;svr03-r2-dc-2&lt;/td&gt;&lt;td&gt;DomainB&lt;/td&gt;&lt;td&gt;192.168.132.11&lt;/td&gt;&lt;td&gt;DC&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;svr03-r2-web-1&lt;/td&gt;&lt;td&gt;DomainA&lt;/td&gt;&lt;td&gt;192.168.132.20&lt;/td&gt;&lt;td&gt;Web Server&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;svr03-r2-sql-1&lt;/td&gt;&lt;td&gt;DomainA&lt;/td&gt;&lt;td&gt;192.168.132.21&lt;/td&gt;&lt;td&gt;SQL&amp;nbsp;Server&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cltxp-pro-1&lt;/td&gt;&lt;td&gt;DomainB&lt;/td&gt;&lt;td&gt;192.168.132.50&lt;/td&gt;&lt;td&gt;Client&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;A packet capture is available for &lt;a href="http://www.adopenstatic.com/resources/Kerberos2.bin"&gt;download&lt;/a&gt; (taken from the IIS server).&lt;/p&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;Opening the capture in Wireshark you should see the following (the bullet point numbers correspond to the numbers in the image below):&lt;/p&gt;&lt;ol style="font-family:verdana, geneva, arial;"&gt;&lt;li&gt;XP client makes a request to IIS server (Packet 14) and IIS server responds with 401 Access Denied (Packet 17)&lt;/li&gt;&lt;li&gt;XP client contacts DomainB Domain Controller for Kerberos ticket (Packet 19 &amp;ndash; note the request for http/svr03-r2-web-1)&lt;/li&gt;&lt;li&gt;DomainB DC returns a referral to DomainA DC (packet 20)&lt;/li&gt;&lt;li&gt;XP client looks up the necessary service records for DomainA (packets 21-24) before requesting a service ticket from the DomainA DC (packet 33)&lt;/li&gt;&lt;li&gt;The DomainA DC returns a service ticket to the XP client (packet 34)&lt;/li&gt;&lt;li&gt;XP client makes a new request to IIS, supplying it&amp;rsquo;s Kerberos authentication data (packet 37)&lt;/li&gt;&lt;li&gt;IIS contacts its local DomainA DC seeking a referral to DomainB (packets 52-55) &lt;/li&gt;&lt;li&gt;DomainA DC refers IIS to DomainB DC&lt;/li&gt;&lt;li&gt;IIS requests a Kerberos ticket, on behalf of the end user, from DomainB DC (packet 61)&lt;/li&gt;&lt;li&gt;DomainB DC returns the necessary ticket (packet 62)&lt;/li&gt;&lt;li&gt;IIS now connects to SQL Server (packet 65), and gets the results of the query. The resulting webpage is returned to the client (packet 87)&lt;/li&gt;&lt;/ol&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;&lt;img alt="Cross Forest Delegation" border="0" height="360" src="http://www.adopenstatic.com/images/resources/blog/Kerberos17.jpg" style="width:247px;height:360px;" title="Cross Forest Delegation" width="247" /&gt;&lt;/p&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;The requirements to configure this scenario aren&amp;rsquo;t significantly beyond that to configure a basic cross-Forest/cross-Domain scenario featured in the previous part:&lt;/p&gt;&lt;ul style="font-family:verdana, geneva, arial;"&gt;&lt;li&gt;A two-way trust is required. This can use Selective Authentication. However Forest-Wide authentication may be administratively simpler to configure&lt;/li&gt;&lt;li&gt;An appropriate SPN needs to be registered for the backend SQL Server (similar to a &lt;a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2007/01/28/1282.aspx" title="IIS and Kerberos Part 4 - a simple delegation scenario"&gt;single domain delegation scenario&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;In the next part I will discuss publishing an arbitrary FQDN for the IIS host (e.g. a public facing internet site) and UPN suffix routing.&lt;/p&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;Note: A listing of parts is available in the &lt;a href="http://www.adopenstatic.com/FAQ" title="IIS FAQ"&gt;FAQ&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=17805" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="IIS" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/IIS/default.aspx" /><category term="Security" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/Security/default.aspx" /></entry><entry><title>IIS and Kerberos Part 7 - A simple cross Forest scenario</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/05/12/17533.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/05/12/17533.aspx</id><published>2008-05-13T12:13:00Z</published><updated>2008-05-13T12:13:00Z</updated><content type="html">&lt;p&gt;Note: I&amp;nbsp;have&amp;nbsp;created a list of all the &lt;a href="http://www.adopenstatic.com/faq/" title="IIS FAQ"&gt;IIS and Kerberos parts&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I&amp;#39;m finally getting around to writing this section on IIS and Kerberos. This initial post will cover the basics of a cross-Forest Kerberos authentication scenario. In the next few posts we&amp;#39;ll cover more complex situations including delegation and ISA Server publishing.&lt;/p&gt;&lt;p&gt;The basics of cross-domain Kerberos authentication (in the same Forest) are the same as a cross-Forest scenario, so I&amp;#39;ve covered the cross-Forest scenario in these posts, and steps that are unnecessary for a cross-domain scenario can be omitted.&lt;/p&gt;&lt;p&gt;Our setup involves a resource Forest (domainA.local) and a user Forest (domainB.local). A &lt;a href="http://www.adopenstatic.com/resources/Kerberos.bin" title="Kerberos Cross Forest Packet Capture"&gt;network packet capture&lt;/a&gt; is included (it can be opened using &lt;a href="http://www.wireshark.org" title="Wireshark (formerly Ethereal)" target="_blank"&gt;Wireshark/Ethereal&lt;/a&gt;&amp;nbsp;- rename the extension back to .cap), and to help decipher the capture the machines involved are:&lt;/p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Machine&lt;/td&gt;&lt;td&gt;Domain&lt;/td&gt;&lt;td&gt;IP address&lt;/td&gt;&lt;td&gt;Role&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;svr03-r2-dc-1&lt;/td&gt;&lt;td&gt;DomainA&lt;/td&gt;&lt;td&gt;192.168.132.10&lt;/td&gt;&lt;td&gt;DC&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;svr03-r2-dc-2&lt;/td&gt;&lt;td&gt;DomainB&lt;/td&gt;&lt;td&gt;192.168.132.11&lt;/td&gt;&lt;td&gt;DC&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;svr03-r2-web-1&lt;/td&gt;&lt;td&gt;DomainA&lt;/td&gt;&lt;td&gt;192.168.132.12&lt;/td&gt;&lt;td&gt;Web Server&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cltxp-pro-1&lt;/td&gt;&lt;td&gt;DomainB&lt;/td&gt;&lt;td&gt;192.168.132.50&lt;/td&gt;&lt;td&gt;Client&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;In the scenario the client in DomainB.local&amp;nbsp;attempts to connect to svr03-r2-web-1 in DomainA.local. The sequence of packets are:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Client connects to web server and gets 401 (Packets 4 and 6)&lt;/li&gt;&lt;li&gt;Client connects to DC in local Domain asking to a ticket to http/svr03-r2-web-1.domainA.local (Packet 8)&lt;/li&gt;&lt;li&gt;The DC in DomainB.local provides a referral to DomainA.local (Packet 9)&lt;/li&gt;&lt;li&gt;The client connects to a DC in DomainA.local asking for a ticket (Packet 12)&lt;/li&gt;&lt;li&gt;The DC in DomainA.local provides a Kerberos ticket to the client (Packet 13)&lt;/li&gt;&lt;li&gt;The client again connects to the web server, presenting its Kerberos ticket (Packet 15)&lt;/li&gt;&lt;li&gt;The server responds with a 200 OK (Packet 21)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;img alt="IIS and Kerberos - cross Forest scenario network diagram" border="0" height="370" src="http://www.adopenstatic.com/images/resources/blog/Kerberos15.jpg" style="width:368px;height:370px;" title="IIS and Kerberos - cross Forest scenario network diagram" width="368" /&gt;&lt;/p&gt;&lt;p&gt;And the user successfully authenticates using Kerberos:&lt;/p&gt;&lt;p&gt;&lt;img alt="IIS and Kerberos - cross forest scenario" border="0" height="448" src="http://www.adopenstatic.com/images/resources/blog/Kerberos16.jpg" style="width:403px;height:448px;" title="IIS and Kerberos - cross forest scenario" width="403" /&gt;&lt;/p&gt;&lt;p&gt;Things to be aware of in this simple scenario:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Typically a client will be connecting using the FQDN (fully qualified domain name) of the web server. Since Kerberos is only attempted if the website is in Internet Explorer&amp;#39;s Intranet security zone, the website will need to be added to that security zone either using a GPO or manually&lt;/li&gt;&lt;li&gt;Clients must be able to contact domain controllers in the resource Forest in order to get appropriate Kerberos tickets. If there are some DCs in the resource domain that are unreachable (e.g. due to firewalls ec) then you need to ensure that clients in the user Forest only get referrals to reachable DCs&lt;/li&gt;&lt;li&gt;EDIT: Forest trusts can only be created when using a Windows 2003 functional level Forest. The Forest functional level can be raised using the Active Directory Domains and Trusts Admin MMC tool. Before you can raise the Forest functional level, you need to raise the Domain functional level of all Domains within the Forest to Windows Server 2003. If your Forest functional level is Windows 2000, only an external trust can be created, which does not permit Kerberos authentication.&lt;/li&gt;&lt;li&gt;EDIT: Only a one-way trust (the resource Forest trusts the User forest) is required for this scenario. In future scenarios (e.g. when we introduce delegation) a two-way trust will be required. However we can limit the access the Resource forest has to the User forest using Selective Authentication&lt;/li&gt;&lt;li&gt;EDIT: If you need guidance on creating&amp;nbsp;a Forest Trust, then Microsoft&amp;#39;s TechNet has a &lt;a href="http://technet2.microsoft.com/windowsserver/en/library/544d5801-205e-45b0-a1d7-cb9c39a7d7091033.mspx?mfr=true" title="Microsoft TechNet: creating Forest Trusts" target="_blank"&gt;good guide&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=17533" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="IIS" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/IIS/default.aspx" /><category term="Security" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/Security/default.aspx" /></entry><entry><title>SCVMM 2008 Beta 1 install fails at the WAIK prerequisite step</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/05/07/17502.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/05/07/17502.aspx</id><published>2008-05-08T10:50:00Z</published><updated>2008-05-08T10:50:00Z</updated><content type="html">&lt;p&gt;I was just trying to install SCVMM 2008 Beta 1 today. When installing the SCVMM 2008 Server, it failed installing the WAIK prerequisite asking me to instead install this manually.&lt;/p&gt;&lt;p&gt;Attempting to run the WAIK msi directly from the prerequisites folder (\prerequisites\WAIK\1033) failed asking me to &amp;quot;Insert the WAIK setup CD&amp;quot;. I think this problem might be caused because I&amp;#39;m install SCVMM 2008 from a DVD. I copied the files from that folder onto the hard disk of the machine, and then attempted to run the MSI again, and WAIK installed successfully.&lt;/p&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=17502" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="Virtualization" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/Virtualization/default.aspx" /></entry><entry><title>MVP Summit 2008</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/04/21/17422.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/04/21/17422.aspx</id><published>2008-04-22T04:20:00Z</published><updated>2008-04-22T04:20:00Z</updated><content type="html">&lt;p&gt;Last week I was in Seattle attending the Microsoft MVP Summit for 2008. Certainly this year&amp;#39;s summit was much better organised than some previous summits in terms of interaction with the IIS product group.&lt;/p&gt;&lt;p&gt;&lt;img alt="Welcome to MVPs" border="0" height="480" src="http://www.adopenstatic.com/images/resources/blog/MVPSummit2008-1.jpg" style="width:640px;height:480px;" title="Welcome to MVPs" width="640" /&gt;&lt;/p&gt;&lt;p&gt;Whilst we&amp;#39;ve seen a bunch of interesting stuff coming out from the product group over the past few months (&lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1621" title="iis.net: WebDav download" target="_blank"&gt;WebDAV&lt;/a&gt;, &lt;a href="http://blogs.iis.net/msdeploy/archive/2008/01/22/welcome-to-the-web-deployment-team-blog.aspx" title="IIS.net - MS Web Deployment Tool" target="_blank"&gt;MSDeploy&lt;/a&gt;, &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1664" title="IIS.net: Powershell Provider" target="_blank"&gt;Powershell Provider&lt;/a&gt;, &lt;a href="http://blogs.iis.net/vsood/archive/2008/03/15/bit-rate-throttling-is-now-released.aspx" title="Bitrate Thottling" target="_blank"&gt;Bitrate Throttling&lt;/a&gt;, &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1646" title="IIS.net - Admin Pack" target="_blank"&gt;Admin Pack&lt;/a&gt;&amp;nbsp;- including the Config Editor). However over the next few months expect to see a number of significant additional releases. Whilst I&amp;#39;m probably not at liberty to disclose what these are, think about the major market that IIS 7.0 has gone after (e.g. hosting with Apache) and some of the major features and modules that the competing platform has that IIS 7.0 doesn&amp;#39;t currently, and you&amp;#39;ll probably be pretty close to the mark in terms of upcoming features.&lt;/p&gt;&lt;p&gt;In addition to getting the inside scope from the product group, the MVP Summit also offers opportunities to talk and network with other MVPs, as well as an executive briefing. This year Ray Ozzie and Steve Ballmer came by to talk to us. Whilst I&amp;#39;ve had the opportunity to listen to many of Micosoft&amp;#39;s senior executives in other forums (Tech.Eds, Partner events etc), what is refreshing about the MVP Summit is that these executives will spend half an hour (or more) taking questions, without notice, from the floor. Whilst they are naturally guarded about the answers they can give (if press are present), we&amp;#39;re still above to canvas a range of topics. And more than once a product has changed somewhat due to the questions or feedback given during these sessions.&lt;/p&gt;&lt;p&gt;I, for one, am looking forward to the next MVP Summit in 2009 (assuming I&amp;#39;m reawarded of course!). As a small bonus, whilst browsing Barnes and Noble in downtown Seattle, I came across a most excellent book that everyone should have a copy of :-)&lt;/p&gt;&lt;p&gt;&lt;img alt="MVP Summit 2008" border="0" height="480" src="http://www.adopenstatic.com/images/resources/blog/MVPSummit2008-2.jpg" style="width:640px;height:480px;" title="MVP Summit 2008" width="640" /&gt;&lt;/p&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=17422" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="IIS" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/IIS/default.aspx" /></entry><entry><title>Potential Critical Security issue in Windows Server 2003/2008 - IIS may be a vector for compromise</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/04/17/17399.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/04/17/17399.aspx</id><published>2008-04-18T06:59:00Z</published><updated>2008-04-18T06:59:00Z</updated><content type="html">&lt;p&gt;As some of you may be aware, Cesar Cerrudo of Argeniss&amp;nbsp;presented a session at the just completed &lt;a href="http://conference.hitb.org/hitbsecconf2008dubai/" title="Hack in a Box 2008 conference" target="_blank"&gt;Hack in a Box&lt;/a&gt; conference where exploit code was demonstrated&amp;nbsp;that allows certain code running with restricted privileges (e.g. Network Service) to gain high privileges (e.g. LocalSystem). The exploit appears to rely on the fact that certain other processes running as network service have SeImpersonatePrivilege, and the malicious code can use this to gain additional privileges on the system.&lt;/p&gt;&lt;p&gt;Microsoft has &lt;a href="http://www.microsoft.com/technet/security/advisory/951306.mspx" title="Microsoft Security Advisory Bulletin" target="_blank"&gt;released an advisory&lt;/a&gt; on this potential vulnerability, and if you are running IIS 6 or IIS 7, you are urged to examine the potential implications and workarounds posted.&lt;/p&gt;&lt;p&gt;Edit: 19/04/2008 - the slides from Cesar&amp;#39;s presentation have been posted on the &lt;a href="http://www.argeniss.com/research/TokenKidnapping.pdf" title="Argeniss - Token Kidnapping" target="_blank"&gt;Argeniss website&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=17399" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="IIS" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/IIS/default.aspx" /></entry><entry><title>Converting from VMWare Server to Hyper-V RC0</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/03/23/16710.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/03/23/16710.aspx</id><published>2008-03-24T06:06:00Z</published><updated>2008-03-24T06:06:00Z</updated><content type="html">&lt;p style="font-family:verdana, geneva, arial;"&gt;This Easter weekend, having a bit of downtime, I decided to convert my virtual infrastructure at home from VMWare Server to Hyper-V. The major blocking issue was a lack of RAID controller drivers from 3Ware for their 9650SE-series cards, but thanks to &lt;a href="http://blog.justinho.com/2008/03/02/3Ware9650SEAndWindowsServer2008BootProblems.aspx" title="Justin Ho: 3Ware 9650SE RAID Controller and Windows Server 2008 x64" target="_blank"&gt;Justin Ho&lt;/a&gt; it seemed like I was good to go. The timely release of &lt;a href="http://support.microsoft.com/kb/949219" title="Hyper-V RC0 Download" target="_blank"&gt;Hyper-V RC0&lt;/a&gt; meant that I could use an updated version of Hyper-V, and also install my Windows Server 2008 machine using my local en-au settings rather than en-us.&lt;/p&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;The servers that I had running where:&lt;/p&gt;&lt;ul style="font-family:verdana, geneva, arial;"&gt;&lt;li&gt;Server1 - Windows Home Server&lt;/li&gt;&lt;li&gt;Server2 - Exchange 2007 (Windows Server 2003 x64)&lt;/li&gt;&lt;li&gt;Server3 - Operations Manager 2007 + WSUS (Windows Server 2003 x86)&lt;/li&gt;&lt;li&gt;Server4 - ISA Server 2006 (Windows Server 2003)&lt;/li&gt;&lt;li&gt;Server5 - Domain Controller 1 (Windows Server 2003)&lt;/li&gt;&lt;li&gt;Server6 - Domain Controller 2 (Windows Server 2003 x64)&lt;/li&gt;&lt;/ul&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;To speed up the conversion time, I removed DC2 from the domain (and recreated it as a brand new VM at the end of the process. It is now my first Windows Server 2008 DC). I also removed the Operations Manager 2007 machine (and recreated this on Windows Server 2008)&lt;/p&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;The steps I used to convert these VMs:&lt;/p&gt;&lt;ol style="font-family:verdana, geneva, arial;"&gt;&lt;li&gt;Made a backup of all&amp;nbsp;my virtual machines before&amp;nbsp;I started!&lt;/li&gt;&lt;li&gt;DCPromo DC2, and remove it from the domain&lt;/li&gt;&lt;li&gt;Uninstall Operations Manager clients from all managed servers, then remove Server3 from the domain&lt;/li&gt;&lt;li&gt;Uninstall the VMWare Tools from each remaining virtual machine&lt;/li&gt;&lt;li&gt;Shutdown all remaining machines and make a backup of the VMDK files (again)&lt;/li&gt;&lt;li&gt;Convert the VDMK files to VHD files. You can use System Center Virtual Machine Manager (SCVMM) to do this. Alternatively I used the free &lt;a href="http://vmtoolkit.com/files/folders/converters/entry8.aspx" title="VMDKtoVHD convertor tool from VMToolkit" target="_blank"&gt;VDMKtoVHD tool&lt;/a&gt; from &lt;a href="http://vmtoolkit.com" title="VMToolKit" target="_blank"&gt;VMToolKit&lt;/a&gt;. Note that if your VMDK files are pre-allocated fixed sized disks, they will become dynamically expanding VHD disks after the conversion (empty space isn&amp;#39;t converted)&lt;/li&gt;&lt;li&gt;Configure my 3Ware 9650SE&amp;nbsp;RAID controller BIOS per Justin Ho&amp;#39;s instructions (see earlier)&lt;/li&gt;&lt;li&gt;Format my arrays, and install a brand new copy of Windows Server 2008 x64&lt;/li&gt;&lt;li&gt;Install the Hyper-V RC0 update&lt;/li&gt;&lt;li&gt;Install the Hyper-V role, as well as desired features (Backup and PowerShell)&lt;/li&gt;&lt;li&gt;Create the necessary virtual networks in Hyper-V&lt;/li&gt;&lt;li&gt;Create new virtual machines using the newly converted VHD files and boot the machines&lt;/li&gt;&lt;/ol&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;Some issues that I discovered:&lt;/p&gt;&lt;ul style="font-family:verdana, geneva, arial;"&gt;&lt;li&gt;My VMWare machines were using SCSI disks connected to a SCSI controller. Unfortunately booting Hyper-V machines requires IDE disks at the moment. Since the IDE mass storage controller wasn&amp;rsquo;t set to start in my VMs, they Blue Screened with STOP 0x7B (Inaccessible_Boot_Device). I fixed this issue by inserting the OS setup CD and doing a repair on the OS.&lt;br /&gt;EDIT: Steen has a &lt;a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/03/23/16710.aspx#17546" title="Great Tip!"&gt;great tip below&lt;/a&gt; for how to get around this issue. It requires you to add a dummy IDE disk to your VMWare VM prior to do the conversion (to get the IDE mass storage controller into a started state)&lt;/li&gt;&lt;li&gt;There appears to be an issue with guest OSes talking to a virtualised ISA Server when all the machines are using the new VMBus NICs and the NICs are connected to a Private or Internal Hyper-V network (the issue doesn&amp;#39;t appear to manifest if the NICs are bridged to a physical NIC). Networking doesn&amp;#39;t work to well, and when running ISA&amp;#39;s monitoring tools, packets are missing. To fix this issue, I changed the NICs on my ISA Server that were connected to Private or Internal networks to using the Legacy (Intel 21140) NIC. Since ISA Server 2006 only runs on Windows Server x86, there are supplied Intel 21140 drivers on the Hyper-V Integration Services disc.&lt;/li&gt;&lt;/ul&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;So this was the picture beforehand:&lt;/p&gt;&lt;img alt="VMWare To Hyper-V (before)" border="0" height="463" src="http://www.adopenstatic.com/images/resources/blog/VMWareToHyperV1.jpg" style="width:640px;height:463px;" title="VMWare To Hyper-V (before)" width="640" /&gt; &lt;p style="font-family:verdana, geneva, arial;"&gt;and this is the picture aftewards:&lt;/p&gt;&lt;img alt="VMWare Server to Hyper-V (after)" border="0" height="436" src="http://www.adopenstatic.com/images/resources/blog/VMWareToHyperV2.jpg" style="width:640px;height:436px;" title="VMWare Server to Hyper-V (after)" width="640" /&gt; &lt;p style="font-family:verdana, geneva, arial;"&gt;Performance appears to be much snappier under Hyper-V compared to VMWare Server, especially with respect to Disk I/O. Additionally, I can now backup my virtual machines when running (well, I hope I can) using my &lt;a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/01/14/15443.aspx" title="Dell RD1000 Review"&gt;new RD1000 device&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=16710" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="Vista / Windows Server 2008" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/Vista+_2F00_+Windows+Server+2008/default.aspx" /><category term="Virtualization" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/Virtualization/default.aspx" /></entry><entry><title>Media bit rate throttling module released for IIS 7.0</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/03/14/16590.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/03/14/16590.aspx</id><published>2008-03-15T03:56:00Z</published><updated>2008-03-15T03:56:00Z</updated><content type="html">&lt;p&gt;Here&amp;#39;s a useful little module I didn&amp;#39;t know even existed, but it appears to have been added to the Microsoft download site in the past couple of days. It allows for bit rate throttling of common, supported, media files when served by IIS 7.0. IIS first sends the first twenty or so seconds of data at the fastest possible rate, and then streams the rest slowly.&lt;/p&gt;&lt;p&gt;Full information on configuring this module is available on the &lt;a href="http://learn.iis.net/page.aspx/148/bit-rate-throttling-configuration-walkthrough/" title="Configuring Bit Rate throttling for IIS 7.0" target="_blank"&gt;http://learn.iis.net/&lt;/a&gt; website. You can download the module from the Microsoft download site for &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=c6ad1417-36e6-4a0f-a5f6-d0cbf31c35fb&amp;amp;displaylang=en&amp;amp;tm" title="Download Bit Rate Throttling module for x86" target="_blank"&gt;x86&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=45&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=c6ad1417-36e6-4a0f-a5f6-d0cbf31c35fb&amp;amp;u=details.aspx%3ffamilyid%3d5182D5E1-E741-49BB-8A69-9F331812AE93%26displaylang%3den" title="Download: Bit Rate Throttling module for x64" target="_blank"&gt;x64&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=16590" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="IIS" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/IIS/default.aspx" /><category term="Vista / Windows Server 2008" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/Vista+_2F00_+Windows+Server+2008/default.aspx" /></entry><entry><title>WebDAV module released for IIS 7.0</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/03/12/16580.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/03/12/16580.aspx</id><published>2008-03-13T08:02:00Z</published><updated>2008-03-13T08:02:00Z</updated><content type="html">&lt;p&gt;Today Microsoft released to the Microsoft download site WebDAV modules for Windows Server 2008 / IIS 7.0 in both &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=036269fa-0040-4ccd-ad3d-78da1ee132fb&amp;amp;displaylang=en&amp;amp;tm" title="Download: IIS 7.0 WebDAV module (x86)" target="_blank"&gt;x86&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=13E97AAA-FB1B-4CF8-B95F-19AE02321385&amp;amp;displaylang=en" title="Download: WebDAV module for x64" target="_blank"&gt;x64&lt;/a&gt; versions. These&amp;nbsp;are&amp;nbsp;also available from the &lt;a href="http://www.iis.net/"&gt;www.iis.net&lt;/a&gt; website.&lt;/p&gt;&lt;p&gt;Robert McMurray has &lt;a href="http://learn.iis.net/page.aspx/350/installing-and-configuring-webdav-on-iis-70/" title="IIS.net: configuring WebDAV with IIS 7.0" target="_blank"&gt;written a page&lt;/a&gt; explaining how to configure the new WebDAV module.&lt;/p&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=16580" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="IIS" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/IIS/default.aspx" /><category term="Vista / Windows Server 2008" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/Vista+_2F00_+Windows+Server+2008/default.aspx" /></entry><entry><title>Professional IIS 7.0 released</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/03/06/16536.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/03/06/16536.aspx</id><published>2008-03-07T05:37:00Z</published><updated>2008-03-07T05:37:00Z</updated><content type="html">&lt;p&gt;Well, the book is finally a reality. I received my copies today - yay!&lt;/p&gt;&lt;p&gt;&lt;img alt="Professional IIS 7.0" border="0" height="480" src="http://www.adopenstatic.com/images/resources/blog/ProIIS7_1.jpg" style="width:640px;height:480px;" title="Professional IIS 7.0" width="640" /&gt;&lt;/p&gt;&lt;p&gt;You can buy a copy from &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FProfessional-IIS-7-Ken-Schaefer%2Fdp%2F0470097825%2F&amp;amp;tag=adopenstati0f-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Amazon.com&lt;/a&gt;&lt;img border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=adopenstati0f-20&amp;amp;l=ur2&amp;amp;o=1" style="margin:0px;border:medium none;" width="1" /&gt; or your favourite bookstore now.&lt;/p&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=16536" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="IIS" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/IIS/default.aspx" /><category term="Vista / Windows Server 2008" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/Vista+_2F00_+Windows+Server+2008/default.aspx" /></entry><entry><title>IIS and Kerberos Part 6 - New in IIS 7</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/02/20/16275.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/02/20/16275.aspx</id><published>2008-02-21T11:56:00Z</published><updated>2008-02-21T11:56:00Z</updated><content type="html">&lt;p&gt;Note: &lt;a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2007/07/19/8460.aspx" title="IIS and Kerberos - Parts 1 to 5"&gt;previous articles&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Windows Server 2008 and IIS 7.0 introduce some changes to the way that you need to implement Kerberos support. The three major changes that I&amp;#39;m aware of are:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Service Principal Names (SPNs) no longer need to be registered under the account that the web application pool is running under. Instead, in a default configuration you can run the web application pool under any account (custom user account, or LocalSystem, Local Service or Network Service) and register the SPN under the machine account in Active Directory. See &lt;a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/02/12/16189.aspx" title="New in IIS 7.0 - Kernel Mode Authentication"&gt;this post&lt;/a&gt; for more details.&lt;/li&gt;&lt;li&gt;Your web application pool does not need LocalSystem privileges to be able to perform &lt;a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2007/07/19/8460.aspx" title="IIS and Kerberos Part 5 - Procotol Transition, Constrained Delegation, S4U2S and S4U2P"&gt;protocol transition&lt;/a&gt;. You can do this using Network Service.&lt;/li&gt;&lt;li&gt;If you want to use&amp;nbsp;&amp;lt;identity impersonate=&amp;quot;true&amp;quot;&amp;nbsp;/&amp;gt; in web.config&amp;nbsp;for your ASP.NET pages, you need to disable validateIntegratedModeConfiguration if you are using the Integrated Mode Pipeline. Otherwise you&amp;#39;ll get a 500.24 error.&amp;nbsp;You can either set validateIntegratedModeConfiguration to False or you can run in Classic Mode Pipeline&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;If I find any more things, I&amp;#39;ll add them to the list.&lt;/p&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=16275" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="IIS" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/IIS/default.aspx" /></entry><entry><title>IIS - two security patches this month</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/02/12/16210.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/02/12/16210.aspx</id><published>2008-02-13T11:23:00Z</published><updated>2008-02-13T11:23:00Z</updated><content type="html">&lt;p&gt;Hi all,&lt;/p&gt;&lt;p&gt;There are two security patches out this month for IIS.&lt;/p&gt;&lt;p&gt;The first (&lt;a href="http://go.microsoft.com/fwlink/?LinkId=106361" title="Microsoft Security Bulletin MS08-005" target="_blank"&gt;MS08-005&lt;/a&gt;) affects Windows XP x86&amp;nbsp;(IIS 5.1), Windows XP x64 (IIS 6.0), Windows Server 2003 (IIS 6.0) and Vista RTM (IIS 7.0). Vista SP1 and Windows Server 2008 are not affected. This is a local escalation of privilege vulnerability, and requires that the attacker be able to access a server locally, or be able to somehow execute code locally (e.g. by placing a file that contains the necessary code on the server, and then have the server run that code from a remote location)&lt;/p&gt;&lt;p&gt;The second (&lt;a href="http://www.microsoft.com/technet/security/bulletin/ms08-006.mspx" title="MS08-006" target="_blank"&gt;MS08-006&lt;/a&gt;) affects Windows XP (x86/x64) and&amp;nbsp;Windows Server 2003, and is a remote code exploitation. It does require that the ASP web service extension be enabled on Windows Server 2003. &lt;/p&gt;&lt;p&gt;Whilst it&amp;#39;s always disappointing to see new bugs in IIS, I think the overall record of IIS 6.0 has been very good. Since it&amp;#39;s release in early 2003, we&amp;#39;ve seen only a handful of bugs that are directly IIS&amp;#39; fault (e.g. the previous &lt;a href="http://www.microsoft.com/technet/security/Bulletin/MS06-034.mspx" title="MS06-034 Security Bulletin" target="_blank"&gt;ASP issue&lt;/a&gt;), and handful of bugs that can be exploited via IIS (e.g. the previous &lt;a href="http://www.microsoft.com/technet/security/Bulletin/MS04-030.mspx" title="MS04-030 Security Bulletin" target="_blank"&gt;WebDAV&lt;/a&gt;&amp;nbsp;issue). Overall, there are less than 5 bugs exploitable via IIS 6.0&amp;nbsp;- which is&amp;nbsp;a great record especially when compared with IIS 5.0 and with its major competitors.&lt;/p&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=16210" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="IIS" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/IIS/default.aspx" /><category term="Security" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/Security/default.aspx" /></entry><entry><title>New in IIS 7 - Kernel Mode Authentication</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/02/12/16189.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/02/12/16189.aspx</id><published>2008-02-13T00:34:00Z</published><updated>2008-02-13T00:34:00Z</updated><content type="html">&lt;p style="font-family:verdana, geneva, arial;"&gt;Windows Server 2003 SP1 introduces kernel mode SSL. Windows Server 2008 takes this one step further and introduces kernel mode authentication. This can be utilised by IIS 7.0 applications to improve performance. It also has implications for Kerberos authentication and management of SPNs.&lt;/p&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;Consider the following scenario:&lt;/p&gt;&lt;p&gt;&lt;img alt="Kernel Mode Authentication 1" border="0" height="402" src="http://www.adopenstatic.com/images/resources/blog/kernelmodeauth1.jpg" style="width:640px;height:402px;" title="Kernel Mode Authentication 1" width="640" /&gt;&lt;/p&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;Ensuring Kerberos AuthN for App1 wouldn&amp;rsquo;t be possible in IIS 6/5 (earlier versions were pre-Windows 2000 so didn&amp;rsquo;t support Kerberos). This was because SPNs are based on a FQDN and the SPN for http/website1.domain.com could only be registered under a single account (and not under the two different accounts that App Pool 1 and App Pool 2 are using).&lt;/p&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;In Windows Server 2008 there is support for a new kernel mode authentication. I am supposing that this is implemented in ksecdd.sys, but it may be implemented elsewhere. When using kernel mode authentication, the service ticket is decrypted by the server (aka machine account), not by the user account that the web app pool is running under.&lt;/p&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;Because of this, it&amp;rsquo;s possible to:&lt;/p&gt;&lt;ul style="font-family:verdana, geneva, arial;"&gt;&lt;li&gt;Register every SPN for each application hosted webserver under the machine account in Active Directory, regardless of the identity of the web app pool that the application is being hosted in&lt;/li&gt;&lt;li&gt;Run multiple web applications hosted at the same FQDN under web app pools that are, in turn, running under multiple Windows identities.&lt;/li&gt;&lt;/ul&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;Edit: Anil from the IIS Product&amp;nbsp;Group pointed out an error in my advice below (it&amp;#39;s not necessary to actually disable Kernel Mode Authentication).&amp;nbsp;I have updated the section below:&amp;nbsp;&lt;/p&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;There is a caveat. This is because the service ticket decryption takes place using the server&amp;rsquo;s AD machine account. If you are using a web farm, then the KDC doesn&amp;rsquo;t know in advance which individual server will be servicing the request. In that case, it&amp;#39;s impossible to deterministically register the SPN under a single machine account. Instead, you will need to:&lt;/p&gt;&lt;ul style="font-family:verdana, geneva, arial;"&gt;&lt;li&gt;&lt;strike&gt;Disable kernel mode authentication&lt;/strike&gt; Configure IIS to use the web application pool&amp;#39;s identity for Kerberos service ticket decryption&lt;/li&gt;&lt;li&gt;Run the web app pool under a common domain user account&lt;/li&gt;&lt;li&gt;Be restricted to running all web application accessible at that FQDN under web app pools that are using the same domain user account above&lt;/li&gt;&lt;/ul&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;If you are in this situation, then you can &lt;strike&gt;disable kernel mode authentication&lt;/strike&gt; enable the use of the web app pool&amp;#39;s identity for Kerberos service ticket decryption by setting the property &lt;em&gt;useAppPoolCredentials&lt;/em&gt; to true for the web application or web site in question. An example would be:&lt;/p&gt;&lt;p style="font-family:courier;"&gt;&amp;lt;system.webServer&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;security&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;authentication&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;windowsAuthentication enabled=&amp;quot;true&amp;quot; useAppPoolCredentials=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/authentication&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/security&amp;gt;&lt;br /&gt;&amp;lt;/system.webServer&amp;gt;&lt;/p&gt;&lt;p style="font-family:verdana, geneva, arial;"&gt;If you&amp;#39;re not sure how SPNs and Keberos work, then check out the &lt;a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2007/07/19/8460.aspx" title="IIS and Kerberos"&gt;earlier posts&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=16189" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="IIS" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/IIS/default.aspx" /><category term="Vista / Windows Server 2008" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/Vista+_2F00_+Windows+Server+2008/default.aspx" /></entry><entry><title>New in IIS 7 - App Pool Isolation</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/01/29/15759.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/01/29/15759.aspx</id><published>2008-01-30T11:47:00Z</published><updated>2008-01-30T11:47:00Z</updated><content type="html">&lt;p style="font-face:Verdana, Geneva, Arial;"&gt;In previous versions of IIS, it has sometimes been difficult to isolate web application pools from each other. If multiple web application pools are configured to run as the same identity (e.g. Network Service) then code running inside one web application pool would be able to use File System objects to access configuration files, web pages and similar resources belonging to another web application pool. This was because it was impossible to allow one process running as Network Services access to a file, but prevent another process also running as Network Service access to the same file.&lt;/p&gt;&lt;p style="font-face:Verdana, Geneva, Arial;"&gt;In IIS 7.0 it is possible, with some work, to prevent this from occurring. As part of IIS 7.0 inbuilt functionality, each web application pool has an application pool configuration file generated on-the-fly when that application pool is started. These are stored, by default, in the %systemdrive%\inetpub\temp\appPools folder. Each web application pool has an additional SID (Security Identifier) generated for it, and this in injected into the relevant w3wp.exe process. The application pool&amp;#39;s configuration file is ACLed to allow only that SID access. Since each w3wp.exe process has it&amp;#39;s own SID, each application pool&amp;#39;s configuration file is ACLed to a different SID:&lt;/p&gt;&lt;p&gt;&lt;img alt="IIS Application Pool Isolation" border="0" height="306" src="http://www.adopenstatic.com/images/resources/blog/IISAppIsolation1.jpg" style="width:480px;height:306px;" title="IIS Application Pool Isolation" width="480" /&gt;&lt;/p&gt;Using the icacls.exe tool it is possible to determine the SID applied to any given application pool&amp;#39;s configuration file. This can be done by using the command: &lt;p style="font-face:Courier;"&gt;icacls.exe %systemdrive%\inetpub\temp\appPools\appPool.config /save output.txt&lt;/p&gt;&lt;p style="font-face:Courier;"&gt;The actual SID always starts with the well-known identity prefix: S-1-5-8-82&amp;nbsp;followed by a hash of the Application Pool&amp;#39;s name.&lt;/p&gt;&lt;p style="font-face:Verdana, Geneva, Arial;"&gt;The retrieved SID can now be used to secure web site content in the same way. To do this: &lt;br /&gt;Edit: Thomas Deml (from the IIS Product Group) has&amp;nbsp;shown me an easier way to perform Step 4 below&lt;/p&gt;&lt;ol style="font-face:Verdana, Geneva, Arial;"&gt;&lt;li&gt;Configure each website (or web application) to run in its own web application pool&lt;/li&gt;&lt;li&gt;Configure anonymous authentication to use the application pool identity rather than the IUSR account (this can be done by editing the Anonymous Authentication properties for the website in question)&lt;/li&gt;&lt;li&gt;Remove NTFS permissions for the IUSRS group and the IUSR account from the website&amp;#39;s files and folders.&lt;/li&gt;&lt;li&gt;Use the icacls.exe tool to permit the App Pool&amp;#39;s individual SID Read (and optionally Execute and Write) access to the web site&amp;#39;s files and folders. You don&amp;#39;t need to initially&amp;nbsp;retrieve the SID using iCacls. Instead simply use: IIS APPPOOL\ApplicationPoolName as the user to grant read permissions to (see screenshot below for an example for the Default App Pool)&lt;/li&gt;&lt;/ol&gt;&lt;p style="font-face:Verdana, Geneva, Arial;"&gt;After configuring these NTFS permissions, only the SID that has been injected into a particular w3wp.exe process will be able to read the contents of the website in question. All code running in other w3wp.exe processes, even though the process identity may also be Network Service, will be unable to read this particular website&amp;#39;s content. This technique may be most useful to web hosters or similar administrators, that need to accept content from various external or untrusted parties. &lt;/p&gt;&lt;p style="font-face:Verdana, Geneva, Arial;"&gt;Edit #2: Here&amp;#39;s a screenshot of the dynamic SID injection in action for the Default App Pool (using the excellent &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx" title="Microsoft TechNet: Process Explorer" target="_blank"&gt;Process Explorer&lt;/a&gt; tool). The username highlighted can be used with icacls.exe to ACL your web content.&lt;/p&gt;&lt;p style="font-face:Verdana, Geneva, Arial;"&gt;&lt;img alt="IIS 7 App Pool Isolation - Dynamic SID injection" border="0" height="508" src="http://www.adopenstatic.com/images/resources/blog/IISAppIsolation2.jpg" style="width:439px;height:508px;" title="IIS 7 App Pool Isolation - Dynamic SID injection" width="439" /&gt;&lt;/p&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=15759" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="IIS" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/IIS/default.aspx" /><category term="Vista / Windows Server 2008" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/Vista+_2F00_+Windows+Server+2008/default.aspx" /></entry><entry><title>OT: You can get certification for Home Server, Media Center and other sundry topics - awesome!</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/01/25/15658.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/01/25/15658.aspx</id><published>2008-01-26T05:34:00Z</published><updated>2008-01-26T05:34:00Z</updated><content type="html">Well, I&amp;#39;m writing a blog post on IIS application sandboxing, and this item crosses my inbox. It appears that all the time spent mucking about with &lt;a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2007/10/29/12915.aspx" title="Ken&amp;#39;s RTM Windows Home Server arrives"&gt;Windows Home Server&lt;/a&gt;, and &lt;a href="http://www.adopenstatic.com/cs/ControlPanel/Blogs/cs/blogs/ken/archive/2006/12/14/829.aspx" title="Windows Media Center on  Mac Mini"&gt;Windows Media Centre&lt;/a&gt; might now actually result in &lt;a href="http://www.microsoft.com/learning/exams/70-625.mspx" title="Microsoft Learning website" target="_blank"&gt;MCTS certification&lt;/a&gt;. So, I can justify the endless hours spent mucking with drivers and backups as a work-related endeavour! Yay&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=15658" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="Other Tech" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/Other+Tech/default.aspx" /><category term="Vista / Windows Server 2008" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/Vista+_2F00_+Windows+Server+2008/default.aspx" /></entry><entry><title>IIS syncronisation tool - tech preview released</title><link rel="alternate" type="text/html" href="http://www.adopenstatic.com/cs/blogs/ken/archive/2008/01/24/15638.aspx" /><id>http://www.adopenstatic.com/cs/blogs/ken/archive/2008/01/24/15638.aspx</id><published>2008-01-25T02:59:00Z</published><updated>2008-01-25T02:59:00Z</updated><content type="html">&lt;p&gt;Hi,&lt;/p&gt;&lt;p&gt;For all those wondering what options you have post-Application Center 2000 for synchronisation (let alone load balancing etc), the IIS Product Group has released a technical preview of a new tool: msdeploy.exe. This tool can sync or migrate:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;IIS 7.0 configuration settings&lt;/li&gt;&lt;li&gt;Web content&lt;/li&gt;&lt;li&gt;Registry keys and values&lt;/li&gt;&lt;li&gt;SSL certificates&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The product group is planning to have Powershell cmdlet support by the final release. Read more and download the bits from the &lt;a href="http://blogs.iis.net/msdeploy/archive/2008/01/22/welcome-to-the-web-deployment-team-blog.aspx" title="MS Deploy Blog" target="_blank"&gt;MSDeploy blog&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.adopenstatic.com/cs/aggbug.aspx?PostID=15638" width="1" height="1"&gt;</content><author><name>Ken</name><uri>http://www.adopenstatic.com/cs/members/Ken.aspx</uri></author><category term="IIS" scheme="http://www.adopenstatic.com/cs/blogs/ken/archive/tags/IIS/default.aspx" /></entry></feed>