<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>AstroArch Consulting, Inc.</title>
	
	<link>http://www.astroarch.com</link>
	<description>Providing Consulting for all your Virtualization Needs</description>
	<lastBuildDate>Wed, 22 Feb 2012 11:19:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Astroarch" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="astroarch" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>vSphere Upgrade Saga: vShield Edge Missing Manual</title>
		<link>http://www.astroarch.com/2012/02/vsphere-upgrade-saga-vshield-edge-missing-manual/</link>
		<comments>http://www.astroarch.com/2012/02/vsphere-upgrade-saga-vshield-edge-missing-manual/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 17:08:01 +0000</pubDate>
		<dc:creator>Edward Haletky</dc:creator>
				<category><![CDATA[Virtualization Security]]></category>
		<category><![CDATA[VDI]]></category>
		<category><![CDATA[View]]></category>
		<category><![CDATA[View Connection Broker]]></category>
		<category><![CDATA[View Security Server]]></category>
		<category><![CDATA[vSE]]></category>
		<category><![CDATA[vShield App]]></category>
		<category><![CDATA[vShield Edge]]></category>

		<guid isPermaLink="false">http://www.astroarch.com/?p=569</guid>
		<description><![CDATA[I bit the bullet and implemented vShield Edge within my environment along side my existing virtual firewall (thankfully I have some other IP available). But this was not without its problems, it appears there is some critical information missing from the manuals. After a call to VMware, I noticed my mistake (which I actually forgot was necessary). Finally, I have a working vShield Edge but the documents still need a bit of work. Hopefully, these notes will help those going forward.]]></description>
			<content:encoded><![CDATA[<p>I bit the bullet and implemented vShield Edge within my environment along side my existing virtual firewall (thankfully I have some other IP available). But this was not without its problems, it appears there is some critical information missing from the manuals. After a call to VMware, I noticed my mistake (which I actually forgot was necessary). Finally, I have a working vShield Edge but the documents still need a bit of work. Hopefully, these notes will help those going forward.<span id="more-569"></span></p>
<p>The first thing to realize, is that vShield Edge is written for security folks to use and not for virtualization administrators. The rules you apply are very similar to those found with in the O&#8217;Reilly book <em>Building Internet Firewalls</em>. Which is, actually, one of the better books out there on how to properly create the rules for your firewalls. My copy is well used and marked as I used to build my own firewalls.</p>
<p>I had, what I expected was a simple use for vShield Edge. I wanted to use Edge to protect a View environment while using my existing virtual firewall for my standard DMZ and network. However, I also wanted the View virtual desktops to talk to my new vCloud environment. But the first task was to add in View so that it could talk to my existing environment then add in the vCloud mechanisms. Figure 1 depicts what I wanted to happen, in this case, all I am adding is View into the mix with vShield Edge.</p>
<div class="mceTemp mceIEcenter">
<div id="attachment_591" class="wp-caption aligncenter" style="width: 508px"><a href="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-11_13-49-58.png"><img class="size-full wp-image-591" title="Simple Network w/vShield Protecting View" src="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-11_13-49-58-e1328986258336.png" alt="2012 02 11 13 49 58 e1328986258336 vSphere Upgrade Saga: vShield Edge Missing Manual" width="498" height="282" /></a>
<p class="wp-caption-text">Figure 1: Simple Network w/vShield Protecting View</p>
</div>
</div>
<p>So why use vShield Edge and not my existing virtual firewall? Mainly because, I already serve on port 80 and 443  various existing web services and for View to work not only do I need to serve up port 80 but 443 for View traffic amongst others. So instead of adding in reverse proxies and other complicated features to give me access to more services hanging on port 80 and 443, I assigned a new IP to a vShield Edge Firewall.</p>
<p>vShield Edge, unlike VMsafe type firewalls (vShield App, Trend Micro Deep Security, Reflex Systems vTrust, Juniper vGW, etc.) sits between two vSwitch portgroups (whether on the same vSwitch or different vSwitches). In my case, different portgroups on two vSwitches for the external, and two portgroups on the same vSwitch for the internal side of the traffic.</p>
<p>However, there needs to be a few more things added to the diagram to make View work in a secure fashion. That is the View Connection Broker, and the View Security Server. These two would fall into different aspects of my network to protect them. Figure 2, shows their placement. But the key is why I placed these two services where I did.</p>
<div id="attachment_592" class="wp-caption aligncenter" style="width: 508px"><a href="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-11_13-52-02.png"><img class="size-full wp-image-592" title="vShield w/View Components" src="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-11_13-52-02-e1328986364380.png" alt="2012 02 11 13 52 02 e1328986364380 vSphere Upgrade Saga: vShield Edge Missing Manual" width="498" height="279" /></a>
<p class="wp-caption-text">Figure 2: vShield w/View Components</p>
</div>
<p>The View Security Server acts as a gateway between the desktops and the connection broker and the actual client. In essence, you get a SSL Tunnel from the View Client to the Security Server, and from there communication happens to broker, which hands off to the security server a desktop to which it can connect.  If the Security Server was not there, there would not be an SSL tunnel and the hand off would be between the client and the connection broker. Which means you would need to open quite a few more holes in your firewall. The connection broker could live within the View environment, but you really want to protect this server from the hostile environment of the desktops, so in essence the View trust zone (orange in figure 1 and 2) should only contain the desktops.</p>
<p>In our diagram are two vShield Edge (vSE) components, each with their own specific rules. The first is truly a bastion firewall, while the right most (in figure 2) is a way to keep the hostile desktop zone from reaching the internal VMs except on well known ports. But first, how to configure each Edge firewall so that you can actually use them. Just installing and turning on Edge is not enough.</p>
<p><strong>Step 1:</strong></p>
<p>Remember vShield is designed for security folks who understand firewalls, so a bit of information first:</p>
<div id="attachment_583" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-11_13-02-25.png"><img class="size-full wp-image-583" title="Edge Internals" src="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-11_13-02-25-e1328983385868.png" alt="2012 02 11 13 02 25 e1328983385868 vSphere Upgrade Saga: vShield Edge Missing Manual" width="500" height="118" /></a>
<p class="wp-caption-text">Figure 3: Edge Internals</p>
</div>
<p>There are two sides and really two sets of tables within an Edge firewall. The first is the External Interface, with its associated firewall. The second is an Internal Interface with its own associated firewall. You can go in and out of each of these interfaces. So for example, if you want to have traffic go from the external to the internal interfaces. You need to allow, Incoming on the External (into the external interface into the middle area of the Edge firewall), and Outgoing on the Internal interface (or into the internal network). There exists a middle area, which is between these two interfaces which is covered by Network Address Translation (NAT) and routing rules.</p>
<p><strong>Step 2:</strong></p>
<p>Set up the NAT, to allow all those IPs on the Internal interface to masquerade as the external IP address. This we would think would be setup by default, but that is not the case. You need to setup the source NAT your self. In other words, you need to modify the source address of the VMs inside the vSE to masquerade as the external IP address. The actual, external interface is blocked out in Figure 4, however lets assume it is W.X.Y.Z and we want ANY internal IP to map to W.X.Y.Z.</p>
<div id="attachment_585" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-11_13-08-321.png"><img class="size-full wp-image-585" title="vSE SNAT" src="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-11_13-08-321-e1328983858508.png" alt="2012 02 11 13 08 321 e1328983858508 vSphere Upgrade Saga: vShield Edge Missing Manual" width="500" height="190" /></a>
<p class="wp-caption-text">Figure 4: vSE SNAT</p>
</div>
<p><strong>Step 3:</strong></p>
<p>Setup external and internal firewall rules to allow the following services through:</p>
<ul>
<li>ICMP (to allow people to ping your external addresses to see if they are alive)</li>
<li>UDP based DNS (53/udp)</li>
<li>HTTP (80/tcp)</li>
<li>HTTPS (443/tcp)</li>
<li>PCoIP (4172/tcp and 4172/udp)</li>
<li>RDP (3389/tcp)</li>
</ul>
<p>You also want the same rules for outgoing so that you can respond to the requests appropriately.We will assume the internal IP address is A.B.C.D and the External is W.X.Y.Z. So what does this mean in vSE speak? Enter the following rules:</p>
<table style="border-color: #eee; margin: 8px auto; width: 100%; border-collapse: collapse; line-height: 14px; font-size: 10px; font-face: Ariel;" border="2" cellspacing="1" cellpadding="3">
<tbody>
<tr style="background-color: #eee;">
<td style="text-align: left;"><strong>Source</strong></td>
<td style="text-align: left;"><strong>Source Port</strong></td>
<td style="text-align: left;"><strong>Destination</strong></td>
<td style="text-align: left;"><strong>Dest Type</strong></td>
<td style="text-align: left;"><strong>Interface</strong><br />
<strong> Direction</strong></td>
</tr>
<tr>
<td>A.B.C.D/24</td>
<td></td>
<td>Any</td>
<td>icmp</td>
<td>Int:In</td>
</tr>
<tr>
<td>W.X.Y.Z/32</td>
<td></td>
<td>Any</td>
<td>icmp</td>
<td>Ext:Out</td>
</tr>
<tr>
<td rowspan="1" colspan="1">A.B.C.D/24</td>
<td rowspan="1" colspan="1">Any</td>
<td rowspan="1" colspan="1">Any</td>
<td rowspan="1" colspan="1">DNS-UDP</td>
<td rowspan="1" colspan="1">Int:In</td>
</tr>
<tr>
<td rowspan="1" colspan="1">W.X.Y.Z/32</td>
<td rowspan="1" colspan="1">Any</td>
<td rowspan="1" colspan="1">Any</td>
<td rowspan="1" colspan="1">DNS-UDP</td>
<td rowspan="1" colspan="1">Ext:Out</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>HTTP</td>
<td>Ext:In</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>HTTP</td>
<td>Ext:Out</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>HTTP</td>
<td>Int:In</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>HTTP</td>
<td>Int:Out</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>HTTPS</td>
<td>Ext:In</td>
</tr>
<tr>
<td> Any</td>
<td>Any</td>
<td>Any</td>
<td>HTTPS</td>
<td>Ext:Out</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>HTTPS</td>
<td>Int:In</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>HTTPS</td>
<td>Int:Out</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>tcp:4172</td>
<td>Ext:In</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>tcp:4172</td>
<td>Ext:Out</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>tcp:4172</td>
<td>Int:In</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>tcp:4172</td>
<td>Int:Out</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>RDP</td>
<td>Ext:In</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>RDP</td>
<td>Ext:Out</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>RDP</td>
<td>Int:In</td>
</tr>
<tr>
<td>Any</td>
<td>Any</td>
<td>Any</td>
<td>RDP</td>
<td>Int:Out</td>
</tr>
</tbody>
</table>
<p>So why 4 rules for every port we want opened? Remember Step 1, where we have two distinct interfaces? We need to deal with each interface separately. We allow these ports In if we also need to allow them Out, so that we have continued communication.  We could also try to set up the rules like we do for icmp and DNS-UDP, but  I found all 4 are needed for each port.</p>
<p><strong>Step 4:</strong></p>
<p>Use the default &#8216;block all&#8217; Traffic Police to anything not already listed as open. During testing you may have to set the Traffic Policy to allow, but we really want this to be Blocked per Figure 5.</p>
<div id="attachment_587" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-11_13-34-23.png"><img class="size-full wp-image-587" title="Traffic Policy" src="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-11_13-34-23-e1328985324646.png" alt="2012 02 11 13 34 23 e1328985324646 vSphere Upgrade Saga: vShield Edge Missing Manual" width="500" height="55" /></a>
<p class="wp-caption-text">Figure 5: Traffic Policy</p>
</div>
<p><strong>Step 5:</strong></p>
<p>Allow Communication to the View Desktops. We do this via a route. The View desktops sit on the network I.J.K.0/24, and the Internal side of the vSE is A.B.C.254. So the static route looks like Figure 6. The route says to take all traffic destined for I.J.K.0/24 and pass it through the A.B.C.254 address. Which happens to be the</p>
<div id="attachment_588" class="wp-caption aligncenter" style="width: 508px"><a href="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-11_13-36-48.png"><img class="size-full wp-image-588" title="Static Route" src="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-11_13-36-48-e1328985617748.png" alt="2012 02 11 13 36 48 e1328985617748 vSphere Upgrade Saga: vShield Edge Missing Manual" width="498" height="136" /></a>
<p class="wp-caption-text">Figure 6: View Static Route</p>
</div>
<p><strong>Step 6:</strong></p>
<p>Using vShield App or vShield Edge, allow the following to communicate from the View Desktops and Security Server:</p>
<ul>
<li>Active Directory</li>
<li>Internal DNS</li>
<li>View Connection Broker</li>
<li>and Ultimately my internal vCloud Director</li>
</ul>
<p><strong>Is that All?</strong></p>
<p>But is this everything? Actually it could be but if you look closely at Figure&#8217;s 1 and 2, you will notice that that there is no firewall between the View Zone  and the Internal Zone, well not one you can see. The first approach to this was to use vShield App to keep the View Zone from the Internal Zone, but you can also use a vShield Edge appliance to achieve the same behavior. So that you end up with the following overall design of an existing environment (Figure 7).</p>
<div id="attachment_598" class="wp-caption aligncenter" style="width: 508px"><a href="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-12_10-24-35.png"><img class="size-full wp-image-598" title="Internal Protected from View Desktops using vShield Edge" src="http://www.astroarch.com/wp-content/uploads/2012/02/2012-02-12_10-24-35-e1329062034324.png" alt="2012 02 12 10 24 35 e1329062034324 vSphere Upgrade Saga: vShield Edge Missing Manual" width="498" height="278" /></a>
<p class="wp-caption-text">Figure 7: Internal Protected from View Desktops using vShield Edge</p>
</div>
<p>What is very interesting here, is that vShield Edge can be used to protect bastions, but also to create separation between various trust zones while limiting access between the view desktops and the real internal aspects of your network.</p>
<p>Thanks to @vTexan and his <a href="http://www.vtexan.com/category/view5install/" target="_blank">VMware View 5 Install Guide</a>. Without this helpful page, I would not have been able to proceed with my own implementation. Please be aware, however, that the steps @vTexan gives are not necessarily the most secure. Adding in the properly placed firewalls is just one aspect of a secure view implementation, but there is also the proper choice of role based access controls (RBAC) for active directory. The View Connection Broker, requires Active Directory access, but should be limited to a non-domain admin for a newly created View only OU into which the desktops should go. Why, because View needs to be able to modify all aspects of Active Directory for the desktops, so the permissions should be such that the Active Directory user used by View should be limited in scope on what it can modify.</p>
<p><strong>An Aside</strong></p>
<p>I tried to use vShield App to protect the View trustzone from the Internal trust zone but vShield App fails badly if the vShield App appliances suddenly become unavailable. Given that I had 3 such failures, in 8 hours, that were fairly catastrophic, I chose to use on vSE to protect my trust zones.</p>
<p><strong>Conclusion</strong>:</p>
<p>So now, we have a fully protected View environment using several vSE&#8217;s to provide adequate protection. In addition, we now have a cook book of steps necessary to get vShield Edge up and running (Steps 1-4). Lastly, we have expanded those steps to those required to allow View to communicate properly from the Security Server to the VMs in question.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astroarch.com/2012/02/vsphere-upgrade-saga-vshield-edge-missing-manual/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vSphere Upgrade Saga: Fixing VMware VDR</title>
		<link>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-fixing-vmware-vdr/</link>
		<comments>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-fixing-vmware-vdr/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 21:00:10 +0000</pubDate>
		<dc:creator>Edward Haletky</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Virtualization Security]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Recovery]]></category>
		<category><![CDATA[VDR]]></category>
		<category><![CDATA[Veeam]]></category>
		<category><![CDATA[VMware Data Recovery]]></category>
		<category><![CDATA[vSphere Upgrade Saga]]></category>

		<guid isPermaLink="false">http://www.astroarch.com/?p=560</guid>
		<description><![CDATA[I have been running VMware Data Recovery (VDR)  through its paces for quite a while now and while it works, I am not sold on it yet. I have had way too many problems related to the target datastore. Specifically, a continual failed integrity check. Everything ran fine for a while and then poof, a failure, and just when I needed it the most.  It has been a very frustrating state of affairs. But I finally found a solution that is working for now. In the meantime I will be running Veeam Backup and Replication, Quest vRanger, PHD Virtual, and several other backup tools through their paces.]]></description>
			<content:encoded><![CDATA[<p>I have been running VMware Data Recovery (VDR)  through its paces for quite a while now and while it works, I am not sold on it yet. I have had way too many problems related to the target datastore. Specifically, a continual failed integrity check. Everything ran fine for a while and then poof, a failure, and just when I needed it the most.  It has been a very frustrating state of affairs. But I finally found a solution that is working for now. In the meantime I will be running Veeam Backup and Replication, Quest vRanger, PHD Virtual, and several other backup tools through their paces.<span id="more-560"></span> My goal is just to run and forget until I need it. That to me implies the following:</p>
<ul>
<li>Automated backup during a predefined backup window</li>
<li>Notification of ANY issues immediately</li>
<li>Automated backup testing</li>
</ul>
<p>So what was the problem with VDR? The integrity check continually failed and therefore the backups continually failed. Yet, it worked for a while! Which was the frustrating part. The solution was the following:</p>
<ul>
<li>Unmount the Destination (which is a Windows VM that talks to my DISC GmbH Bluray backup library for long term storage)</li>
<li>Remount using the Share name, I previously created instead of the F$ mechanism available to windows</li>
<li>Edit all my backup jobs to point to the new Destination</li>
<li>Test by backing up critical components</li>
</ul>
<p>I believe that VDR does not understand mount points ending in $, which could be given that it is a Linux VM and $ is a special character in nearly every shell and 4th generation language.</p>
<p>So now, I wait until I know for certain this will work, in the meantime I will be testing other tools. Backup failures are NOT something I like to see. Ever.</p>
<p>UPDATE: This was definitely the solution, been running strong for quite a while.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-fixing-vmware-vdr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vSphere Upgrade Saga: Setting up a RHEL iSCSI Server</title>
		<link>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-setting-up-a-rhel-iscsi-server/</link>
		<comments>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-setting-up-a-rhel-iscsi-server/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 13:07:38 +0000</pubDate>
		<dc:creator>Edward Haletky</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Virtualization Security]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[RHEL]]></category>
		<category><![CDATA[scsi-target-utils]]></category>
		<category><![CDATA[vSphere 5]]></category>
		<category><![CDATA[vSphere Upgrade Saga]]></category>

		<guid isPermaLink="false">http://www.astroarch.com/?p=554</guid>
		<description><![CDATA[When using the RHEL scsi-target-utils, there is some special mojo needed when connecting to vSphere 5 (perhaps any version of vSphere). Unlike the iSCSI Enterprise Target (IET), the new service makes use of modern iSCSI targeting techniques, and these did not work as expected with vSphere out of the box.  For a few days, I was confused as to what was happening, but not anymore, so now my iSCSI server for my vSphere Environment is back in running shape after its hardware upgrade, new operating system, and upgraded disk drives.]]></description>
			<content:encoded><![CDATA[<p>When using the RHEL scsi-target-utils, there is some special mojo needed when connecting to vSphere 5 (perhaps any version of vSphere). Unlike the iSCSI Enterprise Target (IET), the new service makes use of modern iSCSI targeting techniques, and these did not work as expected with vSphere out of the box.  For a few days, I was confused as to what was happening, but not anymore, so now my iSCSI server for my vSphere Environment is back in running shape after its hardware upgrade, new operating system, and upgraded disk drives.<span id="more-554"></span>I use a whitebox RHEL 6 installation as a NFS, iSCSI Server, KVM Server, vCLI, Perl SDK, and for VMware Workstation. Not to mention my myriad development projects for virtualization.  As an iSCSI server, I need a minimal of storage to fit my entire disk environment as this server becomes a storage vMotion target when I have to upgrade my production SAN. As such, it has 4 shiny new 2TB disks controlled via LVM. LVM is setup to stripe across all 4 disks, thereby affording me slightly better performance. In addition, there is a 1GB dedicated link to the iSCSI component of this server through a switch dedicated to iSCSI. There is a very cool feature of HP Flex-10 in my BladeSystem, it recognizes iSCSI traffic and will optimize such traffic.</p>
<p>The setup of the scsi-target-utils was pretty straight forward, I pointed the /etc/tgt/targets.conf to my 7.8GB LVM LUN for use for iSCSI. Which meant I had to use VMFS v5 to access it all. Which is my intention. But then that is where several issues occured:</p>
<ul>
<li>vSphere 5 requires the iSCSI vmkernel port to hang off a dedicated vSwitch and not a vNetwork Distributed Switch (vDS). This is a change from vSphere 4.</li>
</ul>
<p>This predicated a slight change to my networking which led to the creation of a dedicated network just for iSCSI and the use of  one of my free Flex-10 NICs just for iSCSI. Unfortunately, in order to change the networking within the Server Profile within Virtual Connect for Flex-10, you first have to shutdown the node. Since my server upgrade, I have more than enough memory to run everything my nodes so that powering off one will not adversely effect anything. So, I went through the process of upgrading server profiles, putting nodes into maintenance mode, shutting them down, saving the virtual connect profile, rebooting the node and viola it was done. If I had more than 4 nodes, this would have been a week end nightmare. How bigger shops manage this is with quite a bit of scripting.</p>
<ul>
<li>vSphere 5 would not allow me to migrate my vmkernel device from a vDS back to a vSwitch.</li>
</ul>
<p>The second problem I faced was that I had to recreate all my vmkernel ports for iSCSI instead of migrating them off the vDS on which they were set. Because there was no migration path available. You can migrate from a vSwitch but apparently not back to one.</p>
<ul>
<li>vSphere 5 required me to bind a vmkernel device for iSCSI utilization.</li>
</ul>
<p>Not a huge issue, but it is a definite change from setting up iSCSI with older versions of vSphere, where all you needed to do was have the proper IP address and it would route appropriately.</p>
<ul>
<li>vSphere 5 good not see the iSCSI Server yet, the iSCSI Server could ping the vmkernel devices.</li>
</ul>
<p>This is where the mojo comes in. The first problem I had was iptables, it was set to deny iSCSI traffic as well as iSNS traffic. That was fixed temporarily by disabling iptables. However, it still would not connect. The solution ended up being a change to how iSNS traffic worked. I disabled the iSNSAccessControl parameter from On to Off, restarted iSNS and suddenly things started to work.</p>
<p>My final /etc/tgt/targets.conf file consists of the following:</p>
<blockquote>
<pre>default-driver iscsi
iSNSServerIP W.X.Y.Z
iSNSServerPort 3205
iSNSAccessControl Off
iSNS On
&lt;target iqn.2008-09.com.example:server.target1&gt;
        backing-store /dev/vg_iscsi/lv_iscsi
        lun 1
&lt;/target&gt;</pre>
</blockquote>
<p>And for my security settings I ended up adding these rules to my /etc/sysconfig/iptables file:</p>
<blockquote>
<pre>-A INPUT -m state --state NEW -m tcp -p tcp -s W.X.Y.0/24 --dport 3260 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -s W.X.Y.0/24 --dport 3205 -j ACCEPT</pre>
</blockquote>
<p>Now I have a functioning iSCSI server with close to 8TBs available for use by vSphere 5. It will come in handy for some work I have to do on my SAN. Oh, and the hardware upgrade for this all purpose node? 32GBs of Memory plus a Sandybridge quad core running very fast. The 1GB dedicated link I am using is through a switch that will only be used for iSCSI, so all my iSCSI accesses are segregated from the rest of my network. That should help with security as well as performance!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-setting-up-a-rhel-iscsi-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vSphere Upgrade Saga: Migrating Existing Hosts to vSphere 5, Host Profiles not Enough!</title>
		<link>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-migrating-existing-hosts-to-vsphere-5-host-profiles-not-enough/</link>
		<comments>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-migrating-existing-hosts-to-vsphere-5-host-profiles-not-enough/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 13:46:05 +0000</pubDate>
		<dc:creator>Edward Haletky</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Host Profiles]]></category>
		<category><![CDATA[vCenter]]></category>
		<category><![CDATA[vSphere 5 Upgrade]]></category>
		<category><![CDATA[vSphere Upgrade Saga]]></category>
		<category><![CDATA[VUM]]></category>

		<guid isPermaLink="false">http://www.astroarch.com/?p=544</guid>
		<description><![CDATA[This is the week end I move all my existing hosts to vSphere 5, to make way for some other work. Actually, I will migrate 2 of 3 hosts, while leaving one host at vSphere 4, more later on why. While Host Profiles has greatly improved, it is still not sufficient when updating and migrating nodes that use physical virtual NIC devices such as HP Flex-10. Why? Because they want to know the MAC Address when you apply the profile. This is a chicken and the egg sort of approach to Host Profiles.]]></description>
			<content:encoded><![CDATA[<p>This is the week end I move all my existing hosts to vSphere 5, to make way for some other work. Actually, I will migrate 2 of 3 hosts, while leaving one host at vSphere 4, more later on why. While Host Profiles has greatly improved, it is still not sufficient when updating and migrating nodes that use physical virtual NIC devices such as HP Flex-10. Why? Because they want to know the MAC Address when you apply the profile. This is a chicken and the egg sort of approach to Host Profiles.<span id="more-544"></span>The Process seems simple:</p>
<ul>
<li>Install vSphere 5</li>
<li>Join to vCenter</li>
<li>Apply Host Profile</li>
</ul>
<p>Yet it was not that simple.  I found that the Host Profile was asking for a Mac Address which I did not know, nor could I discover as it was not just asking for any Mac Address but one produced by ESX for a VMware vmknic. The solution was not obvious but something easily handled.</p>
<ul>
<li>Using the dvSwitch Switch Editor add the hosts in by hand.</li>
<li>Using the Manage Virtual Adapters Editor go to each dvSwitch and add in the appropriate vmkernel devices (I had 4)</li>
</ul>
<p>Now I thought I was ready to apply the profile, but not yet!</p>
<ul>
<li>Present any Storage Devices to the new Node</li>
<li>Rescan the Storage for LUNs and Datastores</li>
<li>Change the name of Datastore1 to be hostname:Datastore1 to be in keeping with my naming convention</li>
</ul>
<p>Now, apply the profile.</p>
<p>There were still a few errors with the profile about a missing LUN, but no LUN is actually missing. Editing the profile to remove the offending LOCAL LUN did not change the behavior. Nor can I use Host Profiles to add my local administrative user anymore.</p>
<p>Following along the next steps are:</p>
<ul>
<li>Attach a VMware Upgrade Manager Profile</li>
<li>Scan for Updates</li>
<li>Remediate any Updates</li>
</ul>
<p>So how do you get 100% Host Profile Compliance? I am not sure you can. All the local drives within HP blades actually show up as remote drives, and since they are not the same across the board, the profile can never be compliant. However, the host profile can be adjusted by using the steps in <a href="http://kb.vmware.com/kb/2002488">VMware KB 2002488</a>. With this change, my hosts are now compliance once more. However, what this does, is disable both the Pluggable Storage Architecture (PSA) configuration and the Path Selection Policy (PSP) Configuration for all your local and remote devices. Any PSA and PSP changes will now need to either be done by hand or scripted in some fashion.</p>
<p>So why not upgrade all 4 nodes to vSphere 5 at this time? Support and Licensing reasons. I still have customers using vSphere 4, and having at least one node with that level will be helpful. The other is for Licensing reasons, I would need at least two more licenses for the 4th node. But this does lead to other issues. I cannot yet upgrade to VMFS-5, VM Hardware v8, or upgrade VMware Tools yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-migrating-existing-hosts-to-vsphere-5-host-profiles-not-enough/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vSphere Upgrade Saga: Adding New Host Crashes vCenter</title>
		<link>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-adding-new-host-crashes-vcenter/</link>
		<comments>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-adding-new-host-crashes-vcenter/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 19:17:16 +0000</pubDate>
		<dc:creator>Edward Haletky</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Full Disk]]></category>
		<category><![CDATA[MSSQL]]></category>
		<category><![CDATA[No room on DB Server]]></category>
		<category><![CDATA[vCenter Crashes]]></category>
		<category><![CDATA[vSphere Upgrade Saga]]></category>

		<guid isPermaLink="false">http://www.astroarch.com/?p=542</guid>
		<description><![CDATA[As you know from my previous post, I just added a new blade to my environment. But everything was not as clean as I desired. For some reason when I went to move a existing node from one vSphere Cluster to another, vCenter crashed. I thought it was the state in which I left the node, but alas it was not. So what would make vCenter Crash, VMware Update Manager stop showing up as a plugin, and other management tools suddenly stop working, when they worked fine before?]]></description>
			<content:encoded><![CDATA[<p>As you know from my previous post, I just added a new blade to my environment. But everything was not as clean as I desired. For some reason when I went to move a existing node from one vSphere Cluster to another, vCenter crashed. I thought it was the state in which I left the node, but alas it was not. So what would make vCenter Crash, VMware Update Manager stop showing up as a plugin, and other management tools suddenly stop working, when they worked fine before?<span id="more-542"></span>It really did not take a lot of effort to find the culprit, but I was surprised that none of the management tools actually told me outright the problem.</p>
<blockquote><p>Which was that the database server I was using had a <strong>full drive</strong>.</p></blockquote>
<p>None of my current management tools actually told me this, instead they went on running like everything was fine, when clearly it was not. So which tools did not show this information? VMware vCops Advanced, Solarwinds VMAN, and vKernel to mention just a few. But they do show issues with other nodes that had full disks, so I wonder what is so special about a Windows 2008 R2 Server running MSSQL?</p>
<p>This is the type of Alert I would expect to be emailed to me from all these tools. Yet, no email was sent.</p>
<p>The solution was simple, free up and add disk space to the VM. I removed from MSSQL a few old and unused databases, which gave me just enough breathing room to maintain my systems. The next step was to add more disk space. I did this by expanding the virtual disk and adding space to it using the build in Windows 2008 disk extend capability.</p>
<p>Now to find out why the tools did not report this accurately or even email me when this happened. Perhaps because the server was full and no writes could take place? Which means the tools need to change for such critical issues?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-adding-new-host-crashes-vcenter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vSphere Upgrade Saga: New Blade, More Memory, More Problems</title>
		<link>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-new-blade-more-memory/</link>
		<comments>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-new-blade-more-memory/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 15:46:26 +0000</pubDate>
		<dc:creator>Edward Haletky</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[BL460c]]></category>
		<category><![CDATA[c3000]]></category>
		<category><![CDATA[Virtual Connect]]></category>
		<category><![CDATA[vSphere Upgrade Saga]]></category>

		<guid isPermaLink="false">http://www.astroarch.com/?p=538</guid>
		<description><![CDATA[I recently purchased my 4th blade and enough memory to bring 3 of my nodes to 3x what they had before. However, this upgrade was not without its issues. Memory upgrades were no issue, but adding the 4th blade to my c3000 was a pretty significant issue.]]></description>
			<content:encoded><![CDATA[<p>I recently purchased my 4th blade and enough memory to bring 3 of my nodes to 3x what they had before. However, this upgrade was not without its issues. Memory upgrades were no issue, but adding the 4th blade to my c3000 was a pretty significant issue.<span id="more-538"></span>Memory upgrades go like this:</p>
<ul>
<li>Place node in Maintenance mode, evacuating all running VMs</li>
<li>Power down node</li>
<li>Remove node, add in/exchange memory modules, replace node</li>
<li>Power on node, using ILO watch to be sure new memory was found properly</li>
<li>Exit Maintenance mode</li>
</ul>
<p>It was seamless, and once more done with Zero downtime.</p>
<p>However, adding in my new BL460c G7 into my HP C3000 enclosure was not that simple. Those steps started with:</p>
<ul>
<li>Place BL460c in Slot 4</li>
<li>Power On</li>
<li>Error ensued about placement of the riser card.</li>
<li>Moved Riser card, Power on</li>
<li>All was great</li>
</ul>
<p>Okay so far it is pretty standard.</p>
<p>First Gotcha: The G7 blades include an ILO 3, which has several new security controls, all goodness, but to apply the ILO licenses to use the advanced features (like virtual media), I had to apply the license. To do this, you needed to Trust All to apply the license. So we moved on from here:</p>
<ul>
<li>Change ILO Trust mode to Trust by Certificate and import the HP SIM Server certificate.</li>
<li>Mount the FW 9.30 ISO and upgrade the blade firmware using virtual media</li>
<li>On Reboot set the Dynamic Power Mode per the the article <a title="vSphere Upgrade Saga: Staging Upgrade to vSphere 5" href="http://www.astroarch.com/2011/11/vsphere-upgrade-saga-staging-upgrade-to-vsphere-5/">vSphere Upgrade Saga: Staging Upgrade to vSphere 5</a>.</li>
</ul>
<p>Second Gotcha: To configure the P410i in the box, be sure to press any key to see extra Boot messages, else you will NOT be able to see the time to press F8 (Fn-Command-F8 if trying to use a Mac Book Pro via the Remote Desktop Client). It took installing vSphere 5 on this node to realize I had no disk on which to install.</p>
<p>Third Gotcha: Once everything was installed, I attempted to apply a Virtual Connect Server Profile so that the blade can properly access my networking. Even though the blade was found within the Enclosure within HP SIM, virtual connect could NOT see the enclosure. Actually, the Onboard Administrator said it could not participate in Virtual Connect.</p>
<p>Fourth Gotcha: The device would fail to reboot due to a power issue, which also affected the blade in Slot 3.</p>
<p>A bit of searching and I hit upon a possible solution: Move the blades in Slot 3 and 4 to Slots 5 and 6. Which means all my blades are now in the same cooling Zone within the chassis. Even with 6 Fans, the c3000 has two Zones that encompass more than just cooling.</p>
<p>Now, continuing with my new blade install:</p>
<ul>
<li>Join new blade to vCenter Cluster</li>
<li>Apply vSphere 5 Profile</li>
<li>&#8230;</li>
</ul>
<p>Viola that worked. Virtual Connect Manager could see the blade, the server profile could be applied. Now, I begin to wonder what will happen when I put in another blade, but I will cross that bridge when I get there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-new-blade-more-memory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vSphere Upgrade Saga: It is All About EVC</title>
		<link>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-all-about-evc/</link>
		<comments>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-all-about-evc/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 22:17:59 +0000</pubDate>
		<dc:creator>Edward Haletky</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[VMware EVC]]></category>
		<category><![CDATA[vSphere Upgrade Saga]]></category>
		<category><![CDATA[Westmere]]></category>

		<guid isPermaLink="false">http://www.astroarch.com/?p=532</guid>
		<description><![CDATA[I was a little confused about EVC recently, and hopefully this will clear it up for many others. My vSphere 5 Upgrade has been halted due to work, family, and my travel schedule. I wanted to put out one more staging tip for vSphere 5 with respect to EVC. This will come in handy later as I add in a new blade with a pair of Intel Westmere chips so I can play with AES&#038;I as well as the new Intel TXT functionality.  ]]></description>
			<content:encoded><![CDATA[<p>I was a little confused about EVC recently, and hopefully this will clear it up for many others. My vSphere 5 Upgrade has been halted due to work, family, and my travel schedule. I wanted to put out one more staging tip for vSphere 5 with respect to EVC. This will come in handy later as I add in a new blade with a pair of Intel Westmere chips so I can play with AES&amp;I as well as the new Intel TXT functionality.  <span id="more-532"></span></p>
<p>My issue with EVC stemmed from trying to enable it on an existing set of nodes so that I can easily transfer VMs between them. Exactly how EVC was planned to be used. However, in my environment somewhere along the line EVC was disabled. To enable it, I had to find the setting that would enable. I tried to first enable it for the chipset I had, that did not work. Then I enabled it for the previous chipset, of course that did not work. The solution was to enable it for the chipset I did not already have. In other words, I am running the chipset before Westmere, so in order for EVC to enable on my cluster, I had to set EVC mode to be Westmere chips. In other words, I am masking off all Westmere special functions.</p>
<p>This is what confused me, we all know we use EVC to mask off what we do not want, but if you have an existing cluster, you need to max off the chipset ABOVE the one you are on. That is, unless you desire to shutdown all your existing VMs, set EVC to the mode you desire and then power them al back on.</p>
<p>That was not something I was willing to do.</p>
<p>So, now I add to my pre-stage steps, setting EVC to mask off chipset functionality above what I already have. This will become a fairly major requirement when I add a Westmere based blade into my cluster.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astroarch.com/2012/01/vsphere-upgrade-saga-all-about-evc/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>vSphere Upgrade Saga: Staging Upgrade to vSphere 5</title>
		<link>http://www.astroarch.com/2011/11/vsphere-upgrade-saga-staging-upgrade-to-vsphere-5/</link>
		<comments>http://www.astroarch.com/2011/11/vsphere-upgrade-saga-staging-upgrade-to-vsphere-5/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 21:48:07 +0000</pubDate>
		<dc:creator>Edward Haletky</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[BL460c]]></category>
		<category><![CDATA[c3000]]></category>
		<category><![CDATA[ESX]]></category>
		<category><![CDATA[ESXi]]></category>
		<category><![CDATA[HP BladeSystem]]></category>
		<category><![CDATA[vCenter]]></category>
		<category><![CDATA[vSphere 5]]></category>
		<category><![CDATA[vSphere Upgrade Saga]]></category>

		<guid isPermaLink="false">http://www.astroarch.com/?p=509</guid>
		<description><![CDATA[I have done all my homework, planned my upgrade to vSphere 5, ensured my licenses are available and all that, so now it is time to stage the upgrade using my spare node.Why stage the upgrade and not perform it? By staging using my spare node, I am able to test to see if firmware and other upgrades work appropriately. This is crucial to the success of the upgrade of the other nodes. In essence, all other subsystems are upgraded before I hit the production nodes, which means vCenter is also upgraded but first I backup my databases, etc. As well as the VM running vCenter.]]></description>
			<content:encoded><![CDATA[<p>I have done all my homework, planned my upgrade to vSphere 5, ensured my licenses are available and all that, so now it is time to stage the upgrade using my spare node. Why stage the upgrade and not perform it? By staging using my spare node, I am able to test to see if firmware and other upgrades work appropriately. This is crucial to the success of the upgrade of the other nodes. In essence, all other subsystems are upgraded before I hit the production nodes, which means vCenter is also upgraded but first I backup my databases, etc. As well as the VM running vCenter.</p>
<p>Here are the steps I followed:</p>
<p><strong>Step 0</strong>: Review any updates to firmware for my HP BladeSystem c3000 just in case something new came out since the last time I looked. There was a new upgrade for the Onboard Administrator.</p>
<p><strong>Step 1</strong>: Given this upgrade was available the first step was to upgrade the Onboard Administrator firmware, which I could do directly talking to the Onboard Administrator web interface. Quite simple, and easy. Unlike previous Onboard Administrator ungrades there was no issues with loosing power or connectivity to any of the blades. While doing this, I made out a shopping list to ensure even more redundancy: Another Onboard Administrator as well as a replacement Insight Display Module.</p>
<p><strong>Step 2</strong>: Upgrade the Flex10 Virtual Connect firmware. This is required to use vSphere 5. You must upgrade any Flex10/Virtual connect firmware to version 3.30 in order to use vSphere 5. Step 2 was to upgrade the secondary Flex10 first using the command line Virtual Connect Support Utility (VCSU) using the <strong>update</strong> command.</p>
<p><strong>Step 3</strong>: Upgrade the primary Flex10 Virtual Connect firmware. There was an oddness with this upgrade using the VCSU, and that was the VM running the VCSU lost connectivity which seemed to cause a reboot. So something inside the VCSU failed and rebooted, which is really a horrible failure mechanism. However, I only lost network connectivity for a few seconds. Which was also much better than the last Flex10 Upgrade I did.</p>
<p><strong>Step 4</strong>: Upgrade the firmware within my spare blade using the HP Firmware DVD v9.30. There was an ILO update, so to be sure all firmware was upgraded, I booted from the DVD twice just to be sure I caught everything.</p>
<p><strong>Step 5</strong>: Install vSphere 5 ESXi onto the spare blade just upgraded. The trick is to ensure you pick the proper disk, in this case local disk instead of a SAN drive. I double checked this before proceeding. The install is so much easier than that of ESX.</p>
<p><strong>Step 6</strong>: Configure the Management Network for the spare blade to not use DHCP but to use the provided IP Address, Netmask, and hostname.</p>
<p><strong>Step 7</strong>: Decided to upgrade my existing vCenter instead of using the Linux appliance, mainly because I already have a Windows configuration for vCenter and the Database server.</p>
<p><strong>Step 8</strong>: Backup your vCenter Database and SSL certificates. vCenter 5 will remind you of this as well and nicely ask you to ensure you are happy with your backup.</p>
<p><strong>Step 9</strong>: Perform vCenter Upgrade</p>
<p><strong>Step 10</strong>: Perform vCenter Client Upgrade</p>
<p><strong>Step 11</strong>: Install vSphere Web Client for new License Reporting functionality. This required me to find out which process held port 9443 open, which turned out to be something running Java. However, what I do not know. There was a Java update to be made, once I did that, this error went a way. So I went through and removed all my third party tools from the vCenter server which eventually fixed the issue. A part of this step was to register your vCenter Server with the Web Client Server so that it can communicate.</p>
<p><strong>Step 12</strong>: Upgrade vCenter Update Manager. Once more this is a polite reminder to make a backup first of your VUM database which requires you to select the I am happy with my backup checkbox. I find that a great improvement. While VUM upgraded fine, it did say it wanted to reboot my host, eventually that will happen as a matter of course. Need to test if everything comes back up on boot.</p>
<p><strong>Step 13</strong>: Install all the vCenter Support Tools, Dump Collector, Syslog Collector, and Auto Deploy but not the Authentication Proxy. These are all new for vCenter 5. The key to these installs, is that if it asks, yes you want the Integrated VMware vCenter Server Installation. The Authentication proxy requires IIS which could cause issues so we hold off on that for now. Now reboot your vCenter server and make sure everything runs.</p>
<p><strong>Step 14</strong>: Reconnect the ESX hosts to vCenter which deployed the new vCenter Agents onto the hosts.</p>
<p><strong>Step 15</strong>: Create a new cluster so that I can enable EVC mode for Nahalem or better processors. This will help with new blades once they arrive. Somehow EVC was disabled on my other nodes.</p>
<p><strong>Step 16</strong>: Configure VUM and import the vSphere 5 ESXi image for later use. The VUM the client for some reason did not enable by default which took going to VMware&#8217;s KB Article <a href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=1015223">1015223</a> to solve.</p>
<p><strong>Step 17</strong>: Configure the newly installed spare node using the old nodes Host Profile. If you have Enterprise Plus licenses the use of Host Profiles for this type of staging is incredibly useful. Even though I am moving from ESX to ESXi, use of Host Profiles to at least get the network configuration correct is very important.  If you do not have Enterprise Plus, you can use an Evaluation Mode to do this. The gotcha here is that I am moving from ESX to ESXi so some of the Host Profile elements will not apply. So not only do I do a clone of the Host Profile, apply that profile, but I need to delete and recreate the Host Profile once the spare node is fully configured else there will be compliance issues.</p>
<p><strong>Step 18</strong>: Reboot Node and enter the BIOS to set HP Power Profile to Custom and HP Power Regulator to OS Control Mode per VMware KB Article <a href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;cmd=displayKC&amp;externalId=1018206">1018206</a><strong>.</strong> Save and reboot. You can do this as a part of any of the node upgrade steps previously mentioned, but without this you will not be able to take advantage of the power controls within vSphere 5.</p>
<p><strong>Step 19</strong>: Upgrade vSphere 5. This is a good test of your VUM install from Step 16. As of this writing there are at least 2 patches for vSphere 5. One requires a reboot.</p>
<p>At the moment, the system is staged for migration of VMs and upgrade of the other nodes. Staging such an upgrade is important as now we know that the firmware upgrades work, I can enable the proper EVC mode, and the other systems are still manageable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astroarch.com/2011/11/vsphere-upgrade-saga-staging-upgrade-to-vsphere-5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress: Optimizing Steps</title>
		<link>http://www.astroarch.com/2011/10/wordpress-optimizing-steps/</link>
		<comments>http://www.astroarch.com/2011/10/wordpress-optimizing-steps/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 13:27:20 +0000</pubDate>
		<dc:creator>Edward Haletky</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Application Performance]]></category>
		<category><![CDATA[Better Wordpress Minify]]></category>
		<category><![CDATA[W3 Total Cache]]></category>
		<category><![CDATA[Wordpress Performance]]></category>

		<guid isPermaLink="false">http://www.astroarch.com/?p=495</guid>
		<description><![CDATA[As you know, I have been working with my Wordpress installation to improve security, but also to improve site optimization and speeds to download, etc. In this tools such as Google Page Speed and Yahoo YSlow have been incredibly useful. My goal has been to increase the Page Speed and Yahoo YSlow scores to as high as possible. This takes quite a bit of effort to achieve, I had some failed starts, bad plugins, and the need to code things to optimize the site more. So here is how I achieved my current score of 82/100 with Pagespeed. More work will be done with the ultimate goal of achieving 100/100, but that will take quite a bit of coding it appears.]]></description>
			<content:encoded><![CDATA[<p>As you know, I have been working with my WordPress installation to <a href="http://www.astroarch.com/?p=477">improve security</a>, but also to improve site optimization and speeds to download, etc. In this tools such as Google Page Speed and Yahoo YSlow have been incredibly useful. My goal has been to increase the Page Speed and Yahoo YSlow scores to as high as possible. This takes quite a bit of effort to achieve, I had some failed starts, bad plugins, and the need to code things to optimize the site more. So here is how I achieved my current score of 82/100 with Pagespeed. More work will be done with the ultimate goal of achieving 100/100, but that will take quite a bit of coding it appears.<span id="more-495"></span></p>
<p>First I should state every site is different and what I do for my site may or may not work for yours, however, sharing this information should help you to decide on how to proceed. First, I have a constant battle and need to do the following on a regular basis:</p>
<ul>
<li>Optimize and resize my images. Pagespeed and Yslow not only want you to specify image width and height attributes within the HTML <strong>img</strong> tag but they also want those images to be already scaled to the specified width and height as well as perform further lossless compression on image files.</li>
<ul>
<li>Use Google Pagespeed to optimize my unoptimized images for me, then replace the ones on the site with the optimized ones. You have to be careful with extensions as Pagespeed will change the extensions and names of the files to what it wants, but you need to copy them over using the appropriately named files.</li>
<li>To properly specify image height and width attributes, I ended up modifying some custom plugins to always output the width and height tags.</li>
<li>Modified the theme (or create a child theme) to call my customer plugin functions. You could on the other hand apply this logic to the entire content, but instead I applied it to just the specific functions that required it. That is to do the following style of function, which hard codes the width and height values, and echo&#8217;s out the output just like the original function. This approach requires you to look at the existing HTML output to determine the proper strings for the preg_replace.
<pre style="padding-left: 30px;">function my_plugin_function($args) {
      ob_start();
      plugin_function();
      $output=ob_get_contents();
      ob_end_clean();
      $output=preg_replace("/&lt;img src/","&lt;img width=48 height=48 src",$output);
      $output=preg_replace("/cookie.domain/","cookieless.domain",$output);
      echo $output;
}</pre>
</li>
</ul>
<li>Modify the image locations to use a cookie-less domain, otherwise you are sending out kilobytes of data per image when someone is logged into the site. I use the same approach as I did above but add another line (the one with cookie.domain in it above) to replace the existing URL with my cookie-less domain URL, which can be either an entirely new domain or a sub-domain. Either way, it serves up purely static content. This one change, has produced the biggest win.</li>
</ul>
<p>Now that I have my daily or weekly tasks completed, it is time to launch into other tools to use to improve overall performance. First, let me say, I have used quite a few optimizing plugins within my WordPress install and some work better than others. My first approach was to do it all by hand, which did work, but was not complete enough. The key to optimizing the site is to do the following:</p>
<ul>
<li>Specify Expire Headers</li>
<li>Enable Compression</li>
<li>Specify Entity Tags for improved browser caching</li>
<li>Reduce Request Size</li>
<li>Minify HTML, Javascript, and CSS</li>
</ul>
<p>To do this, I started by using the following:</p>
<ul>
<li>Modify .htaccess file by hand to include Compression, Expire Headers, And Entity Tags, however, this became to hard to manage</li>
<li>Use the <strong>W3 Total Cache</strong> plugin which handled the creation of .htaccess files for me and to a certain extent reduced the request size and applied minification rules. But alas, a later upgrade required me to not only chance my SEO plugin from All in One SEO to WordPress SEO, it also required me to enable more modules within Apache. But also failed to work for some of my more complex lightbox code. So, I ended up disabling the W3 Total Cache plugin but I keep it around so that I can recreate the .htaccess files as needed. I believe this is all related to the fact that W3 Total Cache, just could not find my document root appropriately.</li>
<li>Create my own minify tools for various plugins such as <strong>GT Tabs</strong>. Some plugins do not get their files picked up appropriately by any minify plugin, so I usually have to edit them to add something like this at the front and end of the PHP style script. Granted you could also probably call some other minify tool, but this type of code works as well, mainly because you do not know if the other minify tool is loaded already. Many plugins like <strong>Easy Fancybox</strong>already include this type of minification of CSS.
<pre style="padding-left: 30px;">&lt;?php
ob_start("my_minify_function");
function my_minify_function($buffer) {
     /* remove comments */
     $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
     /* remove tabs and newlines */
     $buffer = str_replace(array("\r", "\n", "\t"), '', $buffer);
     /* and squeeze some more */
     $buffer = str_replace(array(", ", ": ", " {", "{ ", " }", "} ", "; ", " 0;"), array(",", ":", "{", "{", "}", "}", ";", ";"), $buffer);
     return $buffer;
  }
?&gt;
...Normal file CSS Code...
&lt;?php ob_end_flush(); ?&gt;</pre>
</li>
<li><strong>Better WordPress Minify</strong> is another plugin which will help with minification of CSS and JS which instead of using filters, hooks into the enqueue sub-system to ensure the minification of CSS and JS takes place for all those that are added using the wordpress enqueue calls. The good thing about this plugin, is that not only does this do all the heavy lifting for plugins that use the enqueue mechanism, but it also allows you to point to a cookie-less domain to perform the minification. Most CSS and JS files are static, so using a cookie-less domain also reduces your request size. The bad thing is that any CSS and JS added outside of the enqueue sub-system is not optimized.</li>
<li><strong>DB Cache Reloaded Fix</strong> plugin helps by creating cache files for common db queries that can stick around for as many minutes as you request. Unlike page and object caching, db caching is most helpful on a site that does not have alot of site updates, as they may not show up right away. This one plugin improved over all performance by removing the more than occasional spike in access time for pages. <strong>&lt;== NEW</strong></li>
</ul>
<p>The use of <strong>W3 Total Cache</strong> to create and manage my .htaccess files for browser caching, gzip compression, adding Expire Headers, and Entity Tags is very handy even if I cannot leave the plugin on all the time. <strong>Better WordPress Minify</strong> was the big winner here for my site as it handles minification quite well, and has enough controls to ensure things get performed appropriately. <strong>DB Cache Reloaded Fix</strong> smoothed out and lowered overall response time on the site.</p>
<p>However, we are not done yet, there are lots of little things that can be done to improve overall site performance using wordpress.</p>
<ul>
<ul>
<li>Modify CSS of some plugins to remove conditional CSS statements as some add conditionals specific to IE6</li>
<li>Reduce redirects which show up when you use Gravatars. There is a default gravatar which you can disable in the system, but it turns and does a redirect to the &#8216;blank.gif&#8217; 1&#215;1 image inside the wordpress distribution. Redirects like this are time consuming so I added another little bit of code to optimize the selection of my gravatar to be not only from a cookieless domain but to bypass all the redirects.
<pre style="padding-left: 30px;">function my_get_avatar($avatar,$id="",$size="",$default="",$alt="") {
      return "&lt;img height=1 width=1 src=cookieless.domain/blog/wp-includes/images/blank.gif&gt;";
}
add_filter('get_avatar','my_get_avatar');</pre>
</li>
<li>Force the template files for my theme to be served up by a cookieless domain.
<pre style="padding-left: 30px;">function my_template_directory_uri(template_dir_uri,$template="",$theme_root_uri="") {
      return preg_replace("/cookie.domain/","cookieless.domain",$template_dir_uri);
}
add_action('template_directory_uri','my_template_directory_uri');</pre>
</li>
<li>Edit the wordpress-popular-posts.php file of the <strong>WordPress Popular Posts</strong>plugin to use the functions wp_register_style/wp_enqueue_style over the old method of adding an action to wp_head to output the CSS includes (which is commented out in the following code. This change allowed me to make use of the Better WordPress Minify plugin for this plugins small style sheet plugin, and also fixed a CSS/JS ordering problem per Google Page Speed.
<pre style="padding-left: 30px;">wp_register_style('wpp.css',plugin_dir_url(__FILE__).'style/wpp.css');
wp_enqueue_style('wpp.css');
//add_action('wp_head',array(&amp;$this, 'wpp_print_systlesheet'));</pre>
</li>
</ul>
</ul>
<p>&nbsp;</p>
<ul>
<ul>
<li>Edit the theme to pass width and height for the logo image by placing the following at the appropriate place within the header code just before the closing /&gt; of the logo <strong>img</strong>HTML tag. Each theme will be different.
<pre style="padding-left: 30px;">$imagep=TEMPLATEPATH.'/images/'.$bfa_ata['logo'];
list($width,$height)=getimagesize($imagep);
echo '" width='.$width.' height='.$height;</pre>
</li>
</ul>
</ul>
<p>&nbsp;</p>
<p>There are still lots of little things to do with the site to achieve high YSlow and Pagespeed ratings, but they will require a bit more coding. While these tools and techniques greatly assist with this, the incrementals from now become harder and harder. One that would give me a huge increase in ranking would be to use CSS Sprites for small images that I load quite a bit, but to do this, not only do I need to create the sprites but modify plugins and code to use them appropriately. Still left to do are:</p>
<ul>
<li>Combine small images into CSS Sprites for those small images on the site. Some are easier than others.</li>
<li>Leverage Browser Caching as any CSS/JS that appears by calling a PHP script has a 30 minute cache time.</li>
<li>Optimize the order of styles and scripts</li>
<li>minize the request size by offloading more to a cookieless domain</li>
<li>minify inline javascript</li>
<li>inline some small CSS that Better WordPress Minify did not pick up</li>
<li>specify a few more entity tags</li>
<li>consider removing query strings from static resources</li>
<li>play around with deferring javascript from loading</li>
<li>remove AlphaImageLoader CSS commands for IE, unfortunately, if I do not keep these one plugin does not work very well.</li>
</ul>
<p>If some how I can fix all these issues, I feel the score will climb quite a bit for YSlow and Pagespeed, but the rest of the items to fix require more coding, research, and testing to achieve a higher score. Specifically I will need to:</p>
<ul>
<li>modify plugins or hook into the wp_enqueue_* code in wordpress to change to a cookieless domain, however, wp_enqueue_* functions do not have a filter or action chain which I can use to modify the URL to a cookieless domain. In essence the WP_Dependencies class in WordPress would need to be modified to allow such filters. Not everything can be handled by <strong>WordPress Better Minify</strong>, specifically elements that require version numbers.</li>
<li>Modify more plugins to use wp_register_style/wp_enqueue_style to remove inline CSS as necessary</li>
<li>Modify <strong>Better WordPress Minify</strong> to better minify CSS/JS as it apparently is not as tight as it could be.</li>
<li>Find a way to set Expire Headers and Entity Tags for those CSS/JS that contain .php in the name instead of .css or .js</li>
<li>Find a way to get CSS Sprites to work across all browsers.</li>
</ul>
<p>Almost there, but still have quite a bit of work to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astroarch.com/2011/10/wordpress-optimizing-steps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Hacked: Security Steps</title>
		<link>http://www.astroarch.com/2011/10/wordpress-hacked-security-steps/</link>
		<comments>http://www.astroarch.com/2011/10/wordpress-hacked-security-steps/#comments</comments>
		<pubDate>Sat, 01 Oct 2011 15:42:02 +0000</pubDate>
		<dc:creator>Edward Haletky</dc:creator>
				<category><![CDATA[Forensics]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[New Relic RPM]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wordpress Attacks]]></category>
		<category><![CDATA[Wordpress Exploits]]></category>
		<category><![CDATA[Wordpress Security]]></category>
		<category><![CDATA[Wordpress Security Tools]]></category>

		<guid isPermaLink="false">http://www.astroarch.com/?p=477</guid>
		<description><![CDATA[Anyone who has a Wordpress site may have been hacked at one point in time or another. A hack may happen regardless of how diligent you are, but what can we do to help us identify attacks before they occur and what can we do to secure the Wordpress environment. I found some very helpful tools while perusing the internet for Wordpress exploits and solutions. The following are what I have discovered as extremely useful, there are some rules if you been hacked, and then some tools you can use to find future attacks easier as well as prevent them.]]></description>
			<content:encoded><![CDATA[<p>Anyone who has a WordPress site may have been hacked at one point in time or another. A hack may happen regardless of how diligent you are, but what can we do to help us identify attacks before they occur and what can we do to secure the WordPress environment. I found some very helpful tools while perusing the internet for WordPress exploits and solutions. The following are what I have discovered as extremely useful, there are some rules if you been hacked, and then some tools you can use to find future attacks easier as well as prevent them.</p>
<p>First what do you do if you were hacked (assume working in the directory /usr/share/wordpress, but really wherever your wordpress install lives):</p>
<ul>
<li>Make a backup of your database</li>
<li>Get a complete list of your existing themes and plugins</li>
<li>Download the latest WordPress zip file</li>
<li>Disable your existing WordPress installation (copy index.php to some other name)</li>
<li>Move your old WordPress install from /usr/share/wordpress to /usr/share/wordpress.old</li>
<li>Make a new /usr/share/wordpress directory and install the latest WordPress into this directory</li>
<li>Restore your existing database</li>
<li>Use the default theme</li>
<li>Compare the <a href="http://www.exploit-db.com/search/?action=search&amp;filter_page=1&amp;filter_description=wordpress&amp;filter_author=&amp;filter_platform=0&amp;filter_type=0&amp;filter_port=&amp;filter_osvdb=&amp;filter_cve=" target="_blank">Exploit-DB for WordPress</a> against your list of plugins and themes</li>
<li>Search Google for specific 0-day attacks against your version of WordPress, if any exist patch them as explained</li>
<li>Reinstall your Theme if not on the above list</li>
<li>Reinstall your Plugins if not on the aforementioned list, if you cannot find your plugins because they have gone the way of the dodo and become available, then inspect every file for any form of malware and then copy from your &#8216;hacked&#8217; backup directory. However, if you do not know what malware looks like, then get a professional to help. <strong>&lt;== NEW</strong></li>
</ul>
<p>After a few hours work your WordPress site should be back to normal hopefully without the latest list of exploits.</p>
<p>If you have bbpress also installed, repeat for bbpress as well as the two can be linked together in many ways. <strong>&lt;== NEW</strong></p>
<p>If you were not attacked, but wish to prevent it from happening, or if you were attacked how to prevent it from happening again. First, modify your installation just a bit to alleviate further attacks:</p>
<ul>
<li>Change your Administrator and Editor passwords to a &gt; 16 character pass phrase</li>
<li>Replace your NONCE salts within your wp-config.php file by getting a new set from <a href="https://api.wordpress.org/secret-key/1.1/salt/">https://api.wordpress.org/secret-key/1.1/salt/ </a></li>
<li>Ensure no files or directories are world or group writable</li>
<li>Remove any unused themes and plugins (they can still be attack vectors even when not activated) <strong>&lt;== NEW</strong></li>
<li>Clear any Cache files in wp-content/cache/* or other locations <strong>&lt;== NEW</strong></li>
<li>Change the Permissions on /index.php to be non-writable (chmod ugo-w index.php) <strong>&lt;== NEW</strong></li>
</ul>
<p>Then install some WordPress security plugins. These first are a must:</p>
<ul>
<li><strong>Ultimate Security Checker</strong> &#8211; Provides a list of easily fixable security vulnerabilities in the standard WordPress environment. Some of these end up being hard to pass without modifying other plugins. One in particular is W3 Total Cache, where you need to remove the &#8216;X-Powered-By&#8217; headers.</li>
<li><strong>Secure WP</strong> &#8211; Provides useful tools to disable attack vectors and giving up too much knowledge of your environment.</li>
<li><strong>WP Security Scan</strong> &#8211; Use WP Security Scan to verify there are no vulnerabilities in your fresh installation or your database, use this tool to modify your administrative username and database table prefixes from their current settings. Also scan for other mis-configurations</li>
<li><strong>Clean Options</strong> &#8211; Go through all your options and remove any orphaned and unused options while also inspecting the options for malware. Not only will this clean up your current options, but also speed up WordPress.</li>
<li><strong>WordPress File Monitor Plus</strong> &#8211; This is the most important plugin. Configure it to run every hour or sooner so that you can get a list of changes to your WordPress files. If anything changes, inspect immediately for malware. If anything is added to your list of WordPress files, it could be malware. Simply look at the files for base64 encoded data that looks cryptic and not as plain PHP code. I then inspect my Apache log files for who perpetrated the attacks if possible and block them from happening again using firewall rules.</li>
<li><strong>WordPress Firewall 2</strong> adds some important but basic request verification against well known attack vectors <strong>&lt;== NEW</strong></li>
</ul>
<p>These three add more logging into your WordPress environment and provide details that takes other knowledge to use:</p>
<ul>
<li>WP MalWatch &#8211; Provides a way to look for malware in common places, while not always useful, it could expose critical issues.</li>
<li>Exploit Scanner &#8211; Provides a way to look for malware in uncommon locations, takes a bit of Javaascript and PHP coding knowledge to understand the output, but does bring to light certain critical issues.</li>
<li>WP Cron &#8211; Provides a way to inspect those cron jobs WordPress requires to work, ensure there are only expected jobs in the list.</li>
</ul>
<p>In addition, to the above elements, I also made the following changes:</p>
<ul>
<li>Disable the ability to directly access wp-config.php and other files using a .htaccess file (if using Apache)</li>
<li>Disable the ability to access non-image files from your uploads directory. Granted this only denies reading files of the appropriate extension, but you also need to ensure any upload software inspects for images only into this directory.</li>
<li>Changed permissions on critical WordPress files to be non-writable by all so that they cannot be modified. However, this does require you be diligent whenever you update WordPress to make the files readable once more, then revert them to non-writable by all.</li>
<li>Implement a web performance management suite such as New Relic RPM to detect when your WordPress site is accessing external web traffic. In Figure 1, for example we see an increase in &#8216;Web External&#8217; traffic that represented a hack to a WordPress site. Most malware wants to call home, this one did to a recently created domain. New Relic RPM furthermore allows you to view all External Services your website calls, it is a very good idea to review that list to determine if all external traffic is expected or not. <strong>&lt;==NEW</strong></li>
<li>Sign Up for something like <a href="http://www.websitedefender.com" target="_blank">Website Defender</a> to automatically scan the site every few days. &lt;== NEW</li>
</ul>
<div id="attachment_483" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.astroarch.com/wp-content/uploads/2011/10/2011-10-01_12-15-25.png"><img class="size-full wp-image-483 " title="2011-10-01_12-15-25" src="http://www.astroarch.com/wp-content/uploads/2011/10/2011-10-01_12-15-25.png" alt="2011 10 01 12 15 25 Wordpress Hacked: Security Steps" width="500" height="278" /></a>
<p class="wp-caption-text">Figure 1: New Relic RPM showing External Web Traffic</p>
</div>
<blockquote><p>Given how WordPress sites are written today, some Web External traffic is to be expected, but when there is a sudden increase, it is also time to research to determine why this is happening.</p></blockquote>
<p>Lastly, I created a development site into which I can install and test any new updates to plugins and WordPress. Until they get tested, they do not get onto the production WordPress installation.  By being diligent and relying on good attack intelligence you can stay on top of the current batch of WordPress attacks as well as prevent them from happening.  It is important to not only to review exploit databases for known vulnerabilities but to also understand how the attacks were perpetrated so that you can investigate and mitigate future security attacks.</p>
<p>We also need to remember to clean up any bbpress installation as well. bbpress, which is forum software, has links to WordPress when you use the two together.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.astroarch.com/2011/10/wordpress-hacked-security-steps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

