|
|
-
Recently at Black Hat / DEFCON, a presentation was given which indicated that a couple of security researchers had found isolated ways around the Windows Vista stack of security features intended to protect against the buffer overflows and predictable memory address space attacks very common in the Windows XP days. This news, not surprisingly, was immediately seized upon by the uninformed technology media which soon started screaming that the sky was falling. This morning, a colleague of mine sent me an article at Ars Technica called "The Sky isn't Falling" that takes a deeper look at the vulnerabilities in question and offers a balanced approach to the issue. This issue of the news media sensationalizing vulnerabilities is a subject that I have touched on time and time and time again but seems to rear its ugly little head every month or so as some new researcher comes out with The Threat. Then a number of news services, including particularly Slashdot and CNet seize on the initial announcement from the researchers, before it has usually been validated by others, and proclaim to the world that [insert Microsoft platform here] has been [choose one: broken|compromised|DoS'd|DDoS'd|Owned|vulnerable], OMG, run for your lives off of your [Microsoft Platform here] installation. You get the point. One of the things that I love about this post, and the reason that I am blogging about what someone else has already covered pretty well, is that this is one of the first times that I have seen a technical media site publish the real world take on the latest "super-threat" that some researcher has presented. One entire section of the article is entitled "Chicken Little runs amok" and even goes on to state that, "Sensationalism Sells, and there's no news like bad news, but sometimes - particularly when covering security issues - it would be nice to see accuracy and level-headedness instead. Alarmism helps no one." And the "vulnerabilities" themselves? Traditionally, a vulnerability is something that people thing of as a bug or some mistake in the software. In this case, thats not what is happening here. A vulnerability is any feature, whether by design or unintentional, which poses a risk to the greater system. The vulnerabilities that are being published is simply a well consolidated statement of the limitations of Data Execution Protection in Windows Vista. Applications can opt out. And some do. So if you are using Firefox or IE7, Java, or flash, they may be opting out of Data Execution Protection (keeping memory from being arbitrarily executing by crashing the application that tries it) and Address Space Layout Randomization (windows vista's work to keep the application guessing where a system DLL is so that predictable memory space attacks are minimized). The truth is that the paper is correct. By exploiting the fact that these applications do not comply with the windows vista security measures, you can bypass the security measures on a Windows Vista system and it will be just as exploitable specifically on buffer overflow as a Windows XP system... as long as you are running in the context of one of these mostly web-related applications. These attacks do NOT circumvent the IE protected mode sandbox or UAC! One of the things I really like about the aforementioned article as well, is that this is one of the few discussions which actually goes into detail on just what can be immediately fixed: "Some of the specific features of the attacks can be resolved by Microsoft itself -- preventing IE plug-ins from opting out of the protection schemes... and by making Windows default to enabling all the protection schemes". At some point however, you have to wonder how much of this is really a vulnerability of Windows Vista? The protection schemes are there, if applications are making the informed decision to opt out (firefox and the JRE from sun, for example), isn't that really a vulnerability being introduced by the insecure choices of that application?
|
-
Some retail stores apparently either do not have a Chief Risk Officer or apparently pay them no heed at all. A while back I posted a security blog entry called A Year after TJX: Have we learned anything? According to the recent announcement from the department of Justice, the answer is an emphatic 'Not Hardly.' Lets look at some brief numbers. 11 people. 40 million credit card numbers. And the number I find most incredulous? This all happened over 5 years! The primary method of entry into these networks? In many of the cases, an unsecured wireless network that allowed free traffic between the wireless network segment and networks which handled sensitive PCI data. Think about how many wireless-based information compromises we have seen in just 2 years! Some of the more publicized compromises: | August 2006 | Dollar Tree | Total Compromises Unknown | | November 2006 | IRS | 2,359 | | January 2007 | TJ Maxx | 45,700,000 | I am interested to see what the total cost of these compromises at the affected retail firms comes out to be inclusive of lawsuit settlements, et al. My thinking is that there would be a very comprehensive business case possible for security professionals to work on locking down or completely re-deploying wireless segments. Particularly in locations which allow public traffic such as malls and public retail stores. In the case of the Dave and Busters compromises, the physical security of several computer-based register terminals was compromised in order to install sniffing software on the endpoint -- in at least 11 D&B locations. While the latter compromise is still onerous, I can at least understand the attack vector being an unrecognized vulnerability. Its something any security or risk officer should be aware of but at least there was a physical compromise component to the attack. Computer-based terminal endpoints acting as registers for the bar, token/credit purchasing stations, various areas of the restaurant, all make for endpoints to target. This vulnerability also holds true for many other retail locations. Think of any time that you have been in a retail store where one or more registers has been "open" and unlocked with no staff around for at least 15 feet in any direction. We have all been there and seen it. Lets hope that the retail industry does a better job of recognizing the potential for a repeat of the unattended-POS-terminal attack vector. Sadly, given the poor showing in this case, I am not as confident as I would have been before this announcement. Following TJX, the PCI standards tightened somewhat mandating protection against wireless connected network segments and ensuring that networks with payment information needed to be encrypted in transit. Apparently those mandates came none too soon. Although I have to question: How many legacy card reading devices are there still out there? My latest cab fare, for instance, used an older style reader that printed the card number, name, expiration date, etc as clear text. How can we be sure in this world of fully electronic payment?
|
-
As the industry settles into a market where virtualization has major offerings from Microsoft, VMWare, and the Open Source communities, administrators and security engineers are beginning to grapple with the implications of virtualization on infrastructure security. Fortunately, virtualization is really nothing new. While the utility (and cost savings!) of infrastructure consolidation are being increasingly recognized every day, infrastructures constructed on virtualization and virtual partitioning platforms extend back into the days of mainframe, as well as adoption of hypervisor-based platforms throughout the late 90s and this decade. Security professionals are not without lessons learned to apply in building the next generation of Hyper-V driven infrastructures; the start of securing your enterprise is merely a trick of recognizing how to modify them for today's intensive needs. In order to understand the security model in a Hyper-V virtualized environment, the administrator or security professional needs to examine the most basic mechanics of virtualization and the relationship that the Guest Virtual Machines (VMs, also called Hosted Instances or Logical Partitions -- LPARs -- in some environments), the Host operating system, and the hypervisor kernel share in Microsoft's Hyper-V architecture. In Windows Server 2008, the Hyper-V virtualization layer is actually running "below" the level of the Host Operating System and directly handles the low level functions which make a computer operate -- as well as mediating the access requests between the host operating system components and the Guest VMs. Those working with Virtual Server 2005 will recall that this is a major reconstruction of the operation of the virtualization layer. In Virtual Server 2005, the virtualization layer was running "on top" of the operating system, as a series of windows system services. In Windows Server 2005, this resulted in sometimes harsh performance losses because any input or output request from a guest VM was made from the application on the guest needing the access, had to complete the operating system "stack" on the guest and then was relayed by the VM to the Virtual Server software service(s) through the appropriate emulated hardware. The virtual service in question would then make the necessary requests of the underlying host operating system. The host operating system running Virtual Server would then need to complete its entire stack of software functions to actually make the necessary request of the hardware the server was running on, before passing the resultant data all the way back up through all of these layers. In Hyper-V the virtualized guest's resource request never has to go through the Host operating system! This is a very important point in Hyper-V which not only results in vastly improved efficiency rates for I/O intensive operations on guest VMs but also is critical to understand in the protection of the consolidated environment. The Hypervisor microkernel, not the Host Operating System, is the only component between the guest VMs and the hardware. Along with this efficiency gain (and its attendant increase in the attractiveness of Hyper-V for enterprise consolidation implementations, is the considerations that a security engineer or network administrator needs to be conscious of all four components: the hardware, hypervisor, host VM, and guest VMs. When a security engineer examines a Hyper-V virtualized environment, there spring to mind two primary divisions of strategy that apply to your consolidated infrastructure: The first, is that the same security principles that apply anywhere else in your environment need to apply to both host and guests in Hyper-V hosting. The second, is that virtualization has special strategy demands which require closer attention to detail in some areas in order to consider the effect that a unified server has on multiple potential services run in independent VMs on the same underlying hardware. The Basics Still Apply Maintain Physical Security As with any information technology infrastructure, once an attacker has physical access to the hardware that a server is running on, the attacker can easily compromise nearly any level of the operating capacities of the machine through the use of offline threats. Key loggers, local networking monitors, forensic analysis of the hard drives, booting into a "Live CD" with a built-for-the-purpose set of tools. In consolidated environments, it is true that much of the time the data of the guests is not directly stored on Direct Attached Storage, however keep in mind that if use of offline tools by an attacker allows them to obtain administrative credentials on the host and then return the server to service, they can use the host level access to enable further attacks on the guest, including making shadow copies of the storage for the guest VMs which can themselves be subjected to further offline attacks. To protect physical security of the server, in an enterprise environment, consider investing in remote management hardware such as physical remote management cards which allow server-level access to KVM and drive functions, a consolidated KVM-over-IP solution, and implementing separation of duties. These days, remote management tools are sophisticated enough to ensure that a remote administrator can start a session with a remote management unit and have comparable access to the base keyboard, mouse, and console display (and sometimes even the CD/DVD drive) that the administrator would have accessing the box in person. Note the word 'and' in 'and implementing separation of duties'. Giving your administrators the ability to remotely administer the box is effective only if you also remove their physical access to the data center. In the enterprise, data centers often have specifically employed individuals who can address the operational needs of cabling, racking hardware, installing new hardware, and possibly hitting the power button for a power cycle in the case of some catastrophic failure. Separating the duties of those with logical access to the server (and administrative ownership over the function of the operating system and applications running on the server) from those with physical access to the server for operational requests allows you to reduce risk of physical access-based attacks through minimizing the number of people with that access. The data center administrators have physical access to the server, but not the authorization information to change the operating system, and the network administrator or engineer has necessary authorization to operate the software running on the server without enabling another entire class of users to have direct access to the data center. Less Software Means Less Attack Surface Given that the host operating system in a Hyper-V server acts as little more than a platform for administration tools, the administrator has a new ability to trim down the software packages that run on the server itself. Each installed role or package which is surplus to the Hyper-V server provides another set of code which could either potentially be used directly by an attacker against the host itself (particularly in the case of superfluous pre-staged administration tools), or could contain vulnerabilities which, in the case of running services, could allow an attack vector in the first place. An administrator which needs to perform changes on the Hyper-V server has access to the server remotely through the Server Manager for the most common administration tasks. For those of less commonality, once an administrator logs into the server, he or she could then map a drive to a shared folder of utilities or could have an installer or zip file which can be copied over from a share, used during the course of the task at hand, and then removed. In an enterprise environment where the Hyper-V server is expected to host instances of production services, the host Windows Server 2008 installation should be made with Server Core! Server Core provides a somewhat hardened environment for the virtualization services at the expense of removing many of the most common administration tools. Guides are available across the web, including my own, on how to install Hyper-V on a Windows Server 2008 Server Core machine. Additionally, Microsoft has made ample documentation available on how to use the command line and PowerShell to provide advanced from-the-console administrative actions. Updating the System is Key Implementing an aggressive firewall on the server and restricting direct access to the machine will be of little avail if the firewall code, or any of the services which are exposed (such as the terminal services instance in most installations), is found to have a vulnerability in the software which remains unpatched on your server. Updating your software on the host as well as each of the guests should be part of the planned architecture of the environment. In some cases, this has policy implications as well. How will your change management work to allow you to reboot the host after applying updates, which also takes down the guest instances? Do you have a universally applicable change window? Do you need to plan a change ticket? Virtualization does not affect the tenet that your software should be updated! Virtualization simply complicates the planning for host downtime but the update process must still be considered and planned for. Use Domain Based Credentials to Minimize Threat from Turnover Managing access to the environment requires attention to your authorization and identity strategy. Credentials which are based on the standalone server provide an opportunity for mistakes in de-provisioning, creating a series of active accounts with privileges possibly as high as local administrator on your host Hyper-V servers and your guest VMs. Just as in any other information technology environment, the virtualized server environment can be easily compromised by these obsolete user accounts. Engineers should minimize the number of standalone credentials created on the server itself which provide the potential for running into problems. Reduce host services which require custom local accounts to be established. Create a strong password for the local administrator account. If your local environment uses a common password across the environment for administrative access, change the password periodically. Minimize the number of local accounts being created, rather join the server to the domain early in the setup process and add a domain based group or account to the necessary permissions. Apply the Concept of Least Privilege Accounts which are granted privilege to the environment, regardless of the origin of the account (local or domain-based), should only have the privileges on the local system which are required for their needs. During installation, the account which will enable the Hyper-V role needs to have administrator privileges, either based on the local administrator account, or a domain administrator. Once the actual installation is done, and sub-administrators and end-users are working with the guest VMs, administrator privileges are no longer required for most operations IF you have invested the time to setup the local permissions. There is a great blog post specifically on the subject on how to delegate permissions to work with VMs without host privileges, by Lukas Beeler: http://projectdream.org/wordpress/2008/07/03/delegating-hyper-v-virtual-machines/ Some basic tenants apply. Do not grant permissions on the host data storage to the extent possible except to the directories where the individual is supposed to be able to save ISOs and other files. Use a file share if possible to grant access to the storage location for ISOs and other locally hosted materials that the VM should have direct access to. Avoid giving any users the ability to directly log on to the host via RDP if they do not absolutely need that ability (and force users to justify that request by providing the exact delta of what they need to do over and above what is provided by a file share and use of server manager). Using the above blog, grant end-users permissions only to the VMs to which they should have rights and control. Virtualization has Special Strategy Demands Documentation of your Environment is Critical to Success In a virtualized environment, the relationship of logical servers to physical hardware is no longer 1:1. Many systems documentation systems expect each server to be associated with a physical hardware platform and hence do not make the provision for a logical server to be associated to a host server. In order to properly maintain your environment, virtual servers need to have documentation readily available on what guest VMs are hosted on which physical machines, as well as (critically!) the person or contact for the "owner" of the guest VM! In my experience with virtualized environments, a number of different businesses or administrators will "own" individual virtual machines hosted on the server. In order to prepare for downtime on a given host, it is necessary that the organization be able to properly notify affected teams of needed downtime or changes to the underlying virtual host. If the organization does not maintain an enterprise-level documentation system for the infrastructure environment, individual administrators can counter this vulnerability by using locally hosted documentation. Create a directory on the server called "Documentation" in a standardized location and use locally hosted text files to store information about the individual VM names, basic configuration information, and the contact information of the owning administrator or business unit. Planning for Downtime affects More than the Host The relationship of the host to its guest VMs means at its base that as goes the host, so go the guests. This means downtime has direct effects. The change management, business continuity, and disaster recovery strategies of the organization may need to be modified to take into account the cascading effect that downtime on the Hyper-V host implies. As noted previously, the documentation that your organization maintains should provide the basis for a procedure of approvals or notifications when a host should be taken down or is experiencing a downtime event. Each of the guest VM owners needs to be involved in the downtime discussions as well as the necessary groups which administer the service of the Hyper-V host itself. In many enterprise environments, this means ensuring that there is some kind of tagging applicable to the Hyper-V hosts themselves to indicate additional teams that are involved in change requests as well as operational functions related to downtime itself. Formalizing this approach in a policy could mean that in the case of an unexpected downtime event, a representative from each operational group affected by the host downtime would be present on a call or system to test and validate the application's return to service as well as to represent the importance of the downtime itself and the criticality of resolving that component in a case where more extended prioritization is required. In smaller environments, this could take the form of simply expanding the existing process to include additional business owners. Adding a rep from each "owning" team to an email thread and asking for a one-line approval statement from each could be one of the simplest ways to implement the same form of interaction The Hypervisor has Access to Near Everything The micro-kernel which provides the hypervisor services between the host and guests and the underlying hardware performs the function of interpreting all of the resource requests for the system. As a result, this system is the linchpin which has direct, low-level access, to every bit and byte of data that will be returned to either the host operating system or the guest VMs. Once an organization introduces Hyper-V into the software stack in your environment, from that point forward, the primary administrators or architects in the environment need to be regularly updating themselves on the status of updates to the Hyper-V platform and understanding how attendant vulnerabilities work. Once a vulnerability is released that has the capacity to target the Hypervisor, the internal administrator will want to be able to escalate any attendant repair following patch release to ensure that the patch can be applied to the environment as soon as possible. The administrator also needs to be in a position to protect the hypervisor to the extent possible. Workarounds should be immediately implemented in an environment if a high-severity issue is discovered in the industry that may affect the hypervisor layer so it is necessary to examine a mitigation approach based on operational awareness rather than with any immediate proactive protective action. Establish a process whereby one or more engineers are responsible for staying absolutely up to date on the security of the Hyper-V platform, patches, as well as security discussions in major communities. Ensure that there is a defined and documented process that the selected engineer(s) or administrator(s) can use to immediately raise the visibility of the issue to the appropriate project, management, or change teams that can authorize necessary fixes or being a "fast-tracked" engineering process to determine an acceptable workaround in the environment that takes into account the risk of the potential threat. Data Classification Assigned to the Hypervisor/Host Should be No Less than the Most Sensitive Guest Given that the hypervisor micro-kernel has access to all data passing back and forth in streams from the host OS and guest VMs to the underlying hardware platforms, an implied corollary would then dictate that the data classification which is applied to the Hypervisor and Host OS should be no less sensitive in classification than that of the guest VM storing or using the most sensitive data. If your hypervisor is compromised, even though the data being stored in storage partitions of the host OS may be seemingly trivial, it is critical to realize that the host OS has access to everything! Not just its own loaded utilities and tools! In cases of VMs which are using iSCSI LUNs for storage, you also have the consideration that the LUN itself is directly loaded on the host OS as a drive in order to make it available as a passed-through drive to the guest VM. This approach to using iSCSI LUNs means that the host OS and the hypervisor have the ability to obtain direct and complete access to all of the data stored on that LUN. In enterprise environments subject to regulatory requirements, your system of documentation should indicate the sensitivity of the host OS for your Hyper-V server at the heightened state of sensitivity in order for your organization to respond appropriately in the case of a compromise. Further, for security settings auditing purposes and ensuring that policy or application requirements for high sensitivity infrastructure is properly applied to your Hyper-V host machines. Virtualization Enables More than Consolidation Savings! Implementing Hyper-V to initially consolidate your environment drives a savings in the enterprise that goes beyond reducing the server count in the environment. A security engineer examining the virtualization environment to be implemented in the environment needs to be aware of the available disaster recovery and business continuity benefits available in Hyper-V. Designing the infrastructure to take advantage of System Center Virtual Machine Management 2008 as well as the backup possibilities available in the virtualized environment is best done during the initial design rather than attempting to return and retrofit these technology approaches into the environment, which was already established. Hyper-V installations accompanied by System Center Virtual Machine Manager 2008 bring to the table the ability to apply high availability to the environment including virtualized clustering, V2V migration, as well as a suite of features to monitor performance and localized resource use. There are several key applications for VMM in the environment, the first and most basic is using the performance monitoring capabilities to determine a baseline of the expectable range of resource use in the environment should be. By establishing this baseline and then configuring alerts based on significant performance deviations, the administrator or engineer could detect when a Denial of Service, either purposeful or incidental to expected traffic, is in place that is preventing the function of one or more guest VMs in the environment. The SCVMM product provides more than simply the ability to monitor performance and utilization in the environment, Virtual Machine Manager also provides the security administrator the ability to cluster virtual hosts so that in the case of a downtime event, virtual machines can be manually failed over to be brought up on another similarly configured host. This approach provides something of a warm standby at all times in environments where there is a unified storage model such as that provided by a shared SAN. Combining the ability of VMM to provide V2V and P2V migration in the current generation SCVMM product as well as the stated intention for the next version of SCVMM to provide live migration capability to the environment, provides a strong roadmap for security professionals and architects to build a consolidation environment that provides a roadmap for immediate and future improvements in reliability. Snapshot as Practical Storage Considerations Allow Hyper-V introduces the capability to take live snapshots of the state of the virtual machine at a point in time. Similar to the mechanics of the snapshot process for a NetApp filer in a storage environment, the snapshot concept in Hyper-V extends the undo disks of Virtual PC and Virtual Server 2005 to provide the ability to capture multiple states and return to any of them according to the needs of the owning organization. The engineer or architect for the consolidation environment should plan on the ability to host snapshots at least to be able to return to the state of the guest VM at the time of initial complete application configuration. In development environments, snapshots provide the ability to return to a pre-change state relatively quickly when a developer is applying an unverified hotfix or software patch to the applications hosted on the guest VM. When you start taking these kinds of snapshots, however, it is important to recognize that the storage the snapshot takes up is a consideration for which space must be allocated to utilize the snapshot capability. The reliance on differencing between the virtual hard disk and the snapshot allows the snapshot to be significantly smaller than the size of the underlying VHD. The drawback here is that differencing indicates that snapshot growth is based on the amount of change between snapshots and the underlying disk VHD which makes the exact amount of space to set aside difficult to estimate a baseline to plan for. Applying SOA with Distributed Guests Can Provides More Security in a Virtual Environment In Service Oriented Architecture, the components of the overall solution being developed can, and often do, exist on independent physical servers. When consolidating the data center using a virtualization platform, these sometimes not-fully-utilized server instances are often an excellent target for virtualization. Larger environments that involve a number of hosts provide the theoretical capacity to design additional security into the environment by partitioning the physical layer on which each layer of the service oriented architecture would be hosted. In theory, if a single host were to host 3 tiers of a multi-tiered service-based application, if the underlying physical server were to be compromised (or the hypervisor residing thereon), all three guests are highly open to compromise and essentially would be assumed to potentially be compromised in short order. In a larger Hyper-V based architecture, the engineer or architect can plan to distribute the tiers that comprise the entire application across multiple independent servers allows the architect to extend the modular approach to protect against the simultaneous compromise by, at minimum, partitioning the individual tiers onto different host platforms. While the organization needs to be careful not to fall back into the anti-practice of attempting to establish security by obscurity, there is the potential for very real value from the segregation in this solution. If one host, for example, could not apply a critical patch for some reason, and is subsequently compromised, the separated platform would mean that in our 3-tier example above, theoretically the other two tiers may not be compromised based on the design and architecture of the application being hosted. This separation offers the potential ability to extend the overall security of the architecture slightly simply by being careful not to group all instances of application services in the physical space to be compromised.
|
-
Today's data center environments are increasingly a mixed installation base as cost savings and product installations dictate information technology teams to accept various operating systems into many hosting situations. At the same time, many of these same enterprise organizations are looking to enterprise virtualization efforts to make organizational hosting more efficient and obtain the power savings, fault tolerance, and disaster recovery benefits which a fully integrated and monitored virtualization environment can bring to the table. Microsoft's official stance on supported operating systems is fairly straightforward: http://support.microsoft.com/kb/954958/en-us Modern Windows? Yup. Linux? Only if you are running SuSE Enterprise 10 SP1 or later! BSD/UNIX? Nope. Unfortunately, that leaves integrators and IT shops in the unenviable position of potentially working Hyper-V into an environment where there are compatibility concerns because of Hyper-V's integration with the windows server stack and its relatively low cost. Hyper-V's combination of an affordable price point combined with its status as a fully supported server product from Microsoft mean that some organizations may choose Hyper-V despite the presence of other non-Microsoft platforms in the IT shop. In order to plan for a successful deployment, there are some key issues that should be examined before moving forward with the Hyper-V deployment. What Operating Systems are being Virtualized? Certainly the most important issue in considering Hyper-V for the computing environment is assessing which operating systems in the environment will need to be supported as a guest. Build a list of which operating systems and builds are in the environment. Ideally this should already be available in some form based on existing inventory, server lists, build lists, etc. Having searched the net, I was not able to find a good compatibility list for Hyper-V so I have spent the last few days building an abbreviated one myself with everything that I have access to right now. I have included it below. I do not have AIX or similar paid versions of UNIX to test with so those operating systems were omitted. Falconic Note: All of these listings assume no integration services are used (except where otherwise noted) and that the network adapter is replaced with the legacy network adapter and a static MAC address is assigned. No warranty that any of these results will be achieved on your hardware, situation, etc. This is based on testing on Windows Server 2008 RTM fully patched as of 7.14.2008, running Hyper-V RTM with latest Linux integration components (RC2) from Microsoft Connect. All testing conducted between 7.11.08 and 7.14.08. | CentOS | 5.1 | Yes, Mod | Unsupported. Requires Xen + Integration Components | | Fedora | 8 | Yes | Unsupported. | | Fedora | 9 | Yes | Unsupported. | | FreeBSD | 7 | Yes, Mod | Unsupported. Requires manual configuration of the network adapter. | | Gentoo | 2008.0 | Yes, Text | Unsupported. Running in Xwindows produced video corruption. May need to add tulip module if it does not detect the legacy network adapter. | | NetBSD | | Yes, Mod Text | Unsupported. Disable ACPI, has some Xwindows display issues. May need to add tulip module if it does not detect the legacy network adapter. | | OpenSolaris | 2008.05 | Yes, Mod | Unsupported. Must use the x86 32-bit kernel. Network adapter non-functional at time of testing. Searching for resolution turned up that it may be related to bug 6695174. | | OpenSuSE | 10.3 | No | Incompatible installer | | OpenSuSE | 11 | No | | | OS/2 | | No | | | QNX | 4 | No | | | RedHat Enterprise | 4 | No | | | RedHat Enterprise | 5 | Yes | | | Solaris | 10 | No | Unsupported. Hangs on grub. When booted directly, does not recognize network adapter. | | SuSE Enterprise | 10 SP1 | Yes, Mod | Supported. Requires Xen + Integration Components | | SuSE Enterprise | 10 SP2 | Yes, Mod | Supported. Requires Xen + Integration Components | | Ubuntu | 7.1 | Yes, Mod | Unsupported. Incompatible installer by default. Requires patch from forums.xensource.com/thread.jspa?threadID=2438 | | Ubuntu | 8.4 | Yes | Unsupported. May require loading the tulip module into the kernel 'modprobe -v tulip' if the network adapter is not detected. | | Ubuntu | 6.06.2 | Yes, Text | Unsupported. Must use text mode. There are some issues under Xwindows. May be solvable by modding xorg.conf. Did not attempt. | | Windows NT | 4 | Yes | Unsupported but can be forced to work. | | Windows Server | 2000 | Yes | Supported with SP4 or later. | | Windows Server | 2003 | Yes | Supported with SP2 or later. | | Windows Server | 2008 | Yes | Supported, including HPC Server 2008 and up to 4 virtual processors. | | Windows Vista | | Yes | Business and Enterprise Supported with SP1 or later. | | Windows XP | | Yes | Professional Supported with SP2 or later. | Note which operating systems the environment has which are not supported and/or will not work in the environment. How many of each type of operating system are there? What systems are they a part of? Is this a system which could be migrated onto a constructed guest VM which uses either a distribution of that platform which will work or is supported? In an ideal world, any solution being implemented would use only supported software configurations however whether or not this approach is enforced really depends on the risk tolerance of the environment. If, for example, the organization's support staff are likely to rely on Microsoft support incidents during a downtime event or are not likely to have the skills to return the guest OS to service without external assistance, it would be STRONGLY preferable to remain with a purely supported configuration. In situations where some servers are not going to be compatible with Hyper-V, there may still be value in a hybrid approach. There are two primary approaches that you can look at in this scenario: principal virtualization with some standalone, or virtualization with multiple products. One of the primary reasons the organization is going with Hyper-V, assumably, is the value that it provides relative to VMWare in terms of the cost/feature ratio. You can still take advantage of Hyper-V, virtualizing compatible instances, and then using another virtualization product to support the instances which cannot run on Hyper-V. This makes sense if the other servers to be hosted are relatively low traffic, you may already have a competing product in the environment now, and/or the customer would still like to take advantage of V2V and virtual clustering features on the servers which are not compatible with Hyper-V. The other option there, of course is to simply do selective virtualization and leave the non-compatible servers as a consolidated set of standalone servers. Depending on the number of incompatible servers, you may reach a point with this approach where you are diluting the effect of the virtualization project in the first place. What Applications are being virtualized? In most environments, there are going to be at least a few server instances that for some reason or other cannot be virtualized. They may be incompatible with Hyper-V, they may have precise timing needs, they run under high load and hence require dedicated hardware, etc. If the sole reason that the server cannot be virtualized is an incompatibility with Hyper-V, you may be able to examine ways to move the application to a supported operating system. There are two primary approaches for this for a UNIX/LINUX server: either move the application to a similar *nix distribution which is supported (or at least is known to run reliably) on Hyper-V or move/replace the application to a windows VM. Porting an application to a windows VM really depends on the services being provided by the application. If it is a native console application, for example, this is much more difficult to do as there often are dependencies on the underlying operating system. Common services like file sharing, LDAP, Mysql, Bind DNS, can all be replaced rather than ported with some export of configurations which you can then import on the replacement VM. In the case of a web application, the compatibility with windows depends mostly on the language that the application is written in. You can always move over a LAMP stack application to either apache running on windows or to IIS however any file or system calls will be at moderate to high risk of needing to be updated and you may also need to update the local installation of the PHP or PERL language to ensure that the necessary extensions present on the old server are available on the new server. Note that applications which make use of passing commands to the shell for execution and return (use of grep, awk, etc) will not be compatible with running on windows. The other option there is to migrate the application to a similar distribution of Linux. The ideal in any given situation is that the end-state provided in the environment should be "supported" by Microsoft but for technical reasons, there are some differences in the SuSE Linux distribution as opposed to a distribution like Red Hat. Being able to make use of the integration components and hence implement the synthetic disk and network drivers will yield significant boosts in the network and disk I/O performance of your VM. On the other hand, your environment needs to be supported, at the very least, by the skills the technical staff have to apply to the end-state environment. Making the determination of the correct path to make the migration should be part of a larger discussion with the environments's management. Where are the skills in this environment? Does the organization have a preference for specific distributions of *NIX which will run on Hyper-V? Are development and engineering hours available for the migration? In any situation where you are considering migrating the application, ensure you also consider the cost versus rewards. If you will need to invest a significant number of hours per-VM in making the given migration to another distribution of Linux or in migrating to windows, at a certain point, those costs are going to outweigh the benefit of that particular instance being virtualized. Some servers simply should not be virtualized. Migrating the environment, there will be some instances which should not be virtualized, regardless of the originating operating system or platform that the server is running on. Particular production applications which should not be virtualized include: - Moderate to High load Database Servers
Database servers under these kinds of loads do not virtualize well as they are always in the process of requesting resources. The database instance should have dedicated hardware and media access in order to continue to perform at acceptable levels. - NTP Time Sources
NTP time sources should have dedicated time to the underlying CPU in order to maintain a highly accurate local time between upstream synchronization. - Domain Controllers (without end-state aggressive time synchronization)
Any time issues could result in nasty kerberos ticket validation issues if the time drift on either the end VM or the DC is too far ahead or behind of the other. - Any server requiring use of USB hardware
Access to USB hardware is unsupported on Hyper-V. IF the USB hardware is a hard drive, you can connect it to the host machine and then provide it to the VM as a drive pass-through rather than a USB device. - Any application configuration with inordinately high HA requirements
In any given environment, when you virtualize the servers, you are placing your eggs in one basket. If the host goes down, many of the VMs will be offline or in a state of transition until your VirtualCenter or SCVMM 2008 instance performs a V2V transition or fails over to another host in the virtual cluster. As of this writing, Live V2V is NOT supported in SCVMM 2008 beta so high availability is still best achieved on dedicated hardware with multiple NICs and HBAs, with multiple switches and paths to the SAN and external networks.
|
-
Recently, I have seen a number of posts in various places around the 'net and it is clear that many folks (even those posting about these programs) do not really understand the difference between the Microsoft Certified Master, Microsoft Certified Architect and other programs, their offerings, process and cost.
I'll try to break it down for you:
Microsoft Certified Technology Specialist (MCTS)
A technical credential earned with a single product focused exam. Cost of $125. Many specialties available. Examples include the MCTS: Windows Vista, Configuring and MCTS: Microsoft Exchange Server 2007, Configuring. The exam can be taken through Prometric.
Microsoft Certified Information Technology Specialist (MCITP)
A technical credential focused on role-based competencies that include technical knowledge as well as the ability to apply that knowledge in the given role. The MCITP usually requires at least 2 additional specific MCTS credentials to form the technical basis of the credential. In addition there is one or more professional-level exams which focus on the application of the technical knowledge in the specified role. One or more role-focused exams. Cost between $125 for single pro exam tracks to $250 for multi-exam professional tracks. Examples of this credential include the MCITP: Enterprise Administrator and MCITP: Enterprise Messaging Administrator. The exam can be taken through Prometric.
Microsoft Certified Professional Developer (MCPD)
What the MCITP is for engineers, the MCPD is for developers. The MCPD tracks credential a candidate's experience in a professional development role applying a range of specific development platforms. Each MCPD track requires multiple additional MCTS exams as a pre-requisite to the single pro level exam to earn one of the three MCPD credentials. MCPD level credentials are available for Web Developer, Windows Developer, and Enterprise Application Developer specializations. Cost $125 for single pro level exam. The exam can be taken through Prometric.
Microsoft Certified Master (MCM)
A technical credential which indicates a deep specialization in a specific product area with Microsoft technology. MCM certified candidates have communications channels to the product group, have completed rigorous training with Microsoft, and have a documented history of delivery experience with the product as well as knowledge-based and experience-based exam passes. The MCM programs are 3 weeks in duration and a candidate must attend the full session to complete the MCM program.
There are currently available only two programs in Exchange Server (Exchange) and SQL Server (Database). About to release later this year will be Active Directory (Directory or Windows Server 2008). Also announced for development and release are tracks specializing in Office Communications Server and Office SharePoint Server.
The MCM program requires Microsoft's approval to attend as well as specific technical certification pre-requisites the candidate must have completed. During the course, there are multiple written assessments as well as a lab-based exam at the conclusion of the course. The candidate must pass all assessments to earn the MCM title.
The MCM program costs $18,500 for each program.
Microsoft Certified Architect (MCA)
The Microsoft Certified Architect is intended to certify individuals who have reached a stage of competency with both technology and delivery management such that they can be relied upon to make excellent, repeatable delivery on a large scale project for an enterprise customer. The MCAs have demonstrated a series of competencies in architecture including knowledge and application of several external architecture and operational frameworks, integration of broad based technology knowledge, and the ability to work with the customer at almost any level of the organization.
There are two sets of MCA programs. The first set are credential programs that focus on the architect as a design and delivery professional and are offered in the general Infrastructure and Solutions tracks. The second set are technology focused and indicate a professional has both the advanced architecture knowledge as well as the deep technical knowledge of an MCM. Presently, MCA technology tracks are available for MCA: Database and MCA: Messaging. For either technology track, the candidate must hold the MCM in the specified area. For any MCA program, the credentials and documentation on the candidate's history must be accepted to even sit the review board.
The actual MCA procedure itself is a peer-based review board interview which is 2 hours in length. The time investment that must go into candidate documentation and preparation to sit the review board is considerate and candidates should not assume that the review board itself is the only time commitment required. The pass rate for this program is historically EXTREMELY low for first attempts as candidates often require additional preparation to appropriately demonstrate ALL of the required competencies.
Cost to attempt the review board has been announced around $4,950.
|
-
In this security conscious age, it makes sense to build your hypervisor (the layer that has access to EVERYTHING that goes to the physical resources in a virtual scenario) on a hardened underlying operating system. In order to allow for this, Microsoft has constructed Hyper-V so that you can use the Server Core edition of the operating system to install Hyper-V on. Installing on Server Core allows you to minimize the footprint of the operating system and the attendant vulnerabilities potentially created by the number of unnecessary components in the full Windows Server 2008 install (like the .NET framework, for example). The drawback is that you do not have the user friendly windows and elements provided by those "unnecessary components".
Falconic Note: Make sure that you have installed server manager on another computer so you can administer your Hyper-V instance. For best results, your server core installation would ideally be in a domain so that you can use shared credentials to make use of a Hyper-V snap-in on another machine in the domain or even SCVMM 2007 or 2008 beta.
To install the Hyper-V role on Server Core, the last step is actually the installation. First, you need to ensure your hardware is compatible. Then check to make sure your operating system is correct and ready for the installation. THEN install Hyper-V on the core installation. This mini-guide examines the server core installation from the BIOS check through to the installation of the role. This guide makes the assumption that the necessary portions like setting up your disk arrays has already taken place at a hardware level and that you are using directly connected storage or otherwise a storage arrangement which does not require additional steps. Should you need to install or configure a driver manually on server core, insert those procedures as necessary in this guide.
Ensure you are using a compatible processor.
Intel or AMD processor with Intel VT or AMD-V and eXecute Disable support. If an Athlon family processor, ensure that it uses "F2" stepping.
If necessary, replace your Athlon F2 processor with an Athlon F3 processor processor to reduce compatibility issues. Opteron and Xeon processors should be preferred over Athlon and Core2 lines of consumer processors.
Update your server motherboard to the absolutely latest version of the BIOS.
This is particularly important if you are using an Athlon or early version of an Opteron processor. I was getting frustrated with a processor based issue for more than a week when I installed first installed Hyper-V in beta. Trust me. It may not seem like its necessary but its worth 15 minutes up front to avoid possibly days of frustration later when you find out that there is a later BIOS version than you have which will make the whole thing work like magic.
After the BIOS update to your motherboard, enter the BIOS on boot and enable CPU features.
Enter the BIOS and we are going to go into the processor features. Sometimes this is under a menu with different names like "Processor Features", "Advanced Chipset Features", "Chipset Features", etc. There are two options we are interested in: eXecute Disable and Virtualization.
Be careful here. Sometimes the naming schemes on the BIOS and the way the feature works are counter intuitive. If the feature text says "Disable Virtualization", for example, you will want to set the feature to disable (if you disable a disable you are enabling the feature).
The net effect here should be that both the virtualization features and the execute disable features are made available to the operating system.
Optional: If your Windows Server 2008 Media does not have Hyper-V RTM, build a slipstreamed media for WDS or other deployment.
You don't actually have to do this, it just makes things a lot easier as it guarantees you are using media licensed to include Hyper-V and also keeps you from having to apply the Microsoft Update package which would otherwise provide the components to support Hyper-V.
The best procedure for this has already been written so there is really no point at all for me to reinvent the wheel. Instead, you should head over to John Howard's three part series on the subject. The first two parts of which deals with this particular subject. Check out Part 1. Check out Part 2.
Install a clean installation of Windows Server 2008, Server Core.
If you are re-purposing a Windows Server 2003 or other server box, you will want to spend the extra few minutes to go ahead and format the volumes to ensure that you have cleaned out the old system. This is a precautionary step but it never hurts, in my experience, that when you are truly going to be paving over and replacing something, that you take the extra motion of ensuring the old stuff is gone and not interfering with the new installation.
Assuming you are not using an unattend file, the process is really simple:
- Insert the appropriate Windows Server 2008 installation media into your DVD drive.
- When the auto-run dialog box appears, click "Install Now".
- Follow the instructions on the screen to complete Setup. Remember to select an installation of Server Core.
- After Setup completes, press Control+Alt+Delete to login, choose "Other User", type "Administrator" with a blank password and then press enter.
- Configure a password for the Administrator account.
Optional: Set a static IP address for your server.
By default, Server Core will attempt to use DHCP for each of our network interfaces on the server. If you would like to use DHCP to automatically obtain an IP every time the server starts, you may skip this step. For most people, this will not be desirable. (For some environments, a DHCP server is configured to automatically assign the same static IP address to servers every time they come online. Outside of these environments, your server should be using a static IP address that does not change.)
Remember that this is a Server Core installation of Windows Server 2008 and as a Server Core install there simply aren't going to be any graphical user-friendly installation window. Pretty much every step from here on in is going to have to be command line. Setting the IP address is going to be no different.
There are actually three steps here. The first is to get the list of interfaces on the server. At the command prompt, type:
netsh interface ipv4 show interfaces

Note the ID of the interface that you would like to configure your static IP address on (this is the number displayed in the "Idx" column of the list of network adapters). In order to actually set the IP, we need to have the ID of the interface to set, the IP address we would like to set on the interface, the subnet mask to set on the interface, as well as the IP address of the default gateway. To set the IP address, we use netsh again:
netsh interface ipv4 set address name="<ID>" source=static address=<StaticIP> mask=<SubnetMask> gateway=<GatewayIP>
To finish setting the IP address, we need to configure a DNS server (or 2 or three). There is an index number used for each DNS server. This index sets the order that the server should use the DNS servers. In an environment where you need multiple DNS servers, you need to run this command multiple times, using the index number to set the order of the server listings. At the command prompt, type: netsh interface ipv4 add dnsserver name="<ID>" address=<DNSIPAddress> index=<Index>
Rename the server to use the desired hostname.
When Server Core installs, the hostname of the machine is set to a fairly random string of characters. Since we are in the command line world, we cannot simply choose a properties dialog and change a text field to set the hostname we would like to use. We need two steps. First, we need to obtain the hostname. Then we need to change it.
To obtain the current hostname of the server, enter 'hostname' at the command line (without the quotes) and press enter. This will return the name of the machine:
Once you have the current name of the computer, we can use the netdom command (which handles elements of the server naming and domain credentials) to set the new computer name. To set the computer name, we use the following command: netdom renamecomputer <ComputerName> /NewName:<NewComputerName>
Entering this command should apply the new computer name to the server. If you choose to do so manually, restart the server with the following command: shutdown /r /t 0
Optional: Join a domain.
Joining your server to a domain makes life easier for administering server core computers by providing shared credentials for your remote access to use in accessing the server. For some tools, this is an essential. You can, however, proceed without joining a domain, based on your environment.
To join a domain, we want to use the netdom command again to join the computer to the domain. To do this we use the following command:
netdom join <ComputerName> /domain:<DomainName> /userd:<UserName> /password:*
Note that you need the asterisk after the password argument and that after you enter this command, the system will prompt you for your domain password.
Once you have joined the domain, in most situations, you will need to add a series of domain users to the local administrators group on the server. For each user which you need to add from the domain to the local server, use the following command:
net localgroup administrators /add <DomainName>\<Username>
Restart the computer again:
shutdown /r /t 0
Verify your Windows Server 2008 Product and Architecture
There is no point in continuing to activate your server and then installing Hyper-V if we have the wrong product installed or it is installed on the wrong server. We can use the command line to make sure that we are using a type of Windows Server installation that supports Hyper-V and to ensure it is the 64-bit architecture version.
To find out what kind of Windows Server product we installed (and specifically, make sure it was not a without-Hyper-V license), we want to query the Windows Management Instrumentation for the SKU of the Operating System:
wmic OS get OperatingSystemSKU
The number that is returned will correspond with Microsoft's list of SKU numbers for Windows Server. Please ensure that your version supports Hyper-V. Operating System SKU List for Server Core
|
Console Output |
Edition |
Hyper-V? |
|
12 |
Windows Server 2008 Datacenter Edition, Server Core |
Yes |
|
39 |
Windows Server 2008 Datacenter Edition without Hyper-V, Server Core |
No |
|
13 |
Windows Server 2008 Standard Edition, Server Core |
Yes |
|
40 |
Windows Server 2008 Standard Edition without Hyper-V, Server Core |
No |
|
14 |
Windows Server 2008 Enterprise Edition, Server Core |
Yes |
|
41 |
Windows Server 2008 Enterprise Edition without Hyper-V, Server Core |
No |
|
29 |
Windows Web Server 2008, Server Core |
No |
Now we check the architecture of the server installation as well which uses a similar command:
wmic OS get OSArchitecture
The architecture should be 64-bit in order to install Hyper-V.
Optional: Install Windows Updates
In Server Core, because we do not have a browser or most of the GUIs we are used to, we need to start Windows Update from the command line.
First, lets set the service to be turned on and use the default time of 3am to check for (and schedule automatic install of) patches:
cscript c:\windows\system32\scregedit.wsf /au 4 net stop wuauserv net start wuauserv
Falconic Note: If you are in a managed environment with SLAs or specific change windows, these settings should NOT BE APPLIED in your environment without researching and modifying the right way to make sure that what you are implementing is compliant with your environment policy. If you then want to force an update check (which will return nothing to the foreground but rather will start in the background): wuauclt /detectnow
Optional (Sort-Of): Install Hyper-V RTM Update
If you did not earlier slipstream the Hyper-V RTM updates onto your server installation medium, at this point, you will need to download and install the update that contains the RTM bits onto your server. Unfortunately, I can only provide limited assistance with how to do this. There are two possible methods here. The first is to download the RTM update file on to a local share somewhere in your organization and then use robocopy to download it from the command line. Assuming the file is on \\fileserver\sharename then the command would look like this:
robocopy \\fileserver\sharename\Windows6.0-KB950050-x64.msu c:\windows\temp\Windows6.0-KB950050-x64.msu
The other way to do it is with File Transfer Protocol (FTP), assuming you have the file on an FTP server somewhere. Assuming that your FTP server is called ftp.myserver.com, you do this with the command:
cd c:\windows\temp ftp ftp.myserver.com
When prompted, you would enter your username and press enter. Then enter the password for that user on the FTP server and press enter. When at the FTP command line (the prompt looks like ftp> ), enter the command:
get Windows6.0-KB950050-x64.msu
Once the file is downloaded, enter the word 'quit' (without the quotes) and press enter to quit the FTP connection.
In either case, you would then run the update file you downloaded from the c:\windows\temp directory:
Wusa.exe Windows6.0-KB950050-x64.msu /quiet /norestart
Optional: Allow Remote Management in the Firewall and enable Remote Administration
To allow remote management of the server core machine, you will need to create an exception in the firewall to do so. As with all the other steps, we need to do this from the command line. We access this functionality through the netsh command:
netsh advfirewall set allprofiles settings remotemanagement enable
Then, we enable the remote desktop for administration service by default: cd \windows\system32 cscript scregedit.wsf /AR 0
Falconic Note: Although I completely DO NOT RECOMMEND IT, you can disable the firewall completely in Server Core as well: netsh firewall set opmode disable
Activate Windows Server 2008 on your Server.
In order to be able to use your server long-term, you will need to activate your server. We do this with a visual basic script file which Microsoft includes on the Server Core installation. This command will only provide any feedback if you run into problems activating your Windows Server 2008 Server Core installation. Assuming that you have a key management server in the environment, to activate your server:
slmgr.vbs -ato
If you are using a MAK (also known as an actual product key from MSDN, Technet, some enterprise users), you will not like activating with the default method because the activation will look for a key management server and will not find one. So there are two steps. First, set the key, THEN activate the server:
slmgr.vbs -ipk <ProductKeyWithDashes> slmgr.vbs -ato
Install the Hyper-V role.
We are finally ready to actually make the installation of the role itself. To do this, we use the ocsetup.exe command and supply Hyper-V as the role to be installed:
start /w ocsetup.exe Hyper-V
Once the Hyper-V role has been installed, in order to force it to operate, the server will need to be restarted. Should you need to manually restart, you may do so with the shutdown command we used earlier:
shutdown /r /t 0
Check for errors in the event log.
Getting event log information on Server Core is ugly. I mean really ugly. When you go through the event log on a standard machine, it can be difficult to sort out the hundreds of lines of auditing crud to get to the 2 or 3 lines that really let you know whatever you are looking for. When you are in a text environment, it is that much harder because the normal GUI controls we use to sort and display that information are not available on the command line. Microsoft has included a command line tool, wevtutil.exe, which allows us to retrieve information from the command line but in order to get specifically the important things we are looking for, we need to know how to craft the command to specifically retrieve Hyper-V related errors.
In order to obtain meaningful results, we need to focus on query specifically on events generated by Hyper-V. Further, we need to grab only the most recent last few events. We need them in reverse chronological order. We need only the events which show an error.
In order to retrieve all of the Hyper-V related errors, of specifically 'Error' level, we need to use this complex event log query. Please note that as with many of the commands on this page, this is case sensitive!
wevtutil.exe qe System /q:"*[System[Provider[@Name='Microsoft-Windows-Hyper-V-Hypervisor'] and (Level=2)]]" /rd:true /f:text /c:5

This command will display any errors in the event log which were generated by the Hyper-V hypervisor as it started up on server core following our installation of the role and the subsequent restart. Particular errors to look out for include errorid 42, 46, 47, and 51, all of which are the Hypervisor being unable to start up because of CPU issues with either the virtualization or execute disable features.
If no results come back from the query above, run the following query to check for a successful startup:
wevtutil.exe qe System /q:"*[System[Provider[@Name='Microsoft-Windows-Hyper-V-Hypervisor'] and (EventID=1)]]" /rd:true /f:text /c:3
If you receive listings from this event log query, Hyper-V was successfully installed and you should be ready to administer the Hyper-V virtual machines from another computer (assuming you have enabled remote management on your server)!
Falconic Note: Thanks to Sander Berkouwer, who put together a great response to some folks who were having trouble with server core. I added a few steps of my own to his procedure and have posted it here. Sander is a very good technical resource for all things server core. You may want to also have a look at his blog.
|
-
As a technical interviewer at Avanade, when I complete the technical portion of the interview, one of the most common questions that I get from prospective consultants is “What is it really like as a consultant? What is your day like?” Sometimes I get random emails from people on the web, “Hey, I am thinking about applying to Avanade, do you like it? What is your day like?” I love these kinds of questions because there really isn’t a single right answer. Avanade is a variety of experiences and that is part why being an Avanade consultant is so great to me. Falconic Note: This blog post is my own personal view and experience as an engineer at Avanade. This blog post is not endorsed by Avanade nor should it be construed as making a statement in any official capacity for Avanade. The views expressed in this blog post are my own. Nothing in this blog post should be construed to constitute an offer of employment or a supplement to any existing or future offer. I totally welcome emails with questions about Avanade. For obvious legal and HR reasons, there are some things I just can’t talk about but I am more than happy to field questions about why Avanade really is an awesome place to work for a Microsoft technologist. Feel free to drop me an email at wayne.anderson@avanade.com . If I cannot answer the question, I can point you towards one of our recruiters who might be able to talk with you a little more about opportunities at Avanade. Consulting for Avanade changes a bit depending on the project that you happen to be working on. There are really 4 “main” scenarios that you will encounter for your work at Avanade. - Working on a Customer Project On-Site (Out of Town)
- Working on a Customer Project On-Site (In-Town)
- Working on a Customer Project Remote (@ Home)
- “On the Bench” (@ Home)
Let’s have a look, shall we? Working on a Customer Project On-Site (Out of Town) Only slightly less frequently asked in an interview is the question, “how often do you travel, really?” With the caveat that this is my experience only, and that your experience will vary, the company line is “up to 100% travel”, do not use within reach of children, caution: contents may be hot, etc, the average that I see is about 70% of the time. This varies based on the location that you are based out of. Being based out of a very large city where we have a thriving practice in the US or Overseas can bring down your travel. Being based out of a smaller city with plentiful competition like Denver, CO, can push your travel percentage upwards. At any rate, when you are traveling on a customer engagement, Avanade uses a model where on an engagement in the same country, you will travel home every weekend. The engagement will either be a travel Sunday night to Thursday morning, Monday morning to Friday afternoon, or on a few engagements, travel Sunday night to Friday midday. This means that you have at least most of the weekend with family, and the other part of the week you are on a customer site. At the same time, we have a commitment to the customer to be putting in a standard work week. Thus, while at the customer location, generally you can expect a 9 to 10 hour day. One of the other questions I hear a lot is, “will I be out of town on a project by myself?” Most of the time, the answer is no. There are very few projects that I personally have experience with where an Avanade consultant is working solo on a project for which they are traveling. Usually we are there in one of three scenarios. 1) Working as a fully integrated Avanade team with the customer. 2) Working in concert with some Avanade, some Accenture. 3) Working with some Avanade, some Microsoft. In any of these cases, you almost always have “friendlies” for which you are part of the project team that you will be working with. Most of the time, there are lunch groups and various casual dinners available that you can be a part of. One of the nice things about everyone on a project traveling (or even most of everyone on the project), is that those other people are on per diem too and are going to be looking for some socialization time in the evenings as well. Without going too far, I can safely say that I have seen the inside of innumerable bars and restaurants with Avanade colleagues. Avanade unequivocally believes in safe and professional conduct but within those guidelines of conducting yourself appropriately, there are plenty of opportunities to enjoy the hospitality of a city that you might not otherwise experience. Working on a Customer Project On-Site (In Town) Sometimes, particularly if you are based out of one of our larger cities, like LA and Seattle in the US, you will be placed on projects local to the home city that you are based out of. When these kinds of opportunities come up, you will have a steady commuting schedule just like going into the office for any other job. The only difference in consulting is sometimes we have a tendency to require a few after-hours work hours from you in order to be able to take part in the types of migration/installation/testing that we do outside of the customer’s business hours. Despite the small request of some additional hours to facilitate after-work testing/install/migration (which can be mitigated by adjusting start times during the affected period on the project schedule), in-town work is by far the preferred work arrangement for many consultants because you are back home with your family every night. Working on a Customer Project Remotely (@ Home) Remote work is the kind of work we all like to have but tends not to be available as often as one would hope. Remote work allows us to save a customer money by saving on travel expenses but also requires that the customer places a certain degree of trust in our consultants being able to connect to the customer resources remotely through a VPN or other type of arrangement. For this reason, some customers opt to pay for the onsite consulting that is the mainstay of our business. In development projects, the remote work tends to be more available as many of the projects we engage on do not require the full and prolonged presence of the entire project team, instead providing ways for them to check in code and attend meetings remotely. If you are a developer, you will find that your travel is rather more balanced as many of our customers offer more opportunity to save costs by coding remotely in a TS environment, allowing remote check in to code control systems, and other methods of remote work while maintaining appropriate control of the work product. Even though working from home for the length of a project for months at a time sounds really cool, the honest fact of the matter is that it takes focus to be able to really bring your skills to bear on a project. For those that have families, this can be particularly difficult as our tendencies as husbands and fathers is to spend the time that we have with them as much as we can. I recommend to anyone who gets involved as a consultant to count on having some portion of time at home working on projects and working on the bench. If you can, set up an office area. Your office should, at the very least, be a bedroom or basement area, or otherwise dedicated space where you can close the door and maintain quiet that semi-isolates you from the animals, children, etc that each of our homes maintain. “On the Bench” (@ Home) Another common question that I hear a lot is, “If I am not working for a customer, am I still getting paid?” This is particularly true from folks that have work for other consulting companies that may or may not do that. When you work for Avanade as a full-time technical consultant, Avanade maintains a “bench” which is the resource pool in a given region which is immediately available for projects. When you are on the bench, your job is to go out and sharpen your skills to get back in the field. This often entails working on your certification. Avanade not only supports certification, but up until the project lead levels, Avanade requires it! Provide resources to study with and vouchers to take the exams. We provide the resources for it. It’s in Avanade’s interest to make sure that you are fully credentialed and trained to succeed on current and next-generation technologies from Microsoft. Your time on the bench is in the anticipation that you will use it to further your formal training and experience on the technologies you work with, certifying it with credentials from Microsoft. Consulting at Avanade offers Variety Avanade offers every one of its consultants the opportunity to build their own training and experience to develop themselves. You are in the driver’s seat for your career. Want to certify? The resources are there and available. Want to be a project manager? You can work with our Global Learning department and your region to build a career path and map out the steps you need to take to meet the competencies to be in that role. Want to be an expert? The learning team can help you figure out the experience and training you need to work towards an architecture role. I came to Avanade from IBM Global Services because I wanted a job that would grow me along with the business. I wanted a job where I could be working on something different every 3-4 months. I wanted a job where the management chain was as much about supporting me in building my capability and customer management skills as it was in putting me in front of customers. I wanted a job where I was working with people who knew more about the technologies I work with than I do. Avanade provided that opportunity for me. If Avanade sounds like something you might be interested in, you have a passion for technology and constantly training and building your experience, and don’t mind some travel, check out some of the job postings the recruiting team has put up on the corporate homepage at www.avanade.com, there might be something there that fits what you are looking for. Falconic Note: This blog post is my own personal view and experience as an engineer at Avanade. This blog post is not endorsed by Avanade nor should it be construed as making a statement in any official capacity for Avanade. The views expressed in this blog post are my own. Nothing in this blog post should be construed to constitute an offer of employment or a supplement to any existing or future offer. Information about consulting, training, and certification activities that Avanade consultants engage in is current as of the time of this writing and may be subject to change.
|
-
The long awaited to refresh to the Hyper-V virtualization hypervisor in Windows Server 2008 has finally released! Although it came more than the expected 180 days after Windows Server 2008 RTM'd, my progression from a beta to RC to the RTM version has actually gone quite smoothly. I wanted to share a few thoughts from my first week with the RTM product, as I know there are going to be a lot of folks looking at Hyper-V as an option for virtualization in environments that principally use the Microsoft stack of software products.
Falconic Note: Note that this is the first article to go in my Virtualization category. My engineering specialties have been Security, Virtualization, and Messaging for a while so I figured that it would be appropriate to have a category for each and since Security and Messaging already existed here, I needed a virtualization category for my muses on Hyper-V, VMWare, etc.
Falconic Note 2: You can find out more about Hyper-V from Microsoft's product feature page and download the RTM from the download center.
Hyper-V as RTM, Care in Installation
When I was playing around with the release candidate of Hyper-V, I have principally stayed with three VMs in my lab environment.
I use a Windows Server 2003 virtual machine for working with scripts and so on for the 2003 platform, a Linux VM which allows me to maintain the (frankly, relatively thin) skills I have on that platform which I have retained from my multi-platform work early this decade. This Linux VM also hosts some of my Linux-specific platforms such as my uptime and connectivity link monitoring for my home network. For those that care, the distribution I have running is Fedora Core 9 with SELinux/Audit services turned off. The third VM which I am hosting is a Windows XP workhorse that hosts the few applications I have that do not play nicely with Vista including Zend Studio Client which I sometimes use to supplement Microsoft Expressions Web 2 in my web development work.
Three VMs. 512 MB of memory on each. My Linux VM is set to use a static MAC address and uses the legacy network adapter in order to avoid some of the compatibility bits in working with Linux on Hyper-V.
The underlying hardware platform is a Windows Server 2008 x64 box that I built myself:
- Athlon 64 X2 6400+ (3.2 GHz)
- Abit KN9 Ultra Motherboard
- 4GB DDR2 @ 667MHz (Non-ECC)
- 80 GB Logical OS Drive (RAID 1 Mirrored array using 2 physical hard disks)
- 1.2 TB Logical Data Drive (RAID 5 Striped with Parity array using 4 physical hard disks)
- Radeon X300 for console video
- 2 x 1Gbps Onboard LAN (RealTek)
Falconic Note: Don't buy an Abit motherboard. They take forever to release BIOS updates, all of their support operations are based out of Taiwan and the support experience is VERY frustrating.
When I went to install Hyper-V, I was infuriated by the process. All those who are using re-purposed hardware from a Windows Server 2003 server, you need to make sure that you have gone every step of the way to ensure that the Operating System has full access to the eXecute Disable (XD) bit, also called Enhanced Virus Protection or EVP by AMD, as well as the Virtualization features on your server's processor. When I installed Hyper-V for the first time, I was stymied for a long time on making the XD and Virtualization features available properly to the operating system. This is the main problem that I am seeing and hearing that people are getting stuck on when installing Hyper-V on a Windows Server 2008 machine.
If you run into problems using Hyper-V, look for these errors in the event log:
- Error ID 51: Hyper-V launch failed; virtualization not supported or enabled on processor 0x0 (check BIOS settings).
- Error ID 42: Hyper-V launch failed; Either SVM not present or not enabled in BIOS.
If either of these two errors exist, the virtualization features from AMD-V or IntelVT on your processor are not making it through to the operating system. The first thing to look for is make sure your hardware will support virtualization. This is particularly true on an Athlon processor as many of the AMD Athlon processors use something called "F2" stepping. Processors which are "F2" processors have a problem in the way that AMD-V is implemented, making their use for virtualization completely dependant on proper support from the BIOS. You know you have an "F2" stepped processor if your processor is:
- Athlon FX-62
- Athlon 64 X2 5200+ or lower
Even though the installation instructions on the Hyper-V mini-site for Windows Server 2008 start with the actual steps to enable the Hyper-V role, I would strongly encourage you to take the extra minute to do the following first steps to prepare your server:
- If necessary, replace your Athlon F2 processor with an Athlon F3 processor to reduce compatibility issues. Opteron and Xeon processors should be preferred over Athlon and Core2 lines of consumer processors as it is easier to obtain support on server processors. Microsoft tech support and computer enthusiast support channels will blame that first before even trying to help with the issue.
- Update your server motherboard to the absolutely latest version of the BIOS
- After the update, enter the BIOS and check for supported features.
- Note that some BIOS may require you to "Disable" a Negative feature rather than "Enabling" the feature. This can be a point of confusion.
- Virtualization must be enabled.
- Execute Disable, Security Bit, or Enhanced Virus Protection, or whatever the other terms used in your bios for the eXecute Disable bit must be enabled.
- Install a clean installation of Windows Server 2008.
- Run a BCD Edit command to force the nx attribute to always on.
- Run a command window as administrator.
Go to Start. Right click on "command window" and choose "run as administrator". Choose to confirm starting the window with administrative privileges.
- Run the command:
bcdedit /set {current} nx AlwaysOn
- Verify the setting by typing:
bcdedit /enum
- The output should look similar to the following. Note the nx setting which I have boxed in orange on the screenshot. This is the key setting we are looking for.
- Use an application like the "Hyper-V System Compatibility Check Utility available from the AMD website to ensure that the features show available to Windows Server 2008.
AMD-V_Hyper-V_Compatibility_Check_Utility.zip
- Once the features are verified, at that point, I would pick back up on installing the Hyper-V role on your Windows Server 2008 machine.
Stomping the Bugs from Beta and RC Code
During the beta and RTM phases, there were a number of bugs, particularly related to processor utilization and prioritization, that seem to be fully addressed in the RTM code thus far.
First, the server is stable under RTM. This is a great improvement over beta and a slight improvement under the RC. (The RC was mostly production ready so it was fairly stable but I did run into a couple of minor annoyances in this respect.)
Under the beta, you could create a processor domination condition where a single VM ran something crazy like an application with an unterminated loop that went through processor-intensive math instructions. The result is that the guest VM would fully occupy the CPU and the hypervisor would not re-assign it to other VMs who were attempting to interrupt with their own activities. See the problem? Under the hypervisor model, from the HV layer perspective, the "host" console is a VM instance too! That's right, a condition where the console could be locked out and unresponsive because of a race condition in the VM! In the RC this was fairly arbitrarily handled in that the system became chunky. Other VMs could force actions through however in my testing, I could clearly tell when the VM I was using was getting processor time in near-real-time. I would get a pop of responsiveness, a pause, and then a pop again. In the RTM this seems to be handled a little more smoothly. Other VMs will slow down slightly but this is the expected behavior when the overall system is in use. The Host and other guest VMs will have a uniform slowness to responding to actions.
RTM plays nice with snapshots. I have used the snapshot functionality to save milestones for my VMs where the VM was constructed with all of the necessary applications. And then another for each VM where the applications and operating system were fully configured. On two occasions, I have forced a condition where I intentionally messed up the disk and reverted to snapshot. Each snapshot reversion worked as expected with no unexpected defects I could locate in the VM itself. The primary things that had to happen were updating the clock on the VM, updating the virus signatures for the antiviral application, and on one occasion, rejoining the machine to the domain.
Hyper-V versus VMWare VI 3.5
Hyper-V is not at the scalable enterprise-class of VMWare. Its not. Sorry. VMWare is still the clear leader in the space as the VMWare Infrastructure services offered in 3.5 have the scalability, migration, and management functionality that make it an ideal choice for data center consolidation efforts. With VirtualCenter from VMWare in concert with VI 3.5, you have the ability to do relatively easy P2V, V2V host migration, guest load balancing among hosts, disaster recovery by near-automated V2V host migration, not to mention the integrated monitoring and health capabilities the VirtualCenter infrastructure offers.
The flip side of the deep VirtualCenter capabilities in 3.5 is that if you do not have a VC server in the environment, the benefit that you earn for upgrading from VI 3.0 to 3.5 is mainly geared in bugfixes and compatibility. Microsoft has released a number of supporting features to make Hyper-V more attractive to the enterprise computing environment. For one thing, there is a management pack available now for Hyper-V for System Center Operations Manager as well as the System Center Virtual Machine Manager (with the Hyper-V RC1 patch from the Microsoft Connect site which also works for RTM for now) which offers a consolidated application for concentrated VM management but is not yet the enterprise class product that VirtualCenter has become for VMWare. The Hyper-V WMI APIs are also now available from Microsoft for developers interested in building custom applications or system support into existing applications.
There is also one other clear differentiator. Linux. Microsoft has chosen to support only one Linux distribution, from a partner which it has signed an IP agreement with. And you can't use just any old version of the SuSE Linux distribution, it has to be one of the supported and purchased distributions. This is one of the key sticking points to getting Hyper-V adoption in many data centers. I have personally tried to start several Linux and other free operating systems on Hyper-V. Certain distributions like RHEL and Fedora I could get to work with a little bit of messing about. Some distributions and platforms, such as the beta of OpenSolaris, I could not force to function without investing more time in the build and troubleshooting effort than I was willing to invest.
Falconic Note: For any Linux or non-windows operating systems as guests on Hyper-V, remove the default network adapter, add a legacy network adapter, configure the legacy adapter with a static MAC address.
I think that many organizations which are completely Microsoft shops might see a compelling value in consolidating with Hyper-V but those shop which use heterogeneous environments will need to more closely examine partial consolidation strategies or will end up executing a consolidation on a VMWare based virtualization platform. For essentially a public third version of the virtualization platform (2005, 2005 R2, 2008/Hyper-V), the offering has become more competitive and comprehensive however I look forward to the updates to the SCVMM products as well as the expansion of the Linux support that will make Hyper-V more competitive in the market.
Giving Hyper-V a Try
I think that any professional which works with virtualization needs to at least be in a position to have experience with the product. Definitely spend some time with the application. If you have a lab environment, with a few physical machines, install a Domain Controller. Install the Hyper-V box as part of the domain. Build a second Hyper-V box. Deploy the SCVMM 2008 into the environment. Grab the RC1 patch from Microsoft, and then work with the beta P2V and V2V capabilities. This is really the best way to get a feel for the feature set in an "enterprise" context as at that level you have the full set of features which offers the more competitive experience with what people look for from Xen and VMWare.
If you run into problems, there is a dedicated Hyper-V forum on the Windows Server 2008 portion of the TechNet forums. There is also another forum specifically dedicated to the SCVMM product which may be of more assistance with P2V, V2V, and host "clustering" issues on Hyper-V.
|
-
This is the one of my Preparing for Certification series of experience blogs. One of the fortunate things of working in consulting and subsequently moving into a role where I am assisting others to prepare for consulting themselves is the opportunity to really build my own experience with preparing for and completing certification exams to accredit my skills, the work that I do, and to build credibility with the folks that I am teaching. As such, I have taken some time to put together my thoughts about my experiences as I have recently [in the past 2 years] completed various credentials. Please understand that this is intended as a preparation material, to provide targeted resources to help you prepare for the exam. NOT to help you pass the exam. You do that. You need to make sure that you budget an appropriate amount of time to prepare to sit an exam. Please understand that these are just observations based off of just my own experience with each of the tests. This information is mostly just my observation of the strength of certain items which are on the Microsoft Objectives for the exam and your perception as a unique professional may vary depending on your own strengths. My difficulty scale is as follows: Easier <-Easy—Moderately Easy—Moderate—Moderately Difficult—Difficult-> Harder 70-649 TS: Upgrade to Windows Server 2008 Moderately Difficult – Q&A – In much the same vein as the upgrade exams for the Windows Server 2000 to 2003 transition, the Windows Server 2008 upgrade exam is a broad based exam that, while not particularly difficult on an item by item basis, presents a challenge to candidates solely on the broad base of knowledge the individual needs to be familiar with. In my experience taking this exam in beta and in production, probably 30% of the content you should be able to pass based on up-to-date experience with Windows Server 2003 SP2 implementation and troubleshooting. This exam is actually presented in a different manner than most exams I am familiar with in the Microsoft track, opting for fully divided 3 sections rather than a number of questions from different content domains in a single, unified exam. The three sections cover the primary content domains that Microsoft has targeted on the exam page and outlined for the MCSE-to-MCTS upgrade path, aligning with WS2008 Active Directory, WS2008 Network Infrastructure, and WS2003 Application Infrastructure. A candidate needs to be highly familiar with the Active Directory Certificate Services interaction with Active directory (revocation list publishing, and enterprise CA pre-requisites spring to mind). Also important to a testing candidate are the specifics of working with AD LDS partitions, controlling LDS replication throughout global catalogs, and understanding the scope of schema modifications. As to the directory services themselves underlying these add on services, a solid understanding of backup and recovery for automatic and manual backups as well as how to restore system state information and authoritatively restore a database to correct information loss. Focusing on Network Infrastructure requires only the lightest review of networking concepts. Ensure that given a super-netted IP block you can distribute the IP addresses into smaller subnets according to a given set of host counts and also that you can adequately choose an appropriate IPv6 address for a given network size and communication need. At a higher level, you need to be familiar with the very basic concepts involved in WSUS architecture and accessibility. Also important are basics of the infrastructure services involved in remote access (particularly when dealing with wireless hosts), DNS, and DHCP services. On top of all of these subjects, a candidate needs to be familiar with the basic mechanics of NPS and how to implement health policies to achieve a specified security policy. The true heart of the exam is Application Infrastructure, driven home to the candidate by more complex scenarios that an individual will need to be able to logically “parse”, understand the specifics and underlying mechanics, and determine an appropriate configuration path for the situation. It is important to know the terminal services relationships in the 2008 infrastructure, how to publish and load balance terminal servers, how to use ISA to publish terminal services, as well as methods to make applications available through a gateway and publish to a client. Also make sure that before you do your final review to sit the exam, you are VERY comfortable and thoroughly versed in the features and administration of the new IIS 7.0. A large number of changes are embodied in the IIS release for Windows Server 2008 and, as one might | |