<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>The F5 Guy &#187; how to</title>
	<atom:link href="http://www.TheF5Guy.com/blog/index.php/tag/how-to/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.TheF5Guy.com/blog</link>
	<description>F5 BIG-IP, SharePoint and Other Technologies...</description>
	<lastBuildDate>Tue, 07 Feb 2012 15:11:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Having Fun With Stream Profiles</title>
		<link>http://www.TheF5Guy.com/blog/2011/09/having-fun-with-stream-profiles/</link>
		<comments>http://www.TheF5Guy.com/blog/2011/09/having-fun-with-stream-profiles/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 10:30:25 +0000</pubDate>
		<dc:creator>naladar</dc:creator>
				<category><![CDATA[BIG-IP]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[stream profiles]]></category>
		<category><![CDATA[string replacement]]></category>

		<guid isPermaLink="false">http://www.TheF5Guy.com/blog/?p=1377</guid>
		<description><![CDATA[Hello all!  Well, I am back from vacationing from Cozumel&#8230;  I am glad to be back in the US (and to have Internet access) and it just so happens that I ran across something fun that I wanted to share. Often overlooked by those seeking BIG-IP answers to web related problems is a very powerful [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/09/datastream.jpg"><img class="alignright size-full wp-image-1384" title="datastream" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/09/datastream.jpg" alt="" width="144" height="128" /></a>Hello all!  Well, I am back from vacationing from Cozumel&#8230;  I am glad to be back in the US (and to have Internet access) and it just so happens that I ran across something fun that I wanted to share.</p>
<p>Often overlooked by those seeking BIG-IP answers to web related problems is a very powerful feature called &#8220;Stream Profiles&#8221;.  So what exactly is a stream profile?  Well I am glad you asked!<span id="more-1377"></span></p>
<p>In short a stream profile is a profile that can be used to replace strings of your choosing in server side response data.  They are generally pretty lightweight as far as CPU ticks go and are pretty easy to write.  When I have used them in the past, I have kept most of mine simple, doing what I call string for string replacements such as replacing the word &#8220;old&#8221; with the word &#8220;new&#8221;.  However, the stream profile can leverage basic regex syntax to for your more creative solutions if you ever have need.</p>
<p>Now when do stream profiles come in handy?  Well I can give you a real world example.  I was troubleshooting an issue with the login page of a web application the other day and realized that the submit button for the application was hard coded to POST to an HTTP address but I was attempting to use the application over HTTPS.</p>
<p>Being no stranger to iRules and laughing to myself how easy this one would be to solve, I simple created a VIP to listen on HTTP and threw my trusty HTTP_TO_HTTPS iRule on it.  Then I went back and checked the application.</p>
<p>I typed in the URL, using HTTP this time to check the redirect was taking place now and of course was forwarded over to HTTPS via the iRule.  Success!  Or so I thought&#8230;. I plugged in the test username and password, hit SUBMIT and received the page that said I had submitted the wrong username and password.  Thinking I fat fingered it, I went back, plugged in my credentials again (this time doing the super slow typing trying while saying my password out loud, yes you know what I am talking about) and hit submit again.  And was thwarted again.</p>
<p>I pulled up my trusty HTTP Watch program and went through the series of events once again.  The redirect was working for HTTP over to HTTPS, but something seemed to be going wrong where the web application was using the POST method.  The POST data was still intact after the redirect (<a href="http://devcentral.f5.com/wiki/iRules.HTTP_POST_redirectNew118.ashx">here</a> is how to pull that off), but something else was messing with the code.  Hmmm&#8230;.  Could it be related to http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html Section 10.3.3 which states &#8220;If the 302 status code is received in response to a request other    than GET or HEAD, the user agent MUST NOT automatically redirect the    request unless it can be confirmed by the user, since this might    change the conditions under which the request was issued.&#8221;</p>
<p>Well that certainly might cause a problem with the code we were testing!  Then drilling down a bit further into our test application we realized that the URL that the &#8220;Submit&#8221; button was performing the POST to was actually being pulled dynamically by the application from a database server entry.  Being unable to modify that database entry because of a variety of reasons we decided to leverage the BIG-IP&#8217;s Stream profile abilities.</p>
<p>So you see, it was a bit of a complex problem in our case, yet the solution was &#8220;BIG-IP Easy&#8221;.  I logged into the LTM, click Profiles, Other, Stream and then the Create button.</p>
<p>Give it a name, select &#8220;stream&#8221; as the parent profile, leave the source blank and then input your target information.  This is the part that allows you to substitute one outbound word for another.  For example we want to replace and old URL with a new URL.  The old URL is http://myold.url.com:80 and the new URL is https://mynew.url.com.</p>
<p>In the &#8220;Target&#8221; box you would type:</p>
<p>@http://myold.url.com:80@https://mynew.url.com@</p>
<p>Then save the profile and apply it to the VIP that is in need of the fix.  That is it!  Now the data in the content stream going back to the client it will be re-written according to your selection.  You of course can use different delimiters than the @ sign if you like and you can even add another string for the profile to replace if you like.  All you have to do in that case is add a space after the last delimiter, add another delimiter and then the next string/replacement string combo.</p>
<p>If you are liking what you are hearing so far but want to use different delimiters, leverage regex and/or do all of this in an iRule rather than a profile, I highly suggest you check out a Tech Tip on DevCentral written by Deb Allen on September 11th, 2007.  Here is shortcut to that <a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/101/LTM-stream-profile-Multiple-replacements-regular-expressions.aspx" target="_blank">article</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.TheF5Guy.com/blog/2011/09/having-fun-with-stream-profiles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>F5 BIG-IP &#8211; Cisco Nexus VLAN-to-VLAN Bypass</title>
		<link>http://www.TheF5Guy.com/blog/2011/07/f5-big-ip-cisco-nexus-vlan-to-vlan-bypass/</link>
		<comments>http://www.TheF5Guy.com/blog/2011/07/f5-big-ip-cisco-nexus-vlan-to-vlan-bypass/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 14:28:23 +0000</pubDate>
		<dc:creator>naladar</dc:creator>
				<category><![CDATA[BIG-IP]]></category>
		<category><![CDATA[Cisco]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[f5]]></category>
		<category><![CDATA[f5 MVP]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[VLAN BYPASS]]></category>

		<guid isPermaLink="false">http://www.TheF5Guy.com/blog/?p=1307</guid>
		<description><![CDATA[I have a guest post today that I am happy to present to you. The following content was created by a fellow F5 DevCentral MVP member named Chetan Bhatt who works for NBC Universal as a Senior Network Engineer. In an article that TheF5Guy.com posted back in September 22, 2010 I explained a method about [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/07/bypass.png"><img class="alignright size-medium wp-image-1327" title="bypass" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/07/bypass-300x150.png" alt="" width="138" height="69" /></a>I have a guest post today that I am happy to present to you.  The following content was created by a fellow F5 DevCentral MVP member named Chetan Bhatt who works for NBC Universal as a Senior Network Engineer.</p>
<p>In an article that TheF5Guy.com posted back in September 22, 2010 I explained a method about creating a F5-Cisco VLAN to VLAN Bypass for Cisco IOS gear.  With the introduction to Cisco Nexus and vPC (Virtual Port Channel) technology the configurations to make the VLAN-to-VLAN bypass would need to be updated.  (Previous article can be found <a title="here" href="http://www.thef5guy.com/blog/2010/09/f5-big-ip-and-cisco-vlan-to-vlan-bypass/" target="_blank">here</a>) <span id="more-1307"></span></p>
<p>So now we have the following similar scenario with the added twist of Nexus and vPC.</p>
<p>I have a pair of F5 ADC in an Internet DMZ, where nodes behind the load balancer need to access NAS system(s) on a VLAN located on a separate VLAN that is not behind the load balancer. The problem is that in my current design I have to route through the F5 Load balancer to access the NAS system(s).  Unfortunately the amount of bandwidth it takes supersedes the F5 ADC’s total throughput.  I would like to bypass this without adding extra network cards or recreating a new VLAN and would like preserve the IP addresses as much as possible.  Also the F5 ADC is sitting on a network design that participates in vPC within Cisco Nexus Datacenter gear.</p>
<p>Based on this description above you extrapolate a high-level logical network design as shown in Figure 1 ( I have removed vPC design for now as you read on you will see it introduced into the article):</p>
<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/07/chetan1.jpg"><img class="aligncenter size-medium wp-image-1340" title="chetan1" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/07/chetan1-300x149.jpg" alt="" width="300" height="149" /></a></p>
<p>In the figure 1, we VIP VLAN which is a routable VLAN. Node VLAN is a non-routable VLAN, which is strictly Layer 2.  Since the VLAN is non-routable no external devices except the F5 can access the Nodes directly.  Finally we have Server VLAN Z which is where the NAS system is connected to.  In order to have communication between Server VLAN Z and Node VLAN, the traffic must route through the F5 via VIP VLAN. This is done by a static route pointing to .11 on VIP VLAN which is the F5 floating address on VIP VLAN to reach node VLAN address block. In figure 1 you also have all servers in Node VLAN pointing to .1 as their default gateway which is the floating address of the F5. The F5’s default gateway is .1 on VIP VLAN. Now that we have described the current behavior of Figure 1, we can start looking at making some changes.</p>
<p>So how do we change the network to accommodate the result that is being looked for? It is actually much easier then you might think.</p>
<p>The first item you want to remove is the static route on the switch pointing to point to .11 on VIP VLAN to access NODE VLAN. You will not need this since the end result is to allow SERVER VLAN and NODE VLAN to communicate directly via the Cisco Nexus Switch router.</p>
<p>Next you will need to change NODE VLAN from a non-routable network to a routable network. Thus, NODE VLAN will have a gateway of .1 on the switch router. The F5 will then change its own floating address to say .11 and subsequently change the self-addresses to .12 and .13.  All the servers in NODE VLAN will continue to use .1  as the default gateway.</p>
<p>&nbsp;</p>
<p>Thus the network will now look more like Figure 2:</p>
<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/07/chetan2.jpg"><img class="aligncenter size-medium wp-image-1341" title="chetan2" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/07/chetan2-300x149.jpg" alt="" width="300" height="149" /></a></p>
<p>At this point, you are thinking how is the traffic going to return to F5 load balancer when it’s traffic via VIP. The easy way is to apply SNAT Automap. Which works, but then you run into another problem where you lose the client IP address. Normally this might be work, but will make tracking clients more difficult especially around traffic that is not HTTP based.</p>
<p>The short answer to this is utilizing a Cisco’s Policy Based Route.  How does that work?</p>
<p>On a Cisco switch router, you can do the following configuration (NX OS Syntax):</p>
<p><code><br />
ip access-list from_node_vlan_deny<br />
10 permit ip y.y.y.0/24 z.z.z.0/24<br />
ip access-list from_node_vlan_allow<br />
10 permit ip y.y.y.0/24 any<br />
route map to_node_vlan deny 10<br />
match ip address from_node_vlan_deny<br />
route map to_node_vlan permit 10<br />
match ip address from_node_vlan_allow<br />
set ip next-hop y.y.y.11<br />
interface VIP_VLAN<br />
ip policy route-map to_node_vlan<br />
</code></p>
<p><span style="color: #ff0000;">NOTE: You must have feature pbr enabled.</span></p>
<p>If you are a student of Cisco IOS you might notice that IP access-list does not contain deny statements.  This is because PBR statements in the Nexus OS was designed to ignore the deny statements within IP access-lists.  I haven’t received an official reason of why this happened, but the best case was that they wanted  to make the ultimate PERMIT/DENY decision at the route map level.   The good news is that this new behavior only exists when applied to the pBR. Meaning Deny statements within an IP access-list will not be ignored when applying as a standard ACL for security access.   Also you can use the same access-list for security access and route-maps so just keep in mind that that DENY statements will be ignored by the route-maps ONLY.</p>
<p>Looking at the configuration example above the behavior is that if the NODE VLAN traffic is destined to the SERVER VLAN, skip the route-map statement and use the internal routing table of the switch. Thus allowing NODE VLAN to communicate directly to SERVER VLAN and vice versa. Subsequently, if traffic from NODE VLAN is attempting to talk to the internet then it will match the IP access-list “from_node_vlan_allow” within route map “to_node_vlan permit 10”.  It will then apply the next command which is a next hop of y.y.y.11 (Floating address of the F5) within NODE VLAN.</p>
<p>If we left everything alone, this story would be complete.   Unfortunately the network example I used is also using vPC, which adds another layer of complexity which needs to be accounted.   Figure 3 shows us what a vPC topology would look like with an F5:</p>
<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/07/chetan3.jpg"><img class="aligncenter size-medium wp-image-1342" title="chetan3" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/07/chetan3-300x149.jpg" alt="" width="300" height="149" /></a></p>
<p>You see F5 had decided to optimize the Ethernet Frames.   To optimize F5 typically ignores the arp reply given by the HSRP primary and instead forwards Ethernet frames to which ever MAC address it receives frames from the result is a faster response time.   NAS storage vendors also do this and it’s wide spread.  Unfortunately this is not a nonstandard behavior.   If you are well versed enough on the F5 you would immediately think to turn off the auto Last hop feature would counteract this behavior.  Unfortunately, this does not work in Cisco Nexus OS world.  Cisco recognized that many vendors had this same issue so they introduced the command “peer-gateway” command. This command in affect disabled the optimization.</p>
<p>So basically you would introduce the command in the following configuration example, in our diagram it would be on Nexus 7010 MDF A and MDF B</p>
<p>vpc domain 1</p>
<p>role priority 10</p>
<p>peer-keepalive destination 10.1.1.2 source 10.1.1.1 vrf VPC-KeepAlive</p>
<p><strong> </strong><strong>peer-gateway</strong></p>
<p>Of course this is still not end of the story because peer-gateway has a caveat as stated in the Nexus OS Layer 2 guide</p>
<p>Packets arriving at the peer-gateway vPC device will have their TTL decremented, so packets carrying TTL = 1 may be dropped in transit due to TTL expire. This needs to be taken into account when the peer-gateway feature is enabled and particular network protocols sourcing packets with TTL = 1 operate on a vPC VLAN.</p>
<p>This means that the traffic will be treated like a layer 3 hop which means we need to make small adjustment in our access list</p>
<p>From:<br />
<code><br />
ip access-list from_node_vlan_deny<br />
10 permit ip y.y.y.0/24 z.z.z.0/24<br />
ip access-list from_node_vlan_allow<br />
10 permit ip y.y.y.0/24 any<br />
route map to_node_vlan deny 10<br />
match ip address from_node_vlan_deny<br />
route map to_node_vlan permit 10<br />
match ip address from_node_vlan_allow<br />
set ip next-hop y.y.y.11<br />
interface VIP_VLAN<br />
ip policy route-map to_node_vlan<br />
</code></p>
<p>To:<br />
<code><br />
ip access-list from_node_vlan_deny<br />
<strong>5 permit ip y.y.y.0/24 y.y.y.0/24 </strong><br />
<strong>10 permit ip y.y.y.0/24 z.z.z.0/24</strong><br />
ip access-list from_node_vlan_allow<br />
10 permit ip y.y.y.0/24 any<br />
route map to_node_vlan deny 10<br />
match ip address from_node_vlan_deny<br />
route map to_node_vlan permit 10<br />
match ip address from_node_vlan_allow<br />
set ip next-hop y.y.y.11<br />
interface VIP_VLAN<br />
ip policy route-map to_node_vlan<br />
</code><br />
If you have been following closely on the difference you might be wondering why should you have a permit for traffic between NODE VLAN to NODE VLAN?  After all the access-list looks at Layer 3, not Layer 2 traffic.   As I mentioned above “<em>Packets arriving at the peer-gateway vPC device will have their TTL decremented…</em>”  Which means that Layer 2 traffic under vPC Peer Gateway will treat any traffic within that VLAN as a layer 3 hop and it will be processed within the access-list.</p>
<p><strong>Conclusion</strong></p>
<p>If you are running a F5 ADC which routes through F5 Nexus devices, then you don’t need peer-gateway , but you will if you  if you are directly attached to a Nexus Device that is configured to use vPC.</p>
<p>I have yet to face any issues with this configuration so it might be a good idea to add Peer-gateway into your vpc configuration as a default.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.TheF5Guy.com/blog/2011/07/f5-big-ip-cisco-nexus-vlan-to-vlan-bypass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>F5 BIG-IP And Umbraco &#8211; Best Practices</title>
		<link>http://www.TheF5Guy.com/blog/2011/06/f5-big-ip-and-umbraco-best-practices/</link>
		<comments>http://www.TheF5Guy.com/blog/2011/06/f5-big-ip-and-umbraco-best-practices/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 13:00:47 +0000</pubDate>
		<dc:creator>naladar</dc:creator>
				<category><![CDATA[BIG-IP]]></category>
		<category><![CDATA[Umbraco]]></category>
		<category><![CDATA[f5]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.TheF5Guy.com/blog/?p=1287</guid>
		<description><![CDATA[Getting to play with new technology is fun isn&#8217;t it?!  I have been messing around with something that is new to me lately called Umbraco.  First released in 2005, Umbraco is an open-source CMS platform for building websites and has an install base of a little over 85,000 installations. I thought it would be fun/interesting/(useful?) [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/06/BP.jpg"><img class="alignleft size-full wp-image-1290" title="BP" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/06/BP.jpg" alt="" width="145" height="96" /></a>Getting to play with new technology is fun isn&#8217;t it?!  I have been messing around with something that is new to me lately called Umbraco.  First released in 2005, Umbraco is an open-source CMS platform for building websites and has an install base of a little over 85,000 installations.</p>
<p>I thought it would be fun/interesting/(useful?) for the Umbraco and F5 Networks community to create a series of posts based on my experiences in using the F5 BIG-IP to deliver this application in a fast, secure and highly available manner.<span id="more-1287"></span></p>
<p>The first post that I want to throw out there for folks in both communities is related to security and iRules.  There are always &#8220;Best Practice&#8221; things that you want to do with every web application and Umbraco is no different.  I have two issues that I want to cover.</p>
<p>One of the first things that you will want to do is turn off access to the built-in debug feature included with Umbraco.  According to the official Umbraco documentation found here: <a href="http://our.umbraco.org/wiki/how-tos/hide-debugging-features-for-production-systems" target="_blank">http://our.umbraco.org/wiki/how-tos/hide-debugging-features-for-production-systems</a> this feature cannot be turned off inside of Umbraco.  The documentation then goes on to contradict itself  and mentions that you CAN turn off debugging.  It is a bit confusing I know, but I guess we have to work with the information that we have right?</p>
<p>In that same document it also mentions that debugging can be blocked from within Umbraco using the built in URL rewriting feature, but if you are going to be doing some URL manipulation&#8230; well, I think you know where I am going with this!</p>
<p>The basic iRule below will keep hackers from being able to see what is going on behind the scenes on you production Umbraco servers which accomplishes our Best Practice goals.<br />
<code><br />
when HTTP_REQUEST {<br />
if { ([string tolower [HTTP::uri]] contains "umbdebug")} {<br />
HTTP::redirect "https://mycompany.com/default.aspx"<br />
}<br />
elseif { ([string tolower [HTTP::uri]] contains "umbraco")} {<br />
HTTP::redirect "https://mycompany.com/default.aspx"<br />
}<br />
}<br />
</code><br />
The first part of this simply scans your incoming HTTP Request URI&#8217;s looking for &#8220;umbdebug&#8221; and when found it redirects the request back out to the homepage or whatever location you choose to send them.</p>
<p>The second part of the iRule I have added because it will prevent people from accessing the Umbraco Administration console.  This is not only a good idea for security but is also another Umbraco Best Practice.  It is important because it prevents your content developers from accessing that area via the load balanced URL.</p>
<p>If you are using DFS as your storage method on the backend of Umbraco and you attempt to use the load balanced URL to upload documents their experience will not be a pleasant one.  Documents will hang while they are uploading them and may even lock-up their web browser.  They will need to access one (and only one) server directly for site administration.</p>
<p>Like the first part of the iRule, it scans incoming HTTP Request URI&#8217;s but this looks for &#8220;umbraco&#8221; in the URI path and if it is found redirects the user to the location of your choosing.  You could also just drop the packets or something along that line, but I find dumping people out to the root of the site is adequate enough in most cases.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.TheF5Guy.com/blog/2011/06/f5-big-ip-and-umbraco-best-practices/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BIG-IP ASM &#8211; Using Parameters to Block Attacks</title>
		<link>http://www.TheF5Guy.com/blog/2011/05/big-ip-asm-using-parameters-to-block-attacks/</link>
		<comments>http://www.TheF5Guy.com/blog/2011/05/big-ip-asm-using-parameters-to-block-attacks/#comments</comments>
		<pubDate>Mon, 23 May 2011 23:46:02 +0000</pubDate>
		<dc:creator>naladar</dc:creator>
				<category><![CDATA[BIG-IP]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Application Security Manager]]></category>
		<category><![CDATA[ASM]]></category>
		<category><![CDATA[f5]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[parameters]]></category>
		<category><![CDATA[smacking down hackers]]></category>

		<guid isPermaLink="false">http://www.TheF5Guy.com/blog/?p=1224</guid>
		<description><![CDATA[Today I would like to discuss HTML parameters and how you can leverage the BIG-IP ASM module to help secure a web site by doing what I call parameter scanning.  For this little exercise I will focus on only two parameters, TARGET and user, but the principals I am covering here can be applied to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/05/parameter_hacker.jpg"><img class="alignright size-full wp-image-1235" title="parameter_hacker" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/05/parameter_hacker.jpg" alt="" width="158" height="153" /></a>Today I would like to discuss HTML parameters and how you can leverage the BIG-IP ASM module to help secure a web site by doing what I call parameter scanning.  For this little exercise I will focus on only two parameters, TARGET and user, but the principals I am covering here can be applied to all kinds of parameters.</p>
<p>For those of you who do not have a lot of experience with HTML parameters you probably have heard to them referred to as fields in your web application.  For example, many web applications have username and password fields and these are essentially parameter fields.  There are sometimes hidden parameters and dynamic parameters that are not associated with a field on the page, but today I want to discuss the basic ones.  I have chosen the TARGET parameter because it is deprecated and it can be used in phishing attacks as a form of &#8220;Open Redirect&#8221; attack on your web sites.  The user parameter was chosen because it is a pretty common parameter/field name and it just seemed to make sense to include it in the discussion.</p>
<p><span id="more-1224"></span>An open redirect type of attack will often consist of an attacker creating a URL that will redirect a victim to a site that they control.  This URL is then used in a phishing attack where a user is presented with a valid link in an email and companywebsite.com redirects the user to companywebsite-justgotowned.com&#8230; which is the site the attacker controls!  That&#8217;s just one type of open redirect attack though, another type focus&#8217;s on using the TARGET parameter to redirect a user behind the scenes to a malicious web site.</p>
<p>Needless to say, that&#8217;s not good.  What is good though is that protecting against the malicious use of parameters is very EASY to do with BIG-IP ASM.  The first thing that you will want to do, provided you already have an application security policy in place, is to create a Parameter.  Navigate to Application Security, Parameter, Parameters List, select the application policy that you want to modify and click the GO button.</p>
<p>Then click Create.  Give your parameter an explicit name (I used TARGET in my example), select Global Parameter, Data Type should be Alpha-Numeric and check the &#8220;Regular Expression&#8221; box.  Now you will need to come up with a regular expression that fits your environment.  In my example I am going to define two things.  First I will use the hostname of the web site that is valid and then after the pipe I will define a value for a URL that is still being called in our own code via the TARGET method.  Since it is a relative URL I have to include it because the regex for just the hostname will not cover it.  Below is a screenshot for reference:</p>
<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/05/Parameters.png"><img class="size-medium wp-image-1222 aligncenter" title="Parameters" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/05/Parameters-300x248.png" alt="" width="300" height="248" /></a></p>
<p>The regex looks like this:</p>
<p>.*mycompany.com.*|.*myurlpath.*</p>
<p>Something very important to remember when creating these regular expressions is that whenever you create a parameter value and check the Regular Expression box it is automatically setup as a POSITIVE regular expression.  Therefore whatever is in this box defines what is legal for this parameter/field.  In the example above if a TARGET value is submitted to the web application it must contain &#8220;mycompany.com&#8221; or &#8220;myurlpath&#8221; or it will be shot down by the ASM.  This will prevent someone from setting a target of somewhere other than your web site.  This will stop a blatant open redirect attack but certainly not all.  Then click the create button.</p>
<p>Now you will need to tell your web application policy to be on the lookout for violations of this type.  Navigate to Application Security, Policy, Blocking, Settings.  Then scroll down the list until you see &#8220;Parameter value does not comply with regular expression&#8221;, check the Learn, Alarm and Block check boxes.  Save and then Apply the policy.  That&#8217;s it!</p>
<p>When ever a violation happens you will now see this in the manual traffic learning section:</p>
<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/05/Parameter_value_does_not_comply_with_regular_expression.png"><img class="size-medium wp-image-1223 aligncenter" title="Parameter_value_does_not_comply_with_regular_expression" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2011/05/Parameter_value_does_not_comply_with_regular_expression-300x58.png" alt="" width="300" height="58" /></a></p>
<p>Now to tackle the &#8220;user&#8221; parameter.  I am going to take a different angle on this one because like I mentioned before, once you understand the principal behind it you will see it can be used in a million different ways to protect your web application.</p>
<p>After looking over a few security logs you might notice that some hackers attempt to utilize the &#8220;user&#8221; parameter/field in your web application and they will try to throw all kinds of things in there.  One common element I have seen is that they will try to inject a username@yourdomain.com into the field.  Since that is not a valid character for the application I am looking to protect, I am going to block this kind of attack configuring the ASM to block based off of an invalid metacharacter value being placed in the parameter value.</p>
<p>Following the instructions above for creating a new Parameter, except this time instead of using a regular expression, click the Value Meta Characters tab.  Select &#8220;@ (0&#215;40)&#8221; from the list on the right hand side of the page and then set the value to be disallowed using the drop down box under the set state heading.  Put a check mark in the check characters on this parameter value check box.  Now to configure your web application policy to listen, alarm and block on these kinds of attacks.  Navigate to Application Security, Policy, Blocking, Settings.  Then scroll down the list until you see &#8220;Illegal meta character in parameter value&#8221;.  Check the appropriate boxes, save and then apply.</p>
<p>Now whenever a would be hacker attempts to inject an invalid character into that field (the @ character in this case, but like I said you can use countless others) they will be smacked down by the ASM.</p>
<p>It&#8217;s a piece of cake really once you do it a time or two.  If you get hung up on the regular expression part have no fear!  The kind folks over at F5 Networks have thought ahead and have included a regular expression validator inside of the ASM module.  Just navigate to Application Security, Options, Tools and RegExp Validator.  You can use that tool to compile your regular expression if need be.</p>
<p>Remember when thinking about security related things it is best to take the defense in-depth approach.  Little things added here and there to your web application security policy that do no harm but can mitigate attacks can be very effective.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.TheF5Guy.com/blog/2011/05/big-ip-asm-using-parameters-to-block-attacks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Direct Access &#8211; Corrupt NRPT Fix</title>
		<link>http://www.TheF5Guy.com/blog/2010/12/direct-access-corrupt-nrpt-fix/</link>
		<comments>http://www.TheF5Guy.com/blog/2010/12/direct-access-corrupt-nrpt-fix/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 23:42:23 +0000</pubDate>
		<dc:creator>naladar</dc:creator>
				<category><![CDATA[Direct Access]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[NRPT]]></category>

		<guid isPermaLink="false">http://www.TheF5Guy.com/blog/?p=1134</guid>
		<description><![CDATA[I am having to venture away from F5 BIG-IP news on this one folks.  I have recently been working a lot on Microsoft Direct Access and I came across an issue that I wanted to highlight for all those bashing their heads against a brick wall trying to come up with a fix. NRPT &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/12/frustrated.jpg"><img class="alignleft size-full wp-image-1141" title="frustrated" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/12/frustrated.jpg" alt="" width="124" height="93" /></a>I am having to venture away from F5 BIG-IP news on this one folks.  I have recently been working a lot on Microsoft Direct Access and I came across an issue that I wanted to highlight for all those bashing their heads against a brick wall trying to come up with a fix.</p>
<p>NRPT &#8211; Name Resolution Policy Table.  If you have messed around with Direct Access much at all you have to had come across this term at some point.  It basically tells your Direct Access clients how to behave when it comes to DNS queries.  Think host file on steroids&#8230;</p>
<p><span id="more-1134"></span>I recently discovered that the NRPT pushed out via Group Policy can EASILY be corrupted if the script that applies the GPO&#8217;s fails during it&#8217;s activation.  How did I figure this out?  Well I had about 62 NRPT entries to push out, so I queued them all up, hit the apply button and walked away for lunch.  Thinking happily to myself that I would grab some lunch, come back, my updates will have been pushed out and I can jump back onto a little F5 BIG-IP project I am working on.  Imagine the look on my face when I arrived back from lunch and all of my &#8220;Test&#8221; subjects (aka co-workers) were mentioning that they could no longer access any LAN resources!  I sheepishly hunkered down into my cube and furiously began working on a fix.</p>
<p>Well Microsoft promised this couldn&#8217;t happen as of UAG/DA update 1, but I am running UAG/DA update 2 and I can assure you, it can still happen.  The fix is easy enough though as long as you have a computer that is running Direct Access and it has not pulled down a corrupt NRPT table.  The problem generally happens when a computer checks in with the Domain Controllers and does a GP refresh.  This happens periodically and it is hard to tell when a machine might check in.  If you are in the middle of pushing out a new NRPT or it halted in the middle of an update when the client checks in, poof!  Corrupt NRPT.</p>
<p>The fastest way to tell if you have a corrupt NRPT is to open a command line and type:</p>
<p>netsh name show effective policy</p>
<p>If you get back the dreaded message of: &#8220;Name resolution policy table has been corrupted. DNS resolution will fail until it is fixed. Contact your network administrator.&#8221;  Then welcome to can&#8217;t do anything on the LAN land.</p>
<p>So how do you fix it?  On the computer that has a valid NRPT table go and export the following registry key, save it to a thumb drive and sneakernet it over to victims PC.  The key you want to export is &#8220;HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DnsClient\DnsPolicyConfig&#8221;.  Then on the victims PC open up the same spot in the registry and remove the subkeys UNDER the DnsPolicyConfig key.  Don&#8217;t change anything in that particular key, just delete the ones underneath it.  They will usually all have a name similar to UAGDA Rule 1, UAGDA Rule 2&#8230; you get the idea.</p>
<p>Once you have all of those deleted out, import the good registry key which contains the NRPT and then reboot the PC.  And that&#8217;s it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.TheF5Guy.com/blog/2010/12/direct-access-corrupt-nrpt-fix/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>BIG-IP Web Accelerator Version 10.2</title>
		<link>http://www.TheF5Guy.com/blog/2010/10/big-ip-web-accelerator-version-10-2/</link>
		<comments>http://www.TheF5Guy.com/blog/2010/10/big-ip-web-accelerator-version-10-2/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 23:02:08 +0000</pubDate>
		<dc:creator>naladar</dc:creator>
				<category><![CDATA[BIG-IP]]></category>
		<category><![CDATA[f5]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[WebAccelerator]]></category>

		<guid isPermaLink="false">http://www.TheF5Guy.com/blog/?p=1115</guid>
		<description><![CDATA[It is amazing how quickly a month can go by isn&#8217;t it?  I guess it helps that I spent a week of that in Cozumel Mexico!  My wife and I were fortunate enough to obtain our SCUBA Diver certifications on this last trip so we are both pretty stoked about that.  But enough about me, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/10/fast-internet.jpg"><img class="alignright size-medium wp-image-1124" title="fast-internet" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/10/fast-internet-300x181.jpg" alt="" width="189" height="114" /></a>It is amazing how quickly a month can go by isn&#8217;t it?  I guess it helps that I spent a week of that in Cozumel Mexico!  My wife and I were fortunate enough to obtain our SCUBA Diver certifications on this last trip so we are both pretty stoked about that.  But enough about me, lets talk a little about BIG-IP TMOS version 10.2.  I have had the opportunity to load this up onto a production box recently and I thought I would share a quick post regarding the WebAccelerator Module.</p>
<p>I have used the WAM (WebAccelerator Module) to accelerate a few SharePoint 2007 sites in the past and have been able to achieve a 45%-55% reduction in the number of hits on our web front end servers.  To me that is a pretty dramatic reduction to say the least.  Those servers have since been upgraded to SharePoint 2010 so I will hopefully be doing another blog post in a few weeks where I will show you how we use WAM to accelerate SharePoint 2010 web applications.  In this post I am going to cover using the default WAM IIS template to accelerate our main web site and show you the results.<span id="more-1115"></span></p>
<p>Previously I was using TMOS Version 9.x so starting off couldn&#8217;t be more simple in Version 10.2.  One very nice thing that I want to point out with this version is that when you click on the WebAccelerator section in the GUI it no longer opens up in a separate window.  That used to really annoy me and I was glad to see it is more cohesive in this version.  After clicking into there, click the &#8220;Applications&#8221; menu option and then click &#8220;Create&#8221;.  Type in a name, select the central policy template that you want to use (MS IIS in my case), type in your requested host name and click save.</p>
<p>You then create a Class Profile by clicking &#8220;Class Profiles&#8221; and &#8220;Create&#8221;.  Assign a name to it and leave the default values as they are.  That way if you decide to change  or modify something in that profile in the future you can easily do so and it will not effect any of your other profiles.  Then go back into the Local Traffic portion of the GUI, select the Virtual Server that you want to add the policy to, click &#8220;Resources&#8221; and then click the &#8220;Manage&#8221; button under HTTP Class Profiles, select the newly created acceleration profile in the list, click the &lt;&lt; button to add it to the list and then click the finished button.</p>
<p>That&#8217;s it ladies and gentlemen!  You now have a accelerated web site.  How easy is that?!  I can&#8217;t imagine it being any easier than that, of course those folks at F5 Networks are always improving things.</p>
<p>So what kind of results can you expect from such a simple setup?  Well lets take a look.  From the graphs below you can see that the BIG-IP WAM has a response time of about 21ms for content requests.  This is the length of time it takes the WebAccelerator system to respond to a request from the client.</p>
<p>The second picture below shows you that the unit responded to 48,000 requests and the unit was able to successfully accelerate around 37,000 requests via Smart Cache.  That is a lot of happy users and represents 37,000 requests that our web servers did not have to respond to!  The errors that show up in the report are mostly my fault because I have not cleaned up my traffic reports like George Watkins explains how to do over on DevCentral <a href="http://devcentral.f5.com/weblogs/watkins/archive/2010/08/18/clean-up-those-webaccelerator-performance-reports.aspx">http://devcentral.f5.com/weblogs/watkins/archive/2010/08/18/clean-up-those-webaccelerator-performance-reports.aspx</a>.  Thanks again George for that excellent post!  Once I have had a chance to clean those reports up I will try to post a prettier picture.</p>
<p>Then last but certainly not least, is a picture that shows you my CPU utilization on that particular unit over the last 24 hours.  This picture was taken roughly 9 hours after implementing the web acceleration profile.  As you can see there has been only a slight increase (maybe 1%) in my CPU utilization.</p>
<p>Looking at those facts it is safe to say this was a very successful deployment of a WAM profile on a production web site that has generated some very positive results.  Faster responses for the end users and less load on the back web servers, it is a win-win solution in my book.</p>
<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/10/ResponeTime.png"><img class="aligncenter size-medium wp-image-1117" title="ResponeTime" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/10/ResponeTime-300x227.png" alt="" width="300" height="227" /></a></p>
<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/10/ResponeTime.png"></a><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/10/Hits.png"><img class="aligncenter size-medium wp-image-1118" title="Hits" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/10/Hits-300x228.png" alt="" width="300" height="228" /></a></p>
<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/10/CPUWA.png"><img class="aligncenter size-medium wp-image-1121" title="CPUWA" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/10/CPUWA-300x90.png" alt="" width="300" height="90" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.TheF5Guy.com/blog/2010/10/big-ip-web-accelerator-version-10-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>F5 BIG-IP and Cisco VLAN to VLAN Bypass</title>
		<link>http://www.TheF5Guy.com/blog/2010/09/f5-big-ip-and-cisco-vlan-to-vlan-bypass/</link>
		<comments>http://www.TheF5Guy.com/blog/2010/09/f5-big-ip-and-cisco-vlan-to-vlan-bypass/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 16:43:59 +0000</pubDate>
		<dc:creator>naladar</dc:creator>
				<category><![CDATA[BIG-IP]]></category>
		<category><![CDATA[Cisco]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[f5]]></category>
		<category><![CDATA[f5 MVP]]></category>
		<category><![CDATA[how to]]></category>

		<guid isPermaLink="false">http://www.TheF5Guy.com/blog/?p=1096</guid>
		<description><![CDATA[Chetan Bhatt (aka The Bhattman over at DevCentral) is the author of the blog post below.  Thank you for your contributions to the community Chetan! From time to time, I usually receive a request that goes something like this. “I have a pair of F5 ADC in an Internet DMZ, where the servers behind the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/09/Which-way.png"><img class="alignleft size-thumbnail wp-image-1101" title="Which way" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/09/Which-way-150x150.png" alt="" width="150" height="150" /></a>Chetan Bhatt (aka The Bhattman over at DevCentral) is the author of the blog post below.  Thank you for your contributions to the community Chetan!</p>
<p>From time to time, I usually receive a request that goes something like this.</p>
<p>“I have a pair of F5 ADC in an Internet DMZ, where the servers behind the load balancer need to access NAS system(s) on a VLAN located in the same network on another VLAN that is not behind the load balancer.</p>
<p>The problem is that in my current design I have to route through the F5 Load balancer to access the NAS system(s).  Unfortunately the amount of bandwidth it takes supersedes the F5 ADC’s total throughput.  I would like to by pass this without adding extra network cards or recreating a new VLAN and would like preserve the IP addresses as much as possible.”<span id="more-1096"></span></p>
<p>For the purposes of the blog we will call the person requesting this <a href="http://en.wikipedia.org/wiki/Keyser_S%C3%B6ze">Keyser Söze</a></p>
<p>Based on this description above you extrapolate a high-level logical network design as shown in Figure 1.</p>
<p><strong>Figure 1</strong></p>
<p><strong><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/09/CB_pic_1.png"><img class="aligncenter size-full wp-image-1098" title="CB_pic_1" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/09/CB_pic_1.png" alt="" width="641" height="272" /></a><br />
</strong></p>
<p>In the figure 1, we VLAN 10 which is a routable VLAN. VLAN 12 is an empty VLAN, which is strictly Layer 2, and no other traffic allowed to it from the router itself.  Finally we have VLAN13 which is where the NAS servers is connected to .  In order to access VLAN12 you need to route through the F5 that is also connected on VLAN10. This is done by a static route pointing to .11 on VLAN10 which is the F5 floating address on VLAN 10 to reach VLAN12 address block. In figure 1 you also have all servers in VLAN12 pointing to .1 as their default gateway which is the floating address of the F5. The F5’s default gateway is .1 on VLAN10. Now that we have described the current behavior of Figure 1, we can start looking at making some changes.</p>
<p>So how do we change the network to accommodate the result that Kyser is looking for? It is actually much easier then you might think.</p>
<p>For the purposes of this explanation, let us assume the switches are connected on Cisco Switch routers</p>
<p>The first item you want to remove is the the static route on the switch pointing to point to .11 on VLAN10 to access VLAN12. You will not need this since the end result is to allow VLAN 12 and VLAN 11 to communicate directly via the Cisco Switch router.</p>
<p>Next you will need to change VLAN11 from a non-routable network to a routable network. Thus, VLAN 11 will have a gateway of .1 on the switch router. The F5 will then change its own floating address to say .11 and subsequently change the self-addresses. All the servers will continue to use .1 on VLAN11 as their default gateway.</p>
<p>Thus the network will now look more like Figure 2</p>
<p><strong>Figure 2</strong></p>
<p><strong><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/09/CB_pic_2.png"><img class="aligncenter size-full wp-image-1099" title="CB_pic_2" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/09/CB_pic_2.png" alt="" width="642" height="273" /></a><br />
</strong></p>
<p>At this point, you are thinking well if that is the case then how do we get traffic back to the F5 for Load balancing traffic. Well the easy way is to apply SNAT Automap across all the Virtual addresses. Which works, but then you run into another problem where you lose the client IP address. Normally this might be work, BUT if you are tracking clients for statistical purposes, this is not going to work.</p>
<p>The short answer to this is utilizing a Cisco’s Policy Based Route. How does that work?</p>
<p>On a Cisco switch you can do the following configuration (IOS Syntax):<br />
<code><br />
ip access-list extended from_vlan11<br />
Deny y.y.y.0 0.0.0.255 z.z.z.0 0.0.0.255<br />
Permit y.y.y.0 0.0.0.255 any<br />
route map to_lb_vlan11<br />
Match ip address from_vlan11<br />
ip default next-hop y.y.y.11<br />
interface Vlan11<br />
ip policy route-map to_lb_vlan11<br />
</code><br />
What these statements mean is that any traffic from VLAN11 is destined to addresses on VLAN12, skip the route-map statement and use the internal routing table of the switch. Thus allowing VLAN11 to communicate directly to VLAN12 and vice versa. Subsequently, if traffic from VLAN11 is attempting to talk to the internet then it will match the permit statement in the IP access list “from_vlan11” then apply the route map statement and thus your next hope is .11, which is hosted on VLAN11.</p>
<p>That pretty much sums up how to use the switches throughput for VLAN to VLAN traffic and the F5 ADC continues to do what it does best while Kyser can go home happy.</p>
<p>Thanks,</p>
<p>CB</p>
]]></content:encoded>
			<wfw:commentRss>http://www.TheF5Guy.com/blog/2010/09/f5-big-ip-and-cisco-vlan-to-vlan-bypass/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Live Meeting Portal Server and BIG-IP LTM</title>
		<link>http://www.TheF5Guy.com/blog/2010/04/live-meeting-portal-server-and-big-ip-ltm/</link>
		<comments>http://www.TheF5Guy.com/blog/2010/04/live-meeting-portal-server-and-big-ip-ltm/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 19:45:06 +0000</pubDate>
		<dc:creator>naladar</dc:creator>
				<category><![CDATA[BIG-IP]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[f5]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[live meeting]]></category>

		<guid isPermaLink="false">http://www.TheF5Guy.com/blog/?p=946</guid>
		<description><![CDATA[I setup Live Meeting Portal Server the other day and wanted to share a few things that are not mentioned in Microsoft&#8217;s documentation.  The BIG-IP portion of this configuration is super easy, but it is understanding how both the application and the BIG-IP work together that can be the hardest part of any deployment. Setting Up BIG-IP and Live [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/LiveMeeting.gif"><img class="size-thumbnail wp-image-972 alignright" title="LiveMeeting" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/LiveMeeting-150x150.gif" alt="" width="123" height="123" /></a>I setup Live Meeting Portal Server the other day and wanted to share a few things that are not mentioned in Microsoft&#8217;s documentation.  The BIG-IP portion of this configuration is super easy, but it is understanding how both the application and the BIG-IP work together that can be the hardest part of any deployment.</p>
<p><strong>Setting Up BIG-IP and Live Meeting Portal Server</strong><br />
<span id="more-946"></span><br />
Prerequisites:</p>
<p>Please consult the Live Meeting Portal Server documentation and ensure that your servers meet all the perquisites before installation. All the examples in this guide are setup so that you will end up with a website at this URL: https://livemeeting.mycompany.com/lmportal. Please feel free to substitute your company’s name for “mycompany”.</p>
<p><strong>IIS Setup:</strong><br />
1. Download the latest version of Office Live Meeting Service Portal. As of 4/20/2010 that can be found here:</p>
<p>http://www.microsoft.com/downloads/details.aspx?FamilyID=429bb528-fd1b-45b7-af2b-cbbf4a8e65ff&#038;displaylang=en</p>
<p>2. Create a basic website in IIS and name it Live Meeting. This empty shell of a website will be used by the Live Meeting installer and will basically be taken over by it after you run through the installation.</p>
<p>3. Create a folder named “Livemeeting” in the directory of your choice. In this example we will use ”E:\web\content\”</p>
<p>4. Double click the lmportal.exe to begin the installation and choose custom when the option appears. Then select the directory you created above so the files will be placed in your normal custom web content location.</p>
<p>5. Remote Desktop (RDP) to the web server and open IIS. DO NOT USE THE IIS CONSOLE ON YOUR LOCAL MACHINE as you will not have access to everything that you need.</p>
<p>6. The screenshots below will help guide you through the configuration of the web site in IIS. Things that do need to be changed:<br />
a. Add 443 to the SSL port and select the unique IP address for the site to use. We will be terminating SSL on the F5 BIG-IP and then re-encrypting before sending it back on to the server.</p>
<p style="text-align: left;">b. Allow Scripts and Executables under execute permissions. Verify application pool is set to Live Meeting Intranet Portal AppPool.</p>
<p style="text-align: center;"><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting2.png"><img class="size-full wp-image-952  aligncenter" title="livemeeting2" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting2.png" alt="" width="356" height="356" /></a></p>
<p>c. Verify that ASP.NET is set to version 1.1.4.322.</p>
<p style="text-align: center;"><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting3.png"><img class="aligncenter size-full wp-image-953" title="livemeeting3" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting3.png" alt="" width="364" height="356" /></a></p>
<p>d. Under Directory Security, click Edit and make sure there is a check mark on the “Enable anonymous access” and “Integrated Windows authentication” box.</p>
<p style="text-align: center;"><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting4.png"><img class="aligncenter size-full wp-image-954" title="livemeeting4" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting4.png" alt="" width="372" height="443" /></a></p>
<p>e. Go to the application pool, right click and go to properties. Click the Health tab and uncheck “Enable Rapid-Fail protection”. Not including a screenshot of this one.</p>
<p>7. Navigate to “E:\web\content\Livemeeting\Portal” on the server. Then find the file named “Portal.config”, right-click it and click the Security tab. Click Add and then add the “Network Service” user account and give it full control. You have to do this or you cannot modify the configuration settings from the GUI.</p>
<p>8. Do the same thing listed in step 7 for the “PortalExport” folder located in the directory you should currently be in: “E:\web\content\Livemeeting\Portal”</p>
<p>9. Now you have to import the SSL certificate that you are going to use into IIS website that you just set up. You will need to obtain the .crt file for the SSL certificate and the .key file for that certificate. We terminate our SSL on the BIG-IP so these can both be obtained from there. I will skip the steps regarding purchasing an SSL certificate for a site if you do not already have one. It kind of falls outside the scope of this guide.</p>
<p>10. Use a search engine and search for OpenSSL. You should find their homepage at: http://www.openssl.org/</p>
<p>11. Download OpenSSL and install it on your Local machine. I don’t recommend installing it on the server for a wide variety of reasons. I installed my copy of OpenSSL into “C:\OpenSSL”.</p>
<p>12. Take the .key file and the .crt file and put them into OpenSSL’s “bin” directory. It’s just a folder inside of your OpenSSL folder called bin.</p>
<p>13. Open a command line and change directory over to C:\OpenSSL\bin. The example I am going to provide is for a fictitious company named “MyCompany” that is using a wildcard ssl certificate on a few of their websites.</p>
<p>14. Then type in the following command:</p>
<p><img class="alignleft size-full wp-image-955" title="livemeeting5" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting5.png" alt="" width="628" height="79" /></p>
<p>This all needs to be on one line. Spaces are ok, but no carriage returns or anything like that. This command is modeled after this example for future reference:</p>
<p>openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt</p>
<p>certificate.pfx = the name of the new pfx file you want to create<br />
privateKey.key = the private key you got off of the F5 BIG-IP<br />
certificate.crt = the crt file that you got off the F5 BIG-IP<br />
CACert.crt = the crt file that you got off the F5 BIG-IP</p>
<p>15. After you type the command and hit enter, you will be prompted for a password. You can use any password that you like but you will need to remember it because IIS asks you for the same password when you go to import it.</p>
<p>16. OpenSSL will compile a new .pfx file for you in the C:/OpenSSL/bin directory. Take that SSL certificate and copy it over to your web server.</p>
<p>17. RDP over to the server and open IIS. Again here is the disclaimer, DO NOT USE THE IIS CONSOLE ON YOUR LOCAL MACHINE. Right-click on the Live Meeting web site that you created and click on the Directory Security tab. Under “Secure Communications”, click the “Server Certificate…” button.</p>
<p style="text-align: center;"><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting6.png"><img class="aligncenter size-full wp-image-956" title="livemeeting6" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting6.png" alt="" width="475" height="462" /></a></p>
<p>18. Click Next and then click the “Import a certificate from a .pfx file” radio button and click next. Browse to the .pfx file that you uploaded to the web server. Click next and enter your password information that you used when you created the certificate. Then finish clicking through the wizard. Then restart IIS on the server and delete the certificate off of your local machine. This completes the IIS setup. Now move on to the Live Meeting Portal setup.<br />
Live Meeting Portal Setup</p>
<p>19. Navigate to the URL:</p>
<p>https://livemeeting.mycompany.com/LMPortal/settings.aspx</p>
<p>Where livemeeting.mycompany.com is the name of the website you setup. The screen will look like the one shown on the next page. This is the Settings-Portal Configuration page. You will want to use the following settings which are also pictured in the screenshot on the next page.</p>
<p>Conference Center URL = https://www.livemeeting.com/cc/mycompany<br />
Conference Center Administrator<br />
User Id =<br />
Password =<br />
Email address for escalation =<br />
Enabled Portal Services = Check the Account Create, Account Login, Account Update and Web Method Calls<br />
Ticket Timeout = 300 Seconds<br />
Directory Service Parameters = AccountNamePolicy=LogonUsername</p>
<p>20. Then click Save. If you receive an error at this point, refer back to step #7.</p>
<p style="text-align: center;"><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting7.png"><img class="aligncenter size-full wp-image-957" title="livemeeting7" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting7.png" alt="" width="492" height="316" /></a></p>
<p>21. Click on the Roles link on the left side of the page. This will take you to the Roles-Portal Configuration page. Under “Live Meeting Administrators” add the users who will be the Live Meeting Administrators. Use domain\name format. IE: mydomain\username<br />
22. Then under the “Live Meeting Organizers” settings I recommend adding the “Domain Users” from the varies domains on your network. So if you have three domains on you network named ABC, 123 and XYZ you would list ABC\Domain Users, 123\Domain Users and XYZ\Domain Users.</p>
<p>23. Then click the “Export Configurations Settings” link on the left hand side of the page. This is not really labeled right because what it actually does is back up your configuration. If you mess something up in the running configuration, simply click on the “Import Configuration Settings” to restore the last configuration that you exported.</p>
<p>24. Then click on the “Events” link on the left side of the page. Change the log file directory to a directory that you want to have all the logs written into. In this example I chose the E: drive of the server I was working on. Whether you create a new one or use an existing one you must make sure that the “Network Service” account has permissions on that folder to Read, Write and Modify. Otherwise you will receive a nasty .NET error when you go to save the changes you just made. Click Save.</p>
<p style="text-align: center;"><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting8.png"><img class="aligncenter size-full wp-image-958" title="livemeeting8" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting8.png" alt="" width="589" height="42" /></a></p>
<p><strong>Live Meeting Portal Server BIG-IP LTM Setup</strong></p>
<p>The BIG-IP LTM set up for this can be very easy to configure. You will need to create nodes for each of your web servers, assign them to a pool named “Live_Meeting_Pool” and then create a Virtual Server for the application. I named my virtual server “Live Meeting” in the example pictured below. You may need to customize it to match your environment, but the basic settings are:</p>
<p>Service Port: 443<br />
Type: Standard<br />
Protocol: TCP<br />
Protocol Profile (Client): tcp<br />
HTTP Profile: http<br />
SSL Profile (Client): wildcard<br />
SSL Profile (Server): serverssl</p>
<p>I also assigned the Live_Meeting_Pool to the Virtual Server, set the Default Persistence Profile to “Cookie” and Fallback Persistence Profile to “source_addr”.</p>
<p style="text-align: center;"><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting9.png"><img class="size-full wp-image-959  aligncenter" title="livemeeting9" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/04/livemeeting9.png" alt="" width="490" height="868" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.TheF5Guy.com/blog/2010/04/live-meeting-portal-server-and-big-ip-ltm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Citrix XenApp 5.0, BIG-IP and X-Forwarded-For</title>
		<link>http://www.TheF5Guy.com/blog/2010/02/citrix-xenapp-5-0-bigip-x-forwarded-for/</link>
		<comments>http://www.TheF5Guy.com/blog/2010/02/citrix-xenapp-5-0-bigip-x-forwarded-for/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 02:56:05 +0000</pubDate>
		<dc:creator>naladar</dc:creator>
				<category><![CDATA[BIG-IP]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[X-Forwarded-For]]></category>
		<category><![CDATA[Citrix]]></category>
		<category><![CDATA[f5]]></category>
		<category><![CDATA[how to]]></category>

		<guid isPermaLink="false">http://www.TheF5Guy.com/blog/?p=846</guid>
		<description><![CDATA[I recently had the pleasure of working on a Citrix 5.0 implementation and I wanted to share a few things that I learned during that setup.  As many of you know, there are two deployment guides that have been made available by F5 Networks in regards to setting up Citrix Presentation Server 4.5 in TMOS [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/02/Citrix_Ready_badge_Medium.png"><img class="alignright size-thumbnail wp-image-848" title="Citrix_Ready_badge_Medium" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/02/Citrix_Ready_badge_Medium-150x150.png" alt="" width="114" height="114" /></a>I recently had the pleasure of working on a Citrix 5.0 implementation and I wanted to share a few things that I learned during that setup.  As many of you know, there are two deployment guides that have been made available by F5 Networks in regards to setting up Citrix Presentation Server 4.5 in TMOS versions 9.x and 10.x.  They are excellent guides and the best thing about them is that you can utilize those guides to assist you in deploying Citrix XenApp 5.0, with a few exceptions of course.  Those exceptions are what I will be covering in this tech tip.</p>
<p>Both of the previously mentioned deployment guides discuss editing files on the Citrix farms Web Interface servers so that it looks for the client IP address in the X-Forwarded-For HTTP header.  Otherwise, every connection will appear to be originating from the BIG-IP LTM and not from its true IP.  After reading both guides and looking at my current environment I was dismayed to find that the files and locations mentioned were no longer valid.  I then turned to my top three resources on the web in the search for an answer: AskF5, DevCentral and Google.<span id="more-846"></span></p>
<p>I struck out on the first two (which seldom happens) but my Google search did turn up some interesting results on the Citrix Forums.  I finally found some code posted by Sam Jacobs back in August 2009 that modifies the way the Citrix farm looks up the client IP address.  His method allows for the use of the X-Forwarded-For header.</p>
<p>The first file that you will want to find and edit is the Include.java file.  You will want to locate and change this file on every Web Interface XenApp server in the farm.  Speaking from experience, save a copy of the original file to a safe location such as your desktop or flash drive.  DO NOT copy the file and rename the original to Include.old and leave it on the server.  It may sound crazy, but doing that will not work.  I’m not a programmer, so I cannot tell you why that will not work, but I can tell you I know for a fact it will not.  That being said, here is the file path for the Include.java file:</p>
<p>“\Inetpub\wwwroot\Citrix\XenApp\app_code\PagesJava\com\citrix\wi\pageutils\Include.java”</p>
<p>Now that you have found the file, open it up with a text editor (I use Textpad) and find the Java routine named “getClientAddress”.  Replace the code for that routine with the code listed below.<br />
<code><br />
public static String getClientAddress(WIContext wiContext) {<br />
String ageClientAddress = AGEUtilities.getAGEClientIPAddress(wiContext);<br />
String userIPAddress = wiContext.getWebAbstraction().getRequestHeader("X-FORWARDED-FOR");<br />
if (userIPAddress == null) {<br />
userIPAddress = wiContext.getWebAbstraction().getUserHostAddress();<br />
}<br />
return (ageClientAddress != null ? ageClientAddress : userIPAddress);<br />
}<br />
</code><br />
Save the file and wash/rinse/repeat this step on every Web Interface server in the farm.  The next thing that you will want to do is to modify the login page so that it displays the client IP address being obtained from the X-Forwarded-For header.  The file you will want to edit is called “loginView.ascx” and can be found in the following file path on your Web Interface Servers:</p>
<p>”\inetpub\wwwroot\Citrix\XenApp\app_data\include\loginView.ascx”</p>
<p>The code you will want to add is:<br />
<code><br />
Client IP: &lt;%= com.citrix.wi.pageutils.Include.getClientAddress(wiContext) %&gt;<br />
</code><br />
I added the code directly below the LoginPageControl viewControl line and it works well for me.  Save the file and repeat this step on every Web Interface server in the farm and reboot each Web Interface Server after you are done.  Then it is time for the moment of truth&#8230; fire up your browser of choice and navigate to the Citrix login page.  If you have successfully set everything up and have finished following the rest of the deployment guide you should see a screen similar to the one below:</p>
<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/02/citrixloginpage.png"><img class="aligncenter size-full wp-image-852" title="citrixloginpage" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/02/citrixloginpage.png" alt="" width="471" height="231" /></a></p>
<p>If you receive an error message or the screen doesn&#8217;t load, then you might want to go back and check your settings again.  Then that&#8217;s it!  I am aiming to develop some custom monitors for the Web Interface Server and for the XML Broker Servers over the next few weeks.  Once I have those done I will put them out in the Devcentral forums for the community enjoy.</p>
<p>I am very happy to mention that the kind folks over at F5 Networks allowed me to submit this as a Tech Tip article which you can find on their site at:</p>
<p><a title="DevCentral Tech Tip" href="http://devcentral.f5.com/Default.aspx?tabid=63&amp;articleType=ArticleView&amp;articleId=1082335" target="_blank">http://devcentral.f5.com/Default.aspx?tabid=63&amp;articleType=ArticleView&amp;articleId=1082335</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.TheF5Guy.com/blog/2010/02/citrix-xenapp-5-0-bigip-x-forwarded-for/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Config Sync and SSL Certificates</title>
		<link>http://www.TheF5Guy.com/blog/2010/02/config-sync/</link>
		<comments>http://www.TheF5Guy.com/blog/2010/02/config-sync/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 04:09:54 +0000</pubDate>
		<dc:creator>naladar</dc:creator>
				<category><![CDATA[BIG-IP]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[f5]]></category>
		<category><![CDATA[how to]]></category>

		<guid isPermaLink="false">http://www.TheF5Guy.com/blog/?p=830</guid>
		<description><![CDATA[I learned an interesting thing about the Config Sync process the other day and I wanted to share the story with others in the community.  I was on a BIG-IP 6400 unit that was the Active unit in an Active/Standby pair, just doing some pre-spring cleaning (I bet there are some Network Support Engineers shaking [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/02/sslcertificate.jpg"><img class="alignleft size-full wp-image-832" title="sslcertificate" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2010/02/sslcertificate.jpg" alt="" width="102" height="98" /></a>I learned an interesting thing about the Config Sync process the other day and I wanted to share the story with others in the community.  I was on a BIG-IP 6400 unit that was the Active unit in an Active/Standby pair, just doing some pre-spring cleaning (I bet there are some Network Support Engineers shaking their head right about now) and decided I needed to clear out all of the old expired SSL certificates out of the certificate store on the unit.</p>
<p>No problem, I identified all of the expired certificates, checked the box beside them and hit the delete button at the bottom of the page.  After verifying everything was still happy and the support tickets didn&#8217;t start flooding my inbox I decided to run a config sync and push the config changes over to the standby box.</p>
<p>The config sync ran without a problem and the gui showed Config Sync: OK.  I then proceeded to check my changes on the standby unit, just for verification purposes.  And that ladies and gentlemen, is when the fun began&#8230;.<br />
<span id="more-830"></span></p>
<p>As I was verifying the changes I noticed something I thought was rather strange.  The old SSL certificates that I deleted on the Active unit, were still there in the Standby units SSL Certificate store!  My first thought, oops, my Trusted Device Certificates must be out of whack.  I then proceeded to delete the trusted device certs and ran the &#8220;big_ip add&#8221; command from the CLI on each unit.  I checked my trusted device certificates and like magic there they were.  I ran another Config Sync thinking that probably fixed the problem, but wait&#8230; no such luck.</p>
<p>The Config Sync ran and didn&#8217;t kick out any errors, but the old SSL certificates were still in there in all their expired glory.  Frustrated and humbled once again, I decided to run a quick test by deleting a VS on the Active Unit to see if it would be removed once I ran a Config Sync.  I blew away the VIP I use for testing and ran the Config Sync again.  The VS was deleted off of the Standby Unit.  Not knowing off the top of my head what to do next, I then proceeded to open a ticket with my good friends over at F5 Networks.  I didn&#8217;t have a lot of faith in my running configuration at the time so I went ahead and opened the ticket as a level 2 ticket (site at risk).</p>
<p>I quickly received a phone call from a Network Support Engineer named Kevin &#8220;CB&#8221; Midkiff.  We went through the standard procedure of qkview files and few other tests.  After going over the problem Mr. Midkiff proceeded to explain to me that while the SSL Certificates store is indeed carried over when you run a Config Sync IT DOES NOT DELETE SSL Certificates on the unit that you push the config to.  In my case it was the Standby Unit.  The Config Sync function only appends SSL Certificates.</p>
<p>Moral to the story?  If you are double checking your configurations and happen to see some lingering SSL certificates don&#8217;t worry, just select them and let the delete button work its magic on them.  Also as an FYI, &#8220;CB&#8221; was great to work with and very knowledgeable.  Thanks again for your help Mr. Midkiff.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.TheF5Guy.com/blog/2010/02/config-sync/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WebAccelerator Update &#8211; From TMOS 9.4.4 to 9.4.8</title>
		<link>http://www.TheF5Guy.com/blog/2009/10/webaccelerator-update-from-tmos-9-4-4-to-9-4-8/</link>
		<comments>http://www.TheF5Guy.com/blog/2009/10/webaccelerator-update-from-tmos-9-4-4-to-9-4-8/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 22:19:59 +0000</pubDate>
		<dc:creator>naladar</dc:creator>
				<category><![CDATA[BIG-IP]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[f5]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[WebAccelerator]]></category>

		<guid isPermaLink="false">http://www.TheF5Guy.com/blog/?p=507</guid>
		<description><![CDATA[I recently had the opportunity to upgrade a BIG-IP 6400 unit from TMOS version 9.4.4 to TMOS version 9.4.8.  Everything went very well with the upgrade, but I did run into two little snags that I wanted to mention.  I will cover the main issue first and then write up another story in a day [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-509" href="http://www.TheF5Guy.com/blog/2009/10/webaccelerator-update-from-tmos-9-4-4-to-9-4-8/softwareupdate-256/"><img class="alignleft size-full wp-image-509" title="softwareUpdate-256" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2009/10/softwareUpdate-256.png" alt="softwareUpdate-256" width="110" height="110" /></a>I recently had the opportunity to upgrade a BIG-IP 6400 unit from TMOS version 9.4.4 to TMOS version 9.4.8.  Everything went very well with the upgrade, but I did run into two little snags that I wanted to mention.  I will cover the main issue first and then write up another story in a day or two about the other.</p>
<p>The unit that was upgraded has three modules running on it, the GTM, LTM and WA modules.  The issue is caused by the WebAccelerator module logging to many messages out to the PVAC log, which can lead to excessive disk I/O and may cause the log file to grow so large it crashes the WebAccelerator module.  It is now a Known Issue and is being tracked in CR127854.  So if you have upgraded to TMOS 9.4.8 and you are running the WebAcceleration module you might want to keep an eye out for this!<br />
<span id="more-507"></span><br />
If you believe you have a unit experiencing this issue I would advise you to contact F5 Technical Support and open a case with them.  An Engineering Hotfix can be provided to you that addresses this issue.  In the meantime, if you are able to stop using the WebAccelerator class profiles, then I would suggest not using those until you have downloaded and applied the hotfix.  Below is the text from AskF5.com regarding the issue.</p>
<p><span style="font-size: small;"><strong>Known Issue</strong></span><br />
<strong>Updated:</strong> 9/17/09 10:11 AM<br />
<img src="https://support.f5.com/images/assets/icon-ki.gif" border="0" alt="Known Issue" /></p>
<div id="docrichtext">
<p>When an object is proxied by PVAC on BIG-IP WebAccelerator version 9.4.8, several debug messages are logged to the <strong>/var/log/wa/pvac.log </strong>file.</p>
<p>The messages for an image object appear similar to the following example:</p>
<p><span><code>WA Debug: appId = 0x36d3<br />
WA Debug: appConfigId = 0x36d4<br />
WA Debug: appSignId = 0x0<br />
WA Debug: AppId [0xab0a] temp [0x0][0x0][0xab][0xa]</code></span></p>
<p>The messages for an HTML object appear similar to the following example:</p>
<p><span><code>WA Debug: appId = 0x36d3<br />
WA Debug: appConfigId = 0x36d4<br />
WA Debug: appSignId = 0x0<br />
WA Debug: AppId [0xab3f] temp [0x0][0x0][0xab][0x3f]<br />
WA Debug: Preventing IBR for: App: [14036:Site.Application Generated.Pages] PolicyNode: [43839] maxAge: [0]</code></span></p>
<p>The debug messages reflect normal system operation, and may be safely ignored. However, as a result of logging these messages, you may observe the following side effects:</p>
<ul>
<li>Excessive disk I/O required to log the messages may negatively impact system performance</li>
<li>The PVAC log file may grow to an excessive size, causing the BIG-IP WebAccelerator module to become unstable and crash</li>
</ul>
<p>F5 Networks Product Development is tracking this issue as CR127854.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.TheF5Guy.com/blog/2009/10/webaccelerator-update-from-tmos-9-4-4-to-9-4-8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using not In An iRule</title>
		<link>http://www.TheF5Guy.com/blog/2009/08/using_not_in_an_irule/</link>
		<comments>http://www.TheF5Guy.com/blog/2009/08/using_not_in_an_irule/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 05:01:56 +0000</pubDate>
		<dc:creator>naladar</dc:creator>
				<category><![CDATA[BIG-IP]]></category>
		<category><![CDATA[iRule]]></category>
		<category><![CDATA[f5]]></category>
		<category><![CDATA[how to]]></category>

		<guid isPermaLink="false">http://www.TheF5Guy.com/blog/?p=291</guid>
		<description><![CDATA[Sometimes a people just make things harder than they have to be.  Myself included unfortunately.  Not long ago, I was given the task to write an iRule that would scan the URL of an incoming HTTP request and redirect it to a new location.  No problem right?  I have done that a million times as [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-296 alignleft" title="homer_simpson" src="http://www.TheF5Guy.com/blog/wp-content/uploads/2009/08/homer_simpson-249x300.jpg" alt="homer_simpson" width="119" height="144" />Sometimes a people just make things harder than they have to be.  Myself included unfortunately.  Not long ago, I was given the task to write an iRule that would scan the URL of an incoming HTTP request and redirect it to a new location.  No problem right?  I have done that a million times as I am sure most of you out there have as well.  Here&#8217;s the catch.  It turns out I would need to scan the URL for a value that was <span style="text-decoration: underline;">NOT</span> there.</p>
<p>Now this was an afront to my logic!  My brain was so used to thinking &#8220;If this, then this&#8221;, that it really was hard for me to wrap my brain around how I was going to pull this off.  So of course, I did what any sane F5&#8242;er does when he is looking for an answer to a puzzle he cannot solve.  I turned to <a title="F5 DevCentral" href="http://devcentral.f5.com/" target="_blank">Devcentral</a> and the community forums.  I dug around for a while and eventually I found an old 4.0 iRule where an individual had used the &#8220;not&#8221; Logical Operator.</p>
<p><span id="more-291"></span> So I gave myself a big slap on the forehead and muttered a Homer Simpson&#8217;ish &#8220;DOH!!&#8221;.  I later went on to discover that the &#8220;not&#8221; Logical Operator is well documented on DevCentral <a title="Not Logical Operator" href="http://devcentral.f5.com/Wiki/default.aspx/iRules/not.html">here</a>.  Below is the simple iRule that has saved our company thousands of dollars, saved the help desk many man hours of labor, prevented users from going insane because of broken links and keeps things simple.  It is amazing how an iRule so simple, can have such a dramatic impact.  So, the next time you are writing an iRule, just think of all the things you could &#8220;NOT&#8221; be doing!</p>
<p><code><br />
<span style="color: #00ff00;">when HTTP_REQUEST {<br />
if { not ([string tolower [HTTP::host]] contains ".mycompany.com")}{<br />
HTTP::redirect "https://[HTTP::host].mycompany.com[HTTP::uri]"<br />
}<br />
}</span><br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.TheF5Guy.com/blog/2009/08/using_not_in_an_irule/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How To Clone A Ubuntu 64-bit Server</title>
		<link>http://www.TheF5Guy.com/blog/2009/03/how-to-clone-a-64-bit-ubuntu-810-machine/</link>
		<comments>http://www.TheF5Guy.com/blog/2009/03/how-to-clone-a-64-bit-ubuntu-810-machine/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 01:19:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[clone]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[Virtual Machine]]></category>

		<guid isPermaLink="false">http://www.Thef5Guy.com/?p=178</guid>
		<description><![CDATA[This last weekend I decided to P2V or Physical to Virtual a Ubuntu x64 machine and wanted to share a little bit of information about that experience.  I found a lot of  tutorials online about cloning Ubuntu machines, but they all seemed a little to involved for what I was trying to do.  After a [...]]]></description>
			<content:encoded><![CDATA[<p>This last weekend I decided to P2V or Physical to Virtual a Ubuntu x64 machine and wanted to share a little bit of information about that experience.  I found a lot of   tutorials online about cloning Ubuntu machines, but they all seemed a little to involved for what I was trying to do.  After a bit of searching I reached the conclusion that I just wanted some software that would handle most of the process for me.  Having previous experience with Norton Ghost and Symantec Backup Exec, I began searching for the Linux equivalent to those programs.<br />
<span id="more-178"></span><br />
There were three things that I kept in mind while making my software selection.</p>
<p>1.  It had to support Ubuntu 64-bit Version 8.10.</p>
<p>2.  I wanted an official support channel that I could lean on if I ran into problems.</p>
<p>3.  It had to be inexpensive.</p>
<p>I found a number of $300+ solutions, but I don&#8217;t consider that cheap&#8230; To me, cheap is $50 or less.  Then as luck would have it I found a great solution for a mere $29.99.  The program is called &#8220;Image For Linux&#8221; and it is available at:</p>
<p><a href="http://www.terabyteunlimited.com/image-for-linux.htm">http://www.terabyteunlimited.com/image-for-linux.htm</a></p>
<p>I followed the setup directions provided with the download and within an hour I had successfully cloned my server over to a VM.  The only bump in the road was easy to overcome and I think the problem may have been caused by me choosing an incorrect setting before the clone process.  Because of that, I had to reinstall Grub on the VM which was no big deal.  I just loaded the Ubuntu disc, fired up the VM and had it boot from the Live-CD.  Then I went to the command line and typed (be sure to hit the enter key after each command):<br />
<code><br />
sudo grub<br />
find /boot/grub/stage1<br />
root (hd0,4)<br />
setup (hd0)<br />
quit<br />
</code><br />
The first line loads grub.  The second finds your boot partition and displays that information back out on the command line for you to read.  The output varies based on your install of course.  In my case hd0,4 is the only thing the second command displayed on screen after running so my choice was pretty easy.  Using that input, lines three and four tell grub where to install and the fifth line of course kicked me back out of grub.   I then removed the Live-CD, rebooted the VM and that was it!  The whole process was very painless and the software proved to be very capable.  If you have a need to clone or P2V a Ubuntu Linux machine then I recommend this software.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.TheF5Guy.com/blog/2009/03/how-to-clone-a-64-bit-ubuntu-810-machine/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

