<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--Web 2.0 Content Powered by MyST Blogsite® (http://blogsite.com)-->
<!--A service of MyST Technology Partners, Inc. (http://myst-technology.com)-->
<?xml-stylesheet href="http://faseidl.com/public/styles/etc/object.xsl" type="text/xsl"?>

<?myst-baseUrl http://faseidl.com/public/?>

<MySmartChannels Public="true" UserID="187686" dT="105" t0="1231317237004">
     <GetChannelItem_Result>
      <Item>
       <Resource>
        <ObjectID>213126</ObjectID>
        <ObjectClass>Resource</ObjectClass>
        <OwnerID ObjectClass="Domain" Title="[Weblog] FAS Talk">187691</OwnerID>
        <CreatedByID ObjectClass="User" Title="aseidl">21</CreatedByID>
        <ModifiedByID ObjectClass="User" Title="aseidl">21</ModifiedByID>
        <CreateTime Title="2008-09-20 21:20:57 EDT">1221960057763</CreateTime>
        <ModifyTime Title="2008-09-27 12:48:50 EDT">1222534130372</ModifyTime>
        <SecurityModel>Controlled</SecurityModel>
        <Name>Webmaster Tips: Blocking Selected User-Agents</Name>
        <Summary>While blocking access to servers based on user agent strings does not offer absolute security, it is still very worthwhile.</Summary>
        <Description>&lt;p&gt;I was just reviewing our server security logs and ran across a questionable request for &amp;quot;/user/soapCaller.bs&amp;quot;.&amp;nbsp; Doing a bit of research on this, I ran across &lt;a title="Update on Morfeus Fucking Scanner" href="http://ekle.us/index.php/2007/05/update_on_morfeus_fucking_scanner" target="_blank"&gt;this blog post&lt;/a&gt; by Rick Ekle confirming that&amp;nbsp;was, indeed, the work of some script kiddie's &amp;quot;Morfeus&amp;nbsp;F***ing Scanner&amp;quot;&amp;nbsp;(sorry, that's&amp;nbsp;its name&amp;mdash;the underbelly of the Internet is a seedy place)&amp;nbsp;looking for exploitable PHP servers.&lt;/p&gt;&lt;p&gt;No big deal; I added a couple new &lt;a title="SlimeGate: Fighting Back Against Big, Hungry, Orange Alligators" href="http://blogsite.com/public/blog/178941" target="_blank"&gt;SlimeGate&amp;trade;&lt;/a&gt; rules and all of our servers are protected from this slime ball.&lt;/p&gt;&lt;p&gt;But what struck me as interesting was the debate in the comment thread on Rick's post about whether or not webmasters should block requests bases on user agent names.&amp;nbsp; IMO, the answer is absolutely, yes!&lt;/p&gt;&lt;h3&gt;Why block by user-agent?&lt;/h3&gt;&lt;p&gt;&lt;img style="MARGIN: 0px 10px 5px 0px" height="113" alt="security" src="docs/security-150.jpg" width="150" align="left" border="0" /&gt;Some people argue that blocking specific user agents is pointless because user agent names are easily spoofed, thus it is trivial for a hacker to masquerade as any user agent.&amp;nbsp; Therefore, the argument goes, blocking based on user agent provides only a false sense of security.&lt;/p&gt;&lt;p&gt;But this argument misses an important point.&amp;nbsp; Specifically, blocking by user agent is not intended to provide reliable security; it is intended to block unwanted traffic.&amp;nbsp; For example, blocking the user agent &amp;quot;^Morfeus&amp;quot; will not make a vulnerable PHP server secure, but it &lt;em&gt;will&lt;/em&gt; prevent at least some unwanted traffic.&amp;nbsp; Arguing against doing this is like arguing against wearing safety belts on the grounds that doing so does not provide absolute safety.&lt;/p&gt;&lt;h3&gt;What about blocking generic user agents like &amp;quot;libwww-perl&amp;quot; or &amp;quot;Java&amp;quot;?&lt;/h3&gt;&lt;p&gt;In my opinion, most production servers &lt;em&gt;should&lt;/em&gt; block generic user agents.&amp;nbsp; In my experience, it is &lt;em&gt;very rare&lt;/em&gt; when a legitimate, desirable application, browser, or web service makes requests using a generic user agent name.&amp;nbsp; In the vast majority of cases, these products issue user-agent headers that properly identify themselves.&lt;/p&gt;&lt;p&gt;In years of hosting hundreds of commercial sites, I can count on one hand the times we have made exceptions to permit access by a generic user agent name.&amp;nbsp; And when such an exception is necessary, it is easily accomplished and the exception can be limited by IP address, referrer address, etc.&lt;/p&gt;&lt;h3&gt;The bottom line&lt;/h3&gt;&lt;p&gt;As a webmaster, you&amp;nbsp;definitely &lt;em&gt;should&lt;/em&gt;&amp;nbsp;use&amp;nbsp;user-agent&amp;nbsp;headers to manager server traffic.&amp;nbsp; But understand that this&amp;nbsp;is purely a&amp;nbsp;pragmatic tactic and&amp;nbsp;not a serious&amp;nbsp;security measure.&amp;nbsp; Real security comes only through elimination of exploitable security holes.&lt;/p&gt;&lt;p /&gt;&lt;p /&gt;</Description>
        <ResourceTypeID ObjectClass="ResourceType" Title="Item:Link">9</ResourceTypeID>
        <ContentType>application/xml</ContentType>
        <ContentDocument>
         <ItemProperties>
               <CommonProperties>
                <Hidden>false</Hidden>

                <Keywords>
                 <Keyword>Morfeus</Keyword>

                 <Keyword>security</Keyword>

                 <Keyword>SlimeGate</Keyword>

                 <Keyword>user-agent</Keyword>

       </Keywords>

                <Links>
                 <Link>
                  <Title>Update on Morfeus F***ing Scanner</Title>

                  <Synopsis>Thoughts on computers and health</Synopsis>

                  <URL>http://ekle.us/index.php/2007/05/update_on_morfeus_fucking_scanner</URL>

        </Link>

                 <Link>
                  <Title>Fighting Back Against Big, Hungry, Orange Alligators | MyST Blogsite®</Title>

                  <Synopsis>Overly aggressive RSS feed aggregators can cause server performance problems; MyST Blogsite introduces new technology to detect (and reject) egregious offenders.</Synopsis>

                  <URL>http://blogsite.com/public/blog/178941</URL>

        </Link>

       </Links>

      </CommonProperties>

               <ns3:Details xmlns="urn:MyST-Technology.Structured.Details" xmlns:ns3="urn:MyST-Technology.Structured.Details">
                <ns3:Collection name="Quote" type="urn:MyST-Technology.Structured.Collection.Captyx.Quote">
                 <ns3:Attribute name="Quote" type="large-text">
                  <ns3:Value>As a webmaster, you definitely &lt;b&gt;should&lt;/b&gt; use user-agent headers to manager server traffic.  But understand that this is purely a pragmatic tactic and not a serious security measure.</ns3:Value>

        </ns3:Attribute>

                 <ns3:Attribute name="Name" type="text"/>

                 <ns3:Attribute name="Blog" type="url"/>

                 <ns3:Attribute name="Title" type="text"/>

                 <ns3:Attribute name="Company" type="text"/>

                 <ns3:Attribute name="Web" type="url"/>

                 <ns3:Attribute name="Icon" type="checkbox" value="true"/>

                 <ns3:Attribute name="Frame" type="text" value="bars"/>

                 <ns3:Attribute name="HTML" type="checkbox" value="true"/>

                 <ns3:Attribute name="Alignment" type="text" value="right"/>

                 <ns3:Attribute name="Text Size" type="text" value="medium"/>

                 <ns3:Attribute name="Container" type="text" value="div"/>

                 <ns3:Attribute name="Container ID" type="text"/>

                 <ns3:Attribute name="Container Class" type="text" value="Quote"/>

                 <ns3:Attribute name="Container Style" type="text"/>

                 <ns3:Attribute name="_captyx.position" type="text" value="_top"/>

                 <ns3:Attribute name="_captyx.embargo" type="checkbox" value="false"/>

                 <ns3:Attribute name="_captyx.scope" type="text"/>

                 <ns3:Attribute name="_captyx.sortkey" type="text"/>

       </ns3:Collection>

      </ns3:Details>

               <RemoteInfo>
                <UserAgent>Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)</UserAgent>

                <RemoteHost>127.0.0.1</RemoteHost>

                <RemoteAddr>127.0.0.1</RemoteAddr>

                <RemoteUser>aseidl</RemoteUser>

                <ForwardedFor>68.40.167.222</ForwardedFor>

      </RemoteInfo>

     </ItemProperties>
        </ContentDocument>
       </Resource>
       <Shares/>
       <Subjects/>
       <UserPermissions>
        <CanDelete>false</CanDelete>
        <CanDiscover>true</CanDiscover>
        <CanEdit>false</CanEdit>
        <CanEditPermissions>false</CanEditPermissions>
        <CanRead>true</CanRead>
       </UserPermissions>
       <CommentInfo>
        <CommentChannelRef AllowAnonymous="true" Inherited="true">
         <ChannelID ObjectClass="Channel" Title="[Public] Public Comments">188081</ChannelID>
         <UserPermissions>
          <CanCreateChannelItem>false</CanCreateChannelItem>
          <CanDelete>false</CanDelete>
          <CanDiscover>true</CanDiscover>
          <CanEdit>false</CanEdit>
          <CanEditPermissions>false</CanEditPermissions>
          <CanPublish>false</CanPublish>
          <CanRead>true</CanRead>
         </UserPermissions>
        </CommentChannelRef>
        <Comments>
         <Comment>
          <Item>
           <Resource>
            <ObjectID>213155</ObjectID>
            <ObjectClass>Resource</ObjectClass>
            <OwnerID ObjectClass="Domain" Title="[Public] Public Comments">188081</OwnerID>
            <CreatedByID ObjectClass="User" Title="$Anonymous">173239</CreatedByID>
            <ModifiedByID ObjectClass="User" Title="aseidl">21</ModifiedByID>
            <CreateTime Title="2008-09-21 19:45:00 EDT">1222040700526</CreateTime>
            <ModifyTime Title="2008-09-22 11:00:58 EDT">1222095658820</ModifyTime>
            <SecurityModel>Controlled</SecurityModel>
            <Name>Great Post!</Name>
            <Summary/>
            <Description>&lt;p&gt;I agree. The bad guys are always one step ahead so security should always be a concern. In my article, I detailed how to write your robots.txt, and I agree that this is should not really be used for security purposes.&lt;/p&gt;&lt;p&gt;How to write robots.txt:&lt;br /&gt;&lt;a href="http://sin8.com/tip-3-its-important-to-hide-parts-of-your-site-from-search-engines"&gt;http://sin8.com/tip-3-its-important-to-hide-parts-of-your-site-from-search-engines&lt;/a&gt; &lt;br /&gt;Carl&lt;/p&gt;</Description>
            <ResourceTypeID ObjectClass="ResourceType" Title="Item:Content">10</ResourceTypeID>
            <ContentType>application/xml</ContentType>
            <ContentDocument>
             <ItemProperties>
                   <CommonProperties>
                    <Hidden>false</Hidden>

      </CommonProperties>

                   <ns3:Details xmlns="urn:MyST-Technology.Structured.Details" xmlns:ns3="urn:MyST-Technology.Structured.Details">
                    <ns3:Collection name="Carl Stanley" type="urn:MyST-Technology.Structured.Collection.Contact">
                     <ns3:Attribute name="EMail" type="email" value="cjs@sin8.com"/>

                     <ns3:Attribute name="Web" type="url" value="http://www.sin8.com"/>

       </ns3:Collection>

      </ns3:Details>

                   <RemoteInfo>
                    <UserAgent>Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)</UserAgent>

                    <RemoteHost>127.0.0.1</RemoteHost>

                    <RemoteAddr>127.0.0.1</RemoteAddr>

                    <RemoteUser>aseidl</RemoteUser>

                    <ForwardedFor>68.40.167.222</ForwardedFor>

      </RemoteInfo>

     </ItemProperties>
            </ContentDocument>
           </Resource>
           <UserPermissions>
            <CanDelete>false</CanDelete>
            <CanDiscover>true</CanDiscover>
            <CanEdit>false</CanEdit>
            <CanEditPermissions>false</CanEditPermissions>
            <CanRead>true</CanRead>
           </UserPermissions>
           <CommentInfo>
            <CommentChannelRef>
             <ChannelID/>
            </CommentChannelRef>
            <Comments/>
           </CommentInfo>
          </Item>
         </Comment>
        </Comments>
       </CommentInfo>
       <Views>
        <SourceID ObjectClass="Channel" Title="[Weblog] FAS Talk">187691</SourceID>

               <View>
                <Name>blog</Name>

                <Model>blogsite/FASeidl/web</Model>

                <Style/>

                <Scheme/>

       </View>

               <View>
                <Name>edit-item</Name>

                <Model>blogsite/FASeidl/right-content</Model>

                <Style/>

                <Scheme/>

       </View>

               <View>
                <Name>left</Name>

                <Model>blogsite/FASeidl/left-content</Model>

                <Style/>

                <Scheme/>

       </View>

               <View>
                <Name>right</Name>

                <Model>blogsite/FASeidl/right-content</Model>

                <Style/>

                <Scheme/>

       </View>

               <View>
                <Name>wide</Name>

                <Model>blogsite/FASeidl/wide-content</Model>

                <Style/>

                <Scheme/>

       </View>

      </Views>
        <Views>
         <SourceID ObjectClass="Channel" Shared="true" Title="[Public] What's New">187697</SourceID>

                <View>
                 <Name>blog</Name>

                 <Model>blogsite/FASeidl/whatsnew</Model>

                 <Style/>

                 <Scheme/>

       </View>

                <View>
                 <Name>edit-item</Name>

                 <Model>blogsite/FASeidl/right-content</Model>

                 <Style/>

                 <Scheme/>

       </View>

                <View>
                 <Name>left</Name>

                 <Model>blogsite/FASeidl/left-content</Model>

                 <Style/>

                 <Scheme/>

       </View>

                <View>
                 <Name>right</Name>

                 <Model>blogsite/FASeidl/right-content</Model>

                 <Style/>

                 <Scheme/>

       </View>

                <View>
                 <Name>wide</Name>

                 <Model>blogsite/FASeidl/wide-content</Model>

                 <Style/>

                 <Scheme/>

       </View>

      </Views>
        </Item>
       </GetChannelItem_Result>
      </MySmartChannels>
