<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Jason Rahm</title>
        <link>http://devcentral.f5.com/weblogs/jason/Default.aspx</link>
        <description>Jason's Blog</description>
        <language>en-US</language>
        <copyright>Jason Rahm</copyright>
        <generator>Subtext Version 2.1.1.1</generator>
        <image>
            <title>Jason Rahm</title>
            <url>http://devcentral.f5.com/weblogs/images/RSS2Image.gif</url>
            <link>http://devcentral.f5.com/weblogs/jason/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Come Join DevCentral for the Seattle DotNetNuke User Group Meeting</title>
            <link>http://devcentral.f5.com/weblogs/jason/archive/2012/02/02/come-join-devcentral-for-the-seattle-dotnetnuke-user-group-meeting.aspx</link>
            <description>&lt;p&gt;If you didn’t know, the &lt;a title="" href="http://devcentral.f5.com" rel=""&gt;DevCentral&lt;/a&gt; platform runs on DotNetNuke, the leading open source ASP.Net CMS. It’s a great development platform for turning out rich sites, and we’re excited to be hosting the next Seattle DNN User Group meeting next &lt;strong&gt;Wednesday, February 8th&lt;/strong&gt;, beginning at 6pm at 401 Elliot Ave West, Seattle, WA.&lt;/p&gt;  &lt;h3&gt;Agenda&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;6:00 - Arrive Sign in&lt;/li&gt;    &lt;li&gt;6:10 - Tour F5 facilities&lt;/li&gt;    &lt;li&gt;6:30 – Presentation Begins &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Steven – Introductions and DC/DNN Overview&lt;/li&gt;      &lt;li&gt;April – Managing a Community&lt;/li&gt;      &lt;li&gt;Jason – Overview of the infrastructure we run&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;7:20 – Q &amp;amp; A&lt;/li&gt;    &lt;li&gt;7:30 – Social Hour – &lt;a href="http://www.buckleysseattle.com" target="_blank"&gt;Buckley’s&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We’re super excited to be involved in this next DNN user group, hope to see you there!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:42868e54-be3e-4364-bdf7-38307c7c4170" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5+DevCentral" rel="tag"&gt;F5 DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DotNetNuke" rel="tag"&gt;DotNetNuke&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DNN" rel="tag"&gt;DNN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Seattle+DNN+User+Group" rel="tag"&gt;Seattle DNN User Group&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Buckley's" rel="tag"&gt;Buckley's&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jason/aggbug/1104467.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Rahm</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/jason/archive/2012/02/02/come-join-devcentral-for-the-seattle-dotnetnuke-user-group-meeting.aspx</guid>
            <pubDate>Thu, 02 Feb 2012 16:07:20 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/jason/comments/1104467.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/jason/archive/2012/02/02/come-join-devcentral-for-the-seattle-dotnetnuke-user-group-meeting.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/jason/comments/commentRss/1104467.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Juice-Jacking Revisited</title>
            <category>Security</category>
            <link>http://devcentral.f5.com/weblogs/jason/archive/2012/01/31/juice-jacking-revisited.aspx</link>
            <description>&lt;p&gt;It’s a crazy world out there. I ran (well, by “ran” I mean jogged slowly enough to pass the old ladies on the track) this morning at the YMCA, lifted weights for a little while, and then hit the elliptical for 20 minutes before heading home. My gym’s ellipticals have the Nike+ package where you can store your workouts on your iPhone/iPod, and without thinking I jacked in. Approximately 38 ms later (my internal meter is not calibrated)  I facepalmed and disconnected my iPhone in shame. Have I learned nothing?&lt;/p&gt;  &lt;p&gt;Turns out, after closer inspection, the cable was a standard cable plugged into a standard elliptical trainer, but I didn’t inspect it initially. I just trusted that everything was as it should be. &lt;a href="http://devcentral.f5.com/weblogs/jmichaels/archive/2011/12/22/building-a-security-mindset.aspx" target="_blank"&gt;Josh wrote about this trust back in December&lt;/a&gt;. This offense, of course, would be fine if it was my iPod, which holds nothing of value on it. But my iPhone? Well, it has quite a bit more I’d rather not share with Mr. or Mrs. Hacker. So what am I worried about?&lt;/p&gt;  &lt;p&gt;Juice-Jacking is another physical security attack vector. With smartphones battery charging capabilites tied also to the data access port, any maliciously minded individual could stand up a charging booth, offer it up for free, and the lambs would willingly head to the slaughter. As power surges into their batteries, their data surges into the hands of the enemy. Such was the case at DefCon this year, where at least 360 attendees, made acutely aware of connecting in any way to anything within a 2 mile radius of the conference, still powered up. Brian Krebs had a good &lt;a href="http://krebsonsecurity.com/2011/08/beware-of-juice-jacking/" target="_blank"&gt;post-DefCon write-up on Juice-Jacking&lt;/a&gt; you should check out. Be careful out there.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:dc87c8bb-dd19-40a9-81ac-557f9c133a2c" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5+DevCentral" rel="tag"&gt;F5 DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Security" rel="tag"&gt;Security&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Juice-Jacking" rel="tag"&gt;Juice-Jacking&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Josh+Michaels" rel="tag"&gt;Josh Michaels&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jason/aggbug/1104460.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Rahm</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/jason/archive/2012/01/31/juice-jacking-revisited.aspx</guid>
            <pubDate>Tue, 31 Jan 2012 16:22:09 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/jason/comments/1104460.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/jason/archive/2012/01/31/juice-jacking-revisited.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/jason/comments/commentRss/1104460.aspx</wfw:commentRss>
        </item>
        <item>
            <title>BIG-IP Configuration Object Naming Conventions</title>
            <category>BIG-IP</category>
            <category>LTM</category>
            <category>GTM</category>
            <category>LTM VE</category>
            <category>Misc</category>
            <link>http://devcentral.f5.com/weblogs/jason/archive/2011/11/28/big-ip-configuration-object-naming-conventions.aspx</link>
            <description>&lt;p&gt;George posted &lt;a href="http://devcentral.f5.com/weblogs/watkins/archive/2010/07/12/thoughts-on-hostname-nomenclature.aspx" target="_blank"&gt;an excellent blog on hostname nomenclature&lt;/a&gt; a while back, but something we haven’t discussed much in this space is a naming convention for the BIG-IP configuration objects. Last week, &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/52/aft/2158823/showtab/groupforums/Default.aspx" target="_blank"&gt;DevCentral community user Deon posted a question&lt;/a&gt; on exactly that. Sometimes there are standards just for the sake of having one, but in most cases, and particularly in this case, having standards is a very good thing. Señor Forum, hoolio, and MVP hamish weighed in with some good advice.&lt;/p&gt;  &lt;p&gt;[app name]_[protocol]_[object type]&lt;/p&gt;  &lt;p&gt;Examples:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;www.example.com_http_vs      &lt;br /&gt;www.example.com_http_pool       &lt;br /&gt;www.example.com_http_monitor &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;As hoolio pointed out in the forum, each object now has a description field, so the metadata capability is there to establish identifying information (knowledge base IDs, troubleshooting info, application owners), but having an object name that is quickly searchable and identifiable to operational staff is key. Hamish had a slight alternative format for virtuals:&lt;/p&gt;  &lt;p&gt;[fqdn]_[port]&lt;/p&gt;  &lt;p&gt;For network virtuals, I’ve always made the network part of the name, as hamish also recommends in his guidance:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;network VS's tend to be named net-net.num.dot.ed-masklen. e.g. net-0.0.0.0-0 is the default address. Where they conflict (e.g. two defaults depending on src clan, it gets an extra descriptor between net- and the ip address. e.g. net-wireless-0.0.0.0-0 (Default network VS for a wireless VLAN). I don't currently have any network VS's for specific ports. But they'd be something like net-0.0.0.0-0-port &lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Your Turn&lt;/h2&gt;  &lt;p&gt;What standards do you use? Share in the comments section below, or post to the forum thread.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4b0d3988-d263-4723-b2df-5bff530cae3e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5+DevCentral" rel="tag"&gt;F5 DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Standards" rel="tag"&gt;Standards&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Nomenclature" rel="tag"&gt;Nomenclature&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BIG-IP" rel="tag"&gt;BIG-IP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/George+Watkins" rel="tag"&gt;George Watkins&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;,&lt;a href="http://technorati.com/tags/hoolio" rel="tag"&gt;hoolio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/hamish" rel="tag"&gt;hamish&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jason/aggbug/1102424.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Rahm</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/jason/archive/2011/11/28/big-ip-configuration-object-naming-conventions.aspx</guid>
            <pubDate>Mon, 28 Nov 2011 23:19:02 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/jason/comments/1102424.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/jason/archive/2011/11/28/big-ip-configuration-object-naming-conventions.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/jason/comments/commentRss/1102424.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Stop that F5 Key From Refreshing the Page</title>
            <category>BIG-IP</category>
            <category>iRules</category>
            <category>LTM</category>
            <category>LTM VE</category>
            <link>http://devcentral.f5.com/weblogs/jason/archive/2011/11/16/stop-that-f5-key-from-refreshing-the-page.aspx</link>
            <description>&lt;p&gt;No, not “us” F5, the F5 key on the keyboard. You know, the one you hit relentlessly to refresh the page (well, the one I hit relentlessly during NFL games to update my fantasy football stats). Anyway, I was perusing the forums today, trying to catch up from a week attending our very excellent annual sales conference, and I noticed a thread that had to be shared.&lt;/p&gt;  &lt;h3&gt;The Question&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;Is there a way of preventing users from using the F5 button to refresh a web page? – &lt;a title="" href="http://devcentral.f5.com" rel=""&gt;DevCentral&lt;/a&gt; user &lt;strong&gt;ringoseagull&lt;/strong&gt; (nice handle, btw!)&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;The Solution&lt;/h3&gt;  &lt;p&gt;F5er and very active forum patrolman &lt;strong&gt;nitass &lt;/strong&gt;posted back within 30 minutes with a solution, featuring iRules of course! We’ve seen javascript insert iRules before, but this is a pretty handy use case, so I thought I’d share.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;when HTTP_REQUEST {     &lt;br /&gt;  STREAM::disable      &lt;br /&gt;  if {[HTTP::version] eq "1.1"} {      &lt;br /&gt;    if { [HTTP::header is_keepalive] } {      &lt;br /&gt;      HTTP::header replace "Connection" "Keep-Alive"      &lt;br /&gt;    }      &lt;br /&gt;    HTTP::version 1.0      &lt;br /&gt;  }      &lt;br /&gt;}      &lt;br /&gt;when HTTP_RESPONSE {      &lt;br /&gt;  if {[HTTP::header Content-Type] starts_with "text/"} {      &lt;br /&gt;    STREAM::expression "@&amp;lt;/\[Hh]\[Ee]\[Aa]\[Dd]&amp;gt;@&amp;lt;script language=javascript&amp;gt;function document.onkeydown() { if (event.keyCode==116) { event.keyCode=0; event.cancelBubble=true; return false; } }&amp;lt;/script&amp;gt;&amp;lt;/head&amp;gt;@"      &lt;br /&gt;    STREAM::enable      &lt;br /&gt;  }      &lt;br /&gt;}      &lt;br /&gt;when STREAM_MATCHED {      &lt;br /&gt;  STREAM::disable      &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This iRule uses the stream profile to find the head tag and insert the javascript necessary to control the F5 keycode behavior. Curl testing shows the javascript successfully delivered:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;[root@ve1023:Active] config # curl -i &lt;a href="http://172.28.65.152"&gt;http://172.28.65.152&lt;/a&gt;      &lt;br /&gt;HTTP/1.1 200 OK      &lt;br /&gt;Dat e: Fri, 11 Nov 2011 15:24:33 GMT      &lt;br /&gt;Server: Apache/2.2.3 (CentOS)      &lt;br /&gt;Last-Modified: Fri, 11 Nov 2011 14:48:14 GMT      &lt;br /&gt;ETag: "4183e4-3e-9c564780"      &lt;br /&gt;Accept-Ranges: bytes      &lt;br /&gt;Connection: close      &lt;br /&gt;Content-Type: text/html; charset=UTF-8&lt;/p&gt;    &lt;p&gt;&amp;lt;html&amp;gt;     &lt;br /&gt;&amp;lt;head&amp;gt;&amp;lt;script language=javascript&amp;gt;function document.onkeydown() { if (event.keyCode==116) { event.keyCode=0; event.cancelBubble=true; return false; } }&amp;lt;/script&amp;gt;&amp;lt;/head&amp;gt;      &lt;br /&gt;&amp;lt;body&amp;gt;      &lt;br /&gt;This is 101 host.      &lt;br /&gt;&amp;lt;/body&amp;gt;      &lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;    &lt;p&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Nice work, &lt;strong&gt;nitass&lt;/strong&gt;!&lt;/p&gt; &lt;i&gt;Related Articles&lt;/i&gt;   &lt;ul class="ArrowList"&gt;   &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/iRules.HomePage.ashx"&gt;iRules Wiki Home - DevCentral Wiki&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/iRules.iRulesReference.ashx"&gt;iRules Reference - DevCentral Wiki&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/iRules.STREAM__expression.ashx"&gt;STREAM::expression - DevCentral Wiki&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/50/Default.aspx"&gt;DevCentral Groups - iRules&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/122/iRules-101--01--Introduction-to-iRules.aspx"&gt;iRules 101 - #01 - Introduction to iRules &amp;gt; DevCentral &amp;gt; Tech Tips ...&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0222a55c-caeb-408a-8651-1b5a1a7344de" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5+DevCentral" rel="tag"&gt;F5 DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jason/aggbug/1100430.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Rahm</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/jason/archive/2011/11/16/stop-that-f5-key-from-refreshing-the-page.aspx</guid>
            <pubDate>Wed, 16 Nov 2011 22:08:23 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/jason/comments/1100430.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/jason/archive/2011/11/16/stop-that-f5-key-from-refreshing-the-page.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/jason/comments/commentRss/1100430.aspx</wfw:commentRss>
        </item>
        <item>
            <title>BSidesMO Wrap-up</title>
            <category>Security</category>
            <category>Community</category>
            <link>http://devcentral.f5.com/weblogs/jason/archive/2011/10/25/bsidesmo-wrap-up.aspx</link>
            <description>&lt;p&gt;Last Friday I attended my first &lt;a href="http://www.securitybsides.com/w/page/12194156/FrontPage" target="_blank"&gt;BSides&lt;/a&gt; event in Missouri’s capitol (literally in the capitol building!) Jefferson City. The BSides community exists to bring fellow security practitioners together &lt;img style="margin: 10px; display: inline; float: right" align="right" src="http://mymissourian.com/wp-content/uploads/2009/02/3239576282_ef614516aa.jpg" /&gt;to present and participate in a small-scale environment that encourages collaboration. I’m not the outgoing sort and I generally like to fade into the background and just learn, but this environment really lends itself well to establishing relationships with others. There were quite a few St Louis based individuals and the chatter is already taking off for setting up a BSides event closer to home in the Spring. Two tracks were offered at &lt;a href="http://www.securitybsides.com/w/page/35094907/BSidesMo" target="_blank"&gt;BSidesMO&lt;/a&gt;; I chose track 2. A brief review of a few of my favorite talks follows below. Many thanks to Jerry Gamblin (@jgamblin), Randy Raw (@randyraw), &amp;amp; Beth Young (@bethayoung) for putting on a great show.&lt;/p&gt;  &lt;h3&gt;The Evolution of Malware – Chris Quinn&lt;/h3&gt;  &lt;p&gt;I don’t spend any time studying malware, but I spend quite a bit of time cleaning it up. This talk was pretty eye opening on several levels. The increase of viruses (250k in 2007  –&amp;gt; 286M in 2010) is a shocking display of slope. The growth is primarily attributed to the mutating nature of most of the new viruses, targeting only a few dozen before mutating again. That narrowing of focus in targeting victims kind of reminds me of the scene in Jurassic Park where one of the raptors lays as bait while the other hides in the bushes ready to pounce: &lt;a id="abf00fe0-8bf1-4338-8549-ea3813a04419" href="http://www.youtube.com/watch?v=TO5wryDdEI0" alt="youtube"&gt;Clever Girl&lt;/a&gt;! The real payoff of the talk, however, was the discussion on Stuxnet. Some high level details on design:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Used seven distinct mechanisms to spread, six of which leveraged 0-day vulnerabilities)&lt;/li&gt;    &lt;li&gt;Comprised of 15 modules&lt;/li&gt;    &lt;li&gt;Five mechanisms to conceal itself&lt;/li&gt;    &lt;li&gt;reprograms industrial PLCs w/ 10k lines of code (10k!)&lt;/li&gt;    &lt;li&gt;rootkits for windows PC and the PLC&lt;/li&gt;    &lt;li&gt;used two stolen certificates to sign its files making them look legitimate&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For systems infected without the appropriate configuration, the virus did nothing. Otherwise, it would collect telemetry data for days and then replay to monitoring systems while then controlling the PLCs at will. Amazing stuff. Bruce Schneier has &lt;a href="http://www.schneier.com/blog/archives/2010/10/stuxnet.html" target="_blank"&gt;a nice summary&lt;/a&gt; of the knowns/unknowns (at time of writing), and you can read &lt;a href="http://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/w32_stuxnet_dossier.pdf" target="_blank"&gt;Symantec’s comprehensive dossier&lt;/a&gt; on the subject as well.&lt;/p&gt;  &lt;h3&gt;Make the World Go Away – Beth Young&lt;/h3&gt;  &lt;p&gt;Beth’s talk focuses on reducing your threat landscape. She discussed inbound reduction techniques like blocking ip ranges from areas of the world that would have no business accessing a particular resource. This was interesting as the legwork required to build this yourself and implement on the firewalls is fairly cumbersome, but worthwhile. F5 customers can tap the built-in Quova geo-location services in BIG-IP LTM to stop requests at the door using the iRules whereis command, performing the same function in minutes what probably took Beth and her team a considerably longer time to achieve. The most interesting part of the talk concerned protecting internal users and in turn the organization by poisoning the DNS for known bad domains. This is done either by routing said requests to a bit bucket (IP based) or redirecting the requests to an alternative web-server for stats collection and remediation (name based). Both are intriguing, and I expect I’ll write this solution up utilizing F5 gear in the next few weeks.&lt;/p&gt;  &lt;h3&gt;Web Exploitation Trends – Larry Battle&lt;/h3&gt;  &lt;p&gt;Larry had some great information, a lot of which was similar to Chris Quinn’s, so I won’t rehash that. The social engineering discussion was engaging, however. I don’t recall the place (Surprise Valley, Sunrise Valley?) but Larry described a place in Idaho that had an entire real-estate website for people wanting to relocate there, only the place didn’t even exist. The entire site was a scam, and when you clicked on the videos, a flash “upgrade” would be presented, at which time it appeared flash was updating (with real-looking flash screens) but actually malware was being downloaded instead. The craftiness of these criminals is amazing. The other uncool but fascinating part was the “You have a virus, pay $25 and we’ll clean it” scam. I always go straight to task manager and kill the processes as soon as these pop-up, but I wasn’t aware that they aren’t malware in the sense that they do damage to your system. It’s really just a scare tactic to get you to spend $25. The whole thing is a ruse, and does nothing to infect or clean your system. Fascinating stuff.&lt;/p&gt; &lt;i&gt;Related Articles&lt;/i&gt;   &lt;ul class="ArrowList"&gt;   &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2011/03/02/where-do-you-wear-your-malware.aspx"&gt;Where Do You Wear Your Malware?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2011/04/08/3-billion-malware-attacks-and-counting.aspx"&gt;3 Billion Malware Attacks and Counting&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/smaierhofer/Tags/Malware/default.aspx"&gt;Stefan Maierhofer - Malware&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/12/17/e-card-malware.aspx"&gt;e-card Malware&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/psilva/category/2339.aspx"&gt;Pete Silva - malware&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/Forums/tabid/53/afv/topic/aff/18/aft/16471/Default.aspx"&gt;generic malware/spyware/loggers - DevCentral - DevCentral Groups ...&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2010/12/15/2010-year-end-security-wrap.aspx"&gt;2010 Year End Security Wrap&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/Joe/Tags/Trojan/default.aspx"&gt;Joe Pruitt - Trojan&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/psilva/archive/2011/06/14/custom-code-for-targeted-attacks.aspx"&gt;Custom Code for Targeted Attacks&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/Joe/archive/2008/12/16/ie7-offers-another-reason-to-use-firefox.aspx"&gt;IE7 Offers Another Reason To Use FireFox&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f1c62141-4d46-4f92-b2b1-dcd67af0c554" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5+Devcentral" rel="tag"&gt;F5 Devcentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BSides" rel="tag"&gt;BSides&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BSidesMO" rel="tag"&gt;BSidesMO&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Chris+Quinn" rel="tag"&gt;Chris Quinn&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Beth+Young" rel="tag"&gt;Beth Young&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Larry+Battle" rel="tag"&gt;Larry Battle&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jerry+Gamblin" rel="tag"&gt;Jerry Gamblin&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Randy+Raw" rel="tag"&gt;Randy Raw&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;,&lt;a href="http://technorati.com/tags/malware" rel="tag"&gt;malware&lt;/a&gt;,&lt;a href="http://technorati.com/tags/security" rel="tag"&gt;security&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jason/aggbug/1098453.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Rahm</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/jason/archive/2011/10/25/bsidesmo-wrap-up.aspx</guid>
            <pubDate>Tue, 25 Oct 2011 14:41:46 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/jason/comments/1098453.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/jason/archive/2011/10/25/bsidesmo-wrap-up.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/jason/comments/commentRss/1098453.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Back in the Saddle</title>
            <link>http://devcentral.f5.com/weblogs/jason/archive/2011/08/01/back-in-the-saddle.aspx</link>
            <description>&lt;p&gt;July was a busy month.  I took the first three weeks off and drove much of what’s left of the “mother road” on &lt;a href="http://www.historic66.com/" target="_blank"&gt;Historic Route 66&lt;/a&gt;.with the family, our Ford Expedition, and way too many nights in our 31’ travel trailer.  Great memories and stories for a lifetime out of that trip.  I was home long enough to unpack, do laundry, and repack for a great week in Chicago with the &lt;a title="" href="http://devcentral.f5.com" rel=""&gt;DevCentral&lt;/a&gt; team.  On Monday, we had a great time diving in to F5 technology goodness with the MVPs (and hoolio and Chris Miller!) at the &lt;a href="http://thinkubators.com/" target="_blank"&gt;Thinkubator&lt;/a&gt;.  It was a great meeting place with a rooftop deck accessible only by a spiral staircase.  The view of downtown was amazing:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jason/Windows-Live-Writer/Back-in-the-Saddle_79FD/mvpsummit_pic1_2.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 10px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="mvpsummit_pic1" border="0" alt="mvpsummit_pic1" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jason/Windows-Live-Writer/Back-in-the-Saddle_79FD/mvpsummit_pic1_thumb.jpg" width="504" height="378" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It’s a good thing we all like each other ‘cause we spent the whole day together—three meals and some great content along the way. I particularly enjoyed the lightning talks from the MVPs, but the content from our product development/product management teams was great as well.  Tuesday, THE Colin Walker and I taught a “Short Course” (7 hours!) on iRules and had a great session.  The F5 Agility conference took place Wednesday and Thursday and the DevCentral booth was hopping with video interviews throughout.  Check out &lt;a href="http://devcentral.f5.com/weblogs/dctv/Default.aspx" target="_blank"&gt;DCTV&lt;/a&gt; for a great variety of partner/MVP interviews.&lt;/p&gt;  &lt;p&gt;Anyway, circling back to my title for this post: I’m back in the saddle, baby.  It’s a new week, a new month, and a new era for F5 with the &lt;a href="http://www.f5.com/news-press-events/press/2011/20110725a.html" target="_blank"&gt;announcement of BIG-IP v11&lt;/a&gt;. We here at DevCentral are getting the gears turning on all the content coming your way.  There will be plenty, as there is an astounding amount of innovation coming in this release.  I’m super excited, as are all the folks I’ve talked to that evaluated v11 during the beta windows.  Much to learn, much to do, so I’m signing off for now…&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:274d2ae2-f529-409e-9093-81d1e967bfa7" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5+DevCentral" rel="tag"&gt;F5 DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MVP" rel="tag"&gt;MVP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Thinkubator" rel="tag"&gt;Thinkubator&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BIG-IP" rel="tag"&gt;BIG-IP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BIG-IP+v11" rel="tag"&gt;BIG-IP v11&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jason/aggbug/1096316.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Rahm</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/jason/archive/2011/08/01/back-in-the-saddle.aspx</guid>
            <pubDate>Mon, 01 Aug 2011 14:34:48 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/jason/comments/1096316.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/jason/archive/2011/08/01/back-in-the-saddle.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/jason/comments/commentRss/1096316.aspx</wfw:commentRss>
        </item>
        <item>
            <title>So Yeah, Regex is Bad</title>
            <category>BIG-IP</category>
            <category>iRules</category>
            <category>Performance</category>
            <link>http://devcentral.f5.com/weblogs/jason/archive/2011/06/22/so-yeah-regex-is-bad.aspx</link>
            <description>&lt;p&gt;Don’t get me wrong, regex is awesome, and entirely useful—sometimes it’s the only option, it’s just not the &lt;em&gt;best&lt;/em&gt; tool of choice for wire speed applications.  Often the sys-admin and network type converts to BIG-IP will find the &lt;a href="http://tmml.sourceforge.net/doc/tcl/regexp.html" target="_blank"&gt;regexp&lt;/a&gt; tcl command and go that route because it’s familiar.  If that describes you, please let me introduce you to a couple more appropriate commands:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://tmml.sourceforge.net/doc/tcl/scan.html" target="_blank"&gt;scan&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://tmml.sourceforge.net/doc/tcl/" target="_blank"&gt;string&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These two commands will cover a great percentage of &lt;strong&gt;regexp&lt;/strong&gt;’s use cases, and will save significant resources on the system.  Don’t buy it?  Here’s an example:&lt;/p&gt;  &lt;blockquote&gt;   &lt;div id="codeSnippetWrapper"&gt;     &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;       &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;% &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; ip &lt;span style="color: #006080"&gt;"10.10.20.200"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;10.10.20.200&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;% time { &lt;span style="color: #0000ff"&gt;scan&lt;/span&gt; $ip {%d.%d.%d.%d} a b c d} 10000&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;2.1713 microseconds per iteration&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;% time {&lt;span style="color: #0000ff"&gt;regexp&lt;/span&gt; {([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})} $ip matched a b c d} 10000&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;34.2604 microseconds per iteration&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Two approaches, same result.  The time to achieve that result?  The &lt;strong&gt;scan&lt;/strong&gt; command bests &lt;strong&gt;regexp&lt;/strong&gt; by far.  I’ll save you the calculation…that’s a 93.7% reduction in processing time.  &lt;strong&gt;93.7 percent! &lt;/strong&gt;Now, mind you, the difference between 2 and 34 microseconds will be negligible to an individual request’s response time, but in the context of a single system handling hundreds of thousands or even millions of request per second, the difference matters.  A lot.&lt;/p&gt;

&lt;p&gt;Thanks to (who else?) hoolio for the example.  For other optimization considerations, check out the &lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/108/iRules-Optimization-101--01--if-elseif-and-switch.aspx" target="_blank"&gt;iRules Optimization 101 series&lt;/a&gt;.&lt;/p&gt;
&lt;i&gt;Related Articles&lt;/i&gt; 

&lt;ul class="ArrowList"&gt;
  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/339/iRules-101--14--TCL-String-Commands-Part-2.aspx"&gt;iRules 101 - #14 - TCL String Commands Part 2 &amp;gt; DevCentral &amp;gt; F5 ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/338/iRules-101--13--TCL-String-Commands-Part-1.aspx"&gt;iRules 101 - #13 - TCL String Commands Part 1 &amp;gt; DevCentral &amp;gt; F5 ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/2346/iRules-101--16--Parsing-Strings-with-the-TCL-Scan-Command.aspx"&gt;iRules 101 - #16 - Parsing Strings with the TCL Scan Command ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2007/08/01/2901.aspx"&gt;s/regex/English/g&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/197/Scan--Making-string-manipulation-efficient.aspx"&gt;Scan - Making string manipulation efficient &amp;gt; DevCentral &amp;gt; F5 ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/aft/1177132/asg/50/Default.aspx"&gt;Regex - DevCentral - F5 DevCentral &amp;gt; Community &amp;gt; Group Details ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Forums/tabid/53/afv/topic/aff/5/aft/1179075/Default.aspx"&gt;REGEX Alternatives - DevCentral - F5 DevCentral &amp;gt; Community ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Forums/tabid/53/afv/topic/aff/5/aft/1179188/afc/1250875/Default.aspx"&gt;Regex in STREAM::expression - DevCentral - F5 DevCentral ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Forums/tabid/53/afv/topic/aff/5/aft/1174534/Default.aspx"&gt;String map and redirect - DevCentral - F5 DevCentral &amp;gt; Community ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Forums/tabid/53/afv/topic/aff/5/aft/1172818/Default.aspx"&gt;string manipulation - DevCentral - F5 DevCentral &amp;gt; Community ...&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3bdf4fa0-0185-464d-bb00-4b5e3495259d" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5+DevCentral" rel="tag"&gt;F5 DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/regex" rel="tag"&gt;regex&lt;/a&gt;,&lt;a href="http://technorati.com/tags/regexp" rel="tag"&gt;regexp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/scan" rel="tag"&gt;scan&lt;/a&gt;,&lt;a href="http://technorati.com/tags/string" rel="tag"&gt;string&lt;/a&gt;,&lt;a href="http://technorati.com/tags/tcl" rel="tag"&gt;tcl&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/performance" rel="tag"&gt;performance&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jason/aggbug/1094497.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Rahm</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/jason/archive/2011/06/22/so-yeah-regex-is-bad.aspx</guid>
            <pubDate>Wed, 22 Jun 2011 21:12:00 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/jason/comments/1094497.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/jason/archive/2011/06/22/so-yeah-regex-is-bad.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/jason/comments/commentRss/1094497.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Changing the BIG-IP Default Syslog-NG Facilities</title>
            <category>BIG-IP</category>
            <category>LTM</category>
            <category>Logging</category>
            <link>http://devcentral.f5.com/weblogs/jason/archive/2011/06/20/changing-the-big-ip-default-syslog-ng-facilities.aspx</link>
            <description>&lt;p&gt;DevCentral community member geffr had a problem. The &lt;a href="http://www.f5.com/products/big-ip/application-security-manager.html"&gt;BIG-IP Application Security Manager&lt;/a&gt; module logs to the local3 facility but he needs to send them to the local7 facility on a remote server. Before giving up entirely, he posted to &lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/44/aft/25821/showtab/groupforums/Default.aspx#1250561"&gt;this thread&lt;/a&gt; in the Monitoring &amp;amp; Management group forum, where user nitass helped him jump through the syslog-ng hoops (&lt;a href="http://www.syslog.org/logged/pot-of-syslog-ng-tricks-version-3/"&gt;click here for tips &amp;amp; tricks on syslog-ng&lt;/a&gt;) to the working solution posted below. It’s pretty straight forward. Define a template, a filter, and a destination, and then put the pieces together in a log statement.&lt;/p&gt;  &lt;p&gt;&lt;i /&gt;&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;blockquote&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;b syslog &lt;span style="color: #0000ff"&gt;include&lt;/span&gt; &lt;span style="color: #006080"&gt;'"&lt;br /&gt;&lt;br /&gt;filter f_local3a {&lt;br /&gt;   facility(local3);&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;template t_asm {&lt;br /&gt;   template(\"&amp;lt;190&amp;gt; $MSGHDR$MSG\n\");&lt;br /&gt;   template_escape(no);&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;destination d_loghost5a {&lt;br /&gt;udp(\"2.2.2.2\" port (514) template(t_asm));&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;log {&lt;br /&gt;   source(local);&lt;br /&gt;   filter(f_local3a);&lt;br /&gt;   destination(d_loghost5a);&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;"'&lt;/span&gt; &lt;/pre&gt;
  &lt;/blockquote&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;Note: The b syslog include ‘ “ “ ‘ wrapper around the custom configuration is merely for importing the configuration, it’s note part of the configuration itself.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Related Articles&lt;/i&gt; &lt;/p&gt;

&lt;ul class="ArrowList"&gt;
  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/155/LTM-942-Custom-Syslog-Configuration.aspx"&gt;LTM 9.4.2+: Custom Syslog Configuration &amp;gt; DevCentral &amp;gt; F5 ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/44/aft/1171993/showtab/groupforums/Default.aspx"&gt;setting up syslog? - DevCentral - F5 DevCentral &amp;gt; Community ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/AdvDesignConfig/SyslogNGEmailConfiguration.html"&gt;DevCentral Wiki: Syslog NG Email Configuration&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/201/Configuring-syslog-ng-to-email-messages.aspx"&gt;Configuring syslog-ng to email messages &amp;gt; DevCentral &amp;gt; F5 ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/81/Syslog-Priority-Translation.aspx"&gt;Syslog Priority Translation &amp;gt; DevCentral &amp;gt; F5 DevCentral &amp;gt; Tech Tips&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/deb/Tags/syslog/default.aspx"&gt;Deb Allen - syslog&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/aff/32/aft/1172264/afv/topic/asg/44/Default.aspx"&gt;Customizing syslog-ng f_local0 filter - DevCentral - F5 DevCentral ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Forums/tabid/53/aff/32/aft/790720/afv/topic/Default.aspx"&gt;Syslog locally and remote with specific facility level ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Forums/tabid/53/aff/5/aft/84617/afv/topic/Default.aspx"&gt;Duplicate syslog traffic to multiple destinations - DevCentral ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Forums/tabid/53/aff/31/aft/27956/afv/topic/Default.aspx"&gt;Custom syslog-ng facility - DevCentral - F5 DevCentral &amp;gt; Community ...&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2cd57d08-f1cd-4ad7-ac1a-207b4f0a733c" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5+DevCentral" rel="tag"&gt;F5 DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/BIG-IP" rel="tag"&gt;BIG-IP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASM" rel="tag"&gt;ASM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Application+Security+Manager" rel="tag"&gt;Application Security Manager&lt;/a&gt;,&lt;a href="http://technorati.com/tags/syslog" rel="tag"&gt;syslog&lt;/a&gt;,&lt;a href="http://technorati.com/tags/syslog-ng" rel="tag"&gt;syslog-ng&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jason/aggbug/1094490.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Rahm</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/jason/archive/2011/06/20/changing-the-big-ip-default-syslog-ng-facilities.aspx</guid>
            <pubDate>Mon, 20 Jun 2011 15:44:26 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/jason/comments/1094490.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/jason/archive/2011/06/20/changing-the-big-ip-default-syslog-ng-facilities.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/jason/comments/commentRss/1094490.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Hosting Sorry, Error, or Maintenance Pages on BIG-IP LTM with iRules</title>
            <link>http://devcentral.f5.com/weblogs/jason/archive/2011/06/14/hosting-sorry-error-or-maintenance-pages-on-big-ip-ltm-with.aspx</link>
            <description>&lt;p&gt;I’ve posted on this before (&lt;a href="http://devcentral.f5.com/weblogs/jason/archive/2009/05/12/host-that-sorry-page-on-your-big-ip.aspx"&gt;Host that Sorry Page on your BIG-IP!&lt;/a&gt;) but it’s been a while and there have been a few updates.  Besides, narrowing the application to only sorry pages is a bit myopic—I’m sure my BIG-IP is offended that I treated it so callously.  Anyway, I got an inquiry a week or so ago about the images in tables not being picked up by the script.  The images in the table were referenced as such:&lt;/p&gt;  &lt;blockquote&gt;   &lt;div&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;#&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt; &lt;span style="color: #ff0000"&gt;background&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="genericofflinebackground.gif"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;align&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="center"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;width&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="1024"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;height&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="768"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;div&gt;
  &lt;br /&gt;I reached out to the author, Kirk Bauer, and he gave me some pointers as where to look.  There’s a function in the perl script that parses the html to look for items of interest:&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;blockquote&gt;
  &lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;sub&lt;/span&gt; start {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;my&lt;/span&gt; ($self, $tag, $attr, $attrseq, $origtext) = @_;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   # &lt;span style="color: #0000ff"&gt;print&lt;/span&gt; out original text
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($tag eq 'img') {
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($attr-&amp;gt;{'src'}) {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;         $attr-&amp;gt;{'src'} = &amp;amp;handle_object($tag, 'src', $attr-&amp;gt;{'src'});
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   }&lt;/pre&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Modifying the if ($tag..) conditional to match the table wasn’t that hard at all:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;sub&lt;/span&gt; start {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;my&lt;/span&gt; ($self, $tag, $attr, $attrseq, $origtext) = @_;
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   # &lt;span style="color: #0000ff"&gt;print&lt;/span&gt; out original text
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($tag eq 'img') {
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($attr-&amp;gt;{'src'}) {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;         $attr-&amp;gt;{'src'} = &amp;amp;handle_object($tag, 'src', $attr-&amp;gt;{'src'});
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      }
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   }
&lt;/pre&gt;&lt;pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($tag eq 'table') {
&lt;/pre&gt;&lt;pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($attr-&amp;gt;{'background'}) {
&lt;/pre&gt;&lt;pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;         $attr-&amp;gt;{'background'} = &amp;amp;handle_object($tag, 'background', $attr-&amp;gt;{'background'});
&lt;/pre&gt;&lt;pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      }
&lt;/pre&gt;&lt;pre style="background-color: #ffff00; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   }&lt;/pre&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;That solved problem number one.  The second problem with the script was that it wasn’t asking about partition preference, rather it just dumped the iRule and datagroups into the last partition defined in bigip.conf.  This was strange, as the code to handle partitions was in place:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;my&lt;/span&gt; @partitions;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;open&lt;/span&gt; (CONF, "&lt;span style="color: #8b0000"&gt;/config/bigip.conf&lt;/span&gt;") or &lt;span style="color: #0000ff"&gt;die&lt;/span&gt; "&lt;span style="color: #8b0000"&gt;Could not read /config/bigip.conf: $!\n&lt;/span&gt;";
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;while (&lt;span style="color: #0000ff"&gt;my&lt;/span&gt; $line = &amp;lt;CONF&amp;gt;) {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($line =~ /^partition (.+) {/) {
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;push&lt;/span&gt; @partitions, $1;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;   }
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;}&lt;/pre&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;The problem is that the regex is trying to match “partition &amp;lt;my partition&amp;gt; {“ and that is (at least in 10.2.1 HF3) no longer in the bigip.conf file.  It has been moved to bigip_sys.conf.  Updating the code as shown below solved the issue and now the user is asked for the appropriate partition and the iRule and datagroup gets deployed as expected.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;my&lt;/span&gt; @partitions;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      &lt;span style="color: #0000ff"&gt;open&lt;/span&gt; (CONF, "&lt;span style="color: #8b0000"&gt;/config/bigip_sys.conf&lt;/span&gt;") or &lt;span style="color: #0000ff"&gt;die&lt;/span&gt; "&lt;span style="color: #8b0000"&gt;Could not read /config/bigip_sys.conf: $!\n&lt;/span&gt;";
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      while (&lt;span style="color: #0000ff"&gt;my&lt;/span&gt; $line = &amp;lt;CONF&amp;gt;) {
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($line =~ /^partition (.+) {/) {
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;            &lt;span style="color: #0000ff"&gt;push&lt;/span&gt; @partitions, $1;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;         }
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"&gt;      }&lt;/pre&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;For the full script, head to the iRules wiki entry &lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/LTMMaintenancePageGenerator.html"&gt;LTM Maintenance Page Generator&lt;/a&gt; and grab version 2.2.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
&lt;i&gt;Related Articles&lt;/i&gt; 

&lt;ul class="ArrowList"&gt;
  &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/jason/archive/2009/05/12/host-that-sorry-page-on-your-big-ip.aspx"&gt;Host that Sorry Page on your BIG-IP!&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Forums/tabid/53/afv/topic/aff/5/aft/33977/Default.aspx"&gt;about i-rule sorry page configuration - DevCentral - F5 DevCentral ...&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/Automatic_maintenance_page___Sorry_page_with_images.html"&gt;DevCentral Wiki: Automatic_maintenance_page___ Sorry_page_with_images&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/SorryPageIRuleGenerator_Perl.html"&gt;DevCentral Wiki: Sorry Page I Rule Generator_ Perl&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/LTMMaintenancePageGenerator.html"&gt;DevCentral Wiki: LTM Maintenance Page Generator&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/CodeShare.html"&gt;DevCentral Wiki: CodeShare&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Default.aspx?tabid=53&amp;amp;aff=16&amp;amp;aft=4642&amp;amp;afv=topic"&gt;Sorry Page when Severs are down - DevCentral - F5 DevCentral ...&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/aft/26111/asg/39/Default.aspx"&gt;Site Dwon Page form https virtual server - DevCentral - F5 ...&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;
  &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ee2477b8-b0ac-4746-8fa5-9a74728b4381" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5+DevCentral" rel="tag"&gt;F5 DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/sorry+page" rel="tag"&gt;sorry page&lt;/a&gt;,&lt;a href="http://technorati.com/tags/error+page" rel="tag"&gt;error page&lt;/a&gt;,&lt;a href="http://technorati.com/tags/maintenance+page" rel="tag"&gt;maintenance page&lt;/a&gt;,&lt;a href="http://technorati.com/tags/perl" rel="tag"&gt;perl&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Kirk+Bauer" rel="tag"&gt;Kirk Bauer&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jason/aggbug/1094480.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Rahm</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/jason/archive/2011/06/14/hosting-sorry-error-or-maintenance-pages-on-big-ip-ltm-with.aspx</guid>
            <pubDate>Wed, 15 Jun 2011 01:04:50 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/jason/comments/1094480.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/jason/archive/2011/06/14/hosting-sorry-error-or-maintenance-pages-on-big-ip-ltm-with.aspx#feedback</comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/jason/comments/commentRss/1094480.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Removing A Strange HTTP Header with iRules</title>
            <link>http://devcentral.f5.com/weblogs/jason/archive/2011/05/31/removing-a-strange-http-header-with-irules.aspx</link>
            <description>&lt;p&gt;User Ralph Hoflich dropped an interesting problem off in the forums for his first post evah…he had a wireshark capture with a highly unusual header name:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:725c98a3-7f78-484a-9487-b899f96e9edb" class="wlWriterEditableSmartContent"&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jason/Windows-Live-Writer/Removing-Strange-Headers_CF1F/HTTP_header-8x6.jpg" title="HTTP Header " rel="thumbnail"&gt;&lt;img border="0" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/jason/Windows-Live-Writer/Removing-Strange-Headers_CF1F/HTTP_header_4.png" width="580" height="187" /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;Yes, the header name was “:”.  This is interesting as it is also the separator in headers between the field name/value pair as described in &lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2"&gt;rfc 2616 section 4.2&lt;/a&gt;.  Thankfully, it’s just another character and is parsed out as such with iRules.  So the simple task of removing a header like this is completed painlessly (as Ralph suspected in his own question).  I added a couple logging statements to check before/after request headers:&lt;/p&gt;  &lt;blockquote&gt;   &lt;div id="codeSnippetWrapper"&gt;     &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;       &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;when&lt;/span&gt; &lt;span style="color: #cc6633"&gt;HTTP_REQUEST&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;span style="color: #0000ff"&gt;log&lt;/span&gt; local0. &lt;span style="color: #006080"&gt;"[HTTP::header names]"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt; &lt;span style="color: #0000ff"&gt;HTTP::header&lt;/span&gt; remove :&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;when&lt;/span&gt; &lt;span style="color: #cc6633"&gt;HTTP_REQUEST_SEND&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;clientside&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;      &lt;span style="color: #0000ff"&gt;log&lt;/span&gt; local0. &lt;span style="color: #006080"&gt;"[HTTP::header names]"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;The &lt;a href="http://devcentral.f5.com/Wiki/default.aspx/iRules.HTTP__header"&gt;HTTP::header remove&lt;/a&gt; command will not error out if the header isn’t present, so there’s no need for a conditional check.  &lt;/p&gt;

&lt;h3&gt;Testing&lt;/h3&gt;

&lt;p&gt;From the browser, I couldn’t generate the load as desired with the Firefox modify headers plugin, but I was able to insert the header with cURL:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;root@jrahm-dev:~# curl -v -H ':: /r/n' &lt;a href="http://10.10.20.50/"&gt;http://10.10.20.50/&lt;/a&gt; 

    &lt;br /&gt;* About to connect() to 10.10.20.50 port 80 (#0) 

    &lt;br /&gt;*   Trying 10.10.20.50... connected 

    &lt;br /&gt;* Connected to 10.10.20.50 (10.10.20.50) port 80 (#0) 

    &lt;br /&gt;&amp;gt; GET / HTTP/1.1 

    &lt;br /&gt;&amp;gt; User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 

    &lt;br /&gt;&amp;gt; Host: 10.10.20.50 

    &lt;br /&gt;&amp;gt; Accept: */* 

    &lt;br /&gt;&amp;gt; :: /r/n 

    &lt;br /&gt;&amp;gt; 

    &lt;br /&gt;&amp;lt; HTTP/1.1 200 OK 

    &lt;br /&gt;&amp;lt; Date: Tue, 31 May 2011 20:02:57 GMT 

    &lt;br /&gt;&amp;lt; Server: Apache/2.2.14 (Ubuntu) 

    &lt;br /&gt;&amp;lt; Last-Modified: Thu, 24 Jun 2010 14:26:22 GMT 

    &lt;br /&gt;&amp;lt; ETag: "381fef-b1-489c77054eef8" 

    &lt;br /&gt;&amp;lt; Accept-Ranges: bytes 

    &lt;br /&gt;&amp;lt; Content-Length: 177 

    &lt;br /&gt;&amp;lt; Vary: Accept-Encoding 

    &lt;br /&gt;&amp;lt; Content-Type: text/html 

    &lt;br /&gt;&amp;lt; X-Pad: avoid browser bug 

    &lt;br /&gt;&amp;lt; 

    &lt;br /&gt;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;lt;h1&amp;gt;It works!&amp;lt;/h1&amp;gt; 

    &lt;br /&gt;&amp;lt;p&amp;gt;This is the default web page for this server.&amp;lt;/p&amp;gt; 

    &lt;br /&gt;&amp;lt;p&amp;gt;The web server software is running but no content has been added, yet.&amp;lt;/p&amp;gt; 

    &lt;br /&gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt; 

    &lt;br /&gt;* Connection #0 to host 10.10.20.50 left intact 

    &lt;br /&gt;* Closing connection #0 

    &lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And the resulting log statements:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;May 31 15:27:45 local/tmm info tmm[4972]: Rule header_remove &amp;lt;HTTP_REQUEST&amp;gt;: User-Agent Host Accept : 
    &lt;br /&gt;May 31 15:27:45 local/tmm info tmm[4972]: Rule header_remove &amp;lt;HTTP_REQUEST_SEND&amp;gt;: User-Agent Host Accept&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Update&lt;/font&gt;&lt;/strong&gt; – hoolio pointed out my error above with the slashes facing the wrong way and that the CRLF wouldn’t technically be part of the field value. He recommended an alternative approach (to the same results)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[root@golgotha:Active] config # echo -e "GET / HTTP/1.0\r\nHost: test\r\n: \r\nConnection: close\r\n\r\n" | nc 10.10.20.50 80 
    &lt;br /&gt;HTTP/1.1 200 OK 

    &lt;br /&gt;Date: Tue, 31 May 2011 23:15:00 GMT 

    &lt;br /&gt;Server: Apache/2.2.14 (Ubuntu) 

    &lt;br /&gt;Last-Modified: Thu, 24 Jun 2010 14:26:22 GMT 

    &lt;br /&gt;ETag: "381fef-b1-489c77054eef8" 

    &lt;br /&gt;Accept-Ranges: bytes 

    &lt;br /&gt;Content-Length: 177 

    &lt;br /&gt;Vary: Accept-Encoding 

    &lt;br /&gt;Connection: close 

    &lt;br /&gt;Content-Type: text/html&lt;/p&gt;

  &lt;p&gt;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;lt;h1&amp;gt;It works!&amp;lt;/h1&amp;gt; 
    &lt;br /&gt;&amp;lt;p&amp;gt;This is the default web page for this server.&amp;lt;/p&amp;gt; 

    &lt;br /&gt;&amp;lt;p&amp;gt;The web server software is running but no content has been added, yet.&amp;lt;/p&amp;gt; 

    &lt;br /&gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And the updated results: 
  &lt;br /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;May 31 18:39:50 local/tmm info tmm[4972]: Rule header_remove &amp;lt;HTTP_REQUEST&amp;gt;: Host : Connection
    &lt;br /&gt;May 31 18:39:50 local/tmm info tmm[4972]: Rule header_remove &amp;lt;HTTP_REQUEST_SEND&amp;gt;: Host Connection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;i&gt;Related Articles&lt;/i&gt; 

&lt;ul class="ArrowList"&gt;
  &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/01/15/i-am-in-your-http-headers-attacking-your-application.aspx"&gt;I am in your HTTP headers, attacking your application&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/wiki/default.aspx/iRules/HTTP__header.html"&gt;DevCentral Wiki: HTTP::header&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/macvittie/archive/2008/08/06/3519.aspx"&gt;Working around client-side limitations on custom HTTP headers&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/aft/1174746/asg/50/Default.aspx"&gt;Add http header of Server IP address? - DevCentral - F5 DevCentral ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Forums/tabid/53/afv/topic/aff/5/aft/2822/Default.aspx"&gt;Syntax for http header manipulation - DevCentral - F5 DevCentral ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/aft/1178695/asg/50/Default.aspx"&gt;iRule persistance based on HTTP header - DevCentral - F5 ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/aft/56131/asg/50/Default.aspx"&gt;redirect base on HTTP header - DevCentral - F5 DevCentral ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Forums/tabid/53/afv/topic/aff/5/aft/56062/Default.aspx"&gt;http header inserts - DevCentral - F5 DevCentral &amp;gt; Community ...&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://devcentral.f5.com/Community/GroupDetails/tabid/1082223/aft/10069/asg/50/Default.aspx"&gt;Error on HTTP::header insert - DevCentral - F5 DevCentral ...&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8fffa527-f73f-468c-9de0-6508783d2f5d" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/F5+DevCentral" rel="tag"&gt;F5 DevCentral&lt;/a&gt;,&lt;a href="http://technorati.com/tags/iRules" rel="tag"&gt;iRules&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HTTP%3a%3aheader" rel="tag"&gt;HTTP::header&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Jason+Rahm" rel="tag"&gt;Jason Rahm&lt;/a&gt;&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/jason/aggbug/1094442.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Rahm</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/jason/archive/2011/05/31/removing-a-strange-http-header-with-irules.aspx</guid>
            <pubDate>Tue, 31 May 2011 20:24:33 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/jason/comments/1094442.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/jason/archive/2011/05/31/removing-a-strange-http-header-with-irules.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/jason/comments/commentRss/1094442.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>
