<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4995926276347110012</id><updated>2011-10-11T14:46:54.725-04:00</updated><category term='Expect'/><category term='CSA'/><category term='SNMP'/><category term='VPN'/><category term='SSL Certificate'/><category term='wiki'/><category term='high bandwidth'/><category term='Microsoft'/><category term='NCM'/><category term='IOS'/><category term='ASA'/><category term='wireless'/><category term='NAC'/><category term='command scripts'/><category term='Tools'/><category term='ASDM'/><category term='WSUS'/><category term='MARS'/><category term='Java'/><title type='text'>Network Security</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-334208587476775351</id><published>2009-09-17T20:49:00.002-04:00</published><updated>2009-09-18T09:20:00.405-04:00</updated><title type='text'>New Site for Posts</title><content type='html'>Chesapeake Netcraftsmen has created a new website with a blogging section.  I've moved my blog posts to that website.  I just posted a blog on &lt;a href="http://www.netcraftsmen.net/resources/blogs/creating-policies-with-cisco-ncm.html"&gt;"Creating Policing with Cisco NCM"&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-334208587476775351?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/334208587476775351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=334208587476775351' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/334208587476775351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/334208587476775351'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/09/new-site-for-posts.html' title='New Site for Posts'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-27884826011050064</id><published>2009-07-09T14:32:00.003-04:00</published><updated>2009-07-09T14:37:01.609-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NCM'/><category scheme='http://www.blogger.com/atom/ns#' term='Expect'/><category scheme='http://www.blogger.com/atom/ns#' term='command scripts'/><title type='text'>Getting Started with Expect for Cisco NCM Command Scripts</title><content type='html'>&lt;p&gt;&lt;!--[if !mso]&gt; &lt;style&gt; v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:"Cambria Math";  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:roman;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face  {font-family:Cambria;  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:roman;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073741899 0 0 159 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} h1  {mso-style-priority:9;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-link:"Heading 1 Char";  mso-style-next:Normal;  margin-top:24.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:.3in;  margin-bottom:.0001pt;  text-indent:-.3in;  line-height:115%;  mso-pagination:widow-orphan lines-together;  page-break-after:avoid;  mso-outline-level:1;  mso-list:l0 level1 lfo3;  font-size:14.0pt;  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#365F91;  mso-themecolor:accent1;  mso-themeshade:191;  mso-font-kerning:0pt;} h2  {mso-style-noshow:yes;  mso-style-priority:9;  mso-style-qformat:yes;  mso-style-link:"Heading 2 Char";  mso-style-next:Normal;  margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:.4in;  margin-bottom:.0001pt;  text-indent:-.4in;  line-height:115%;  mso-pagination:widow-orphan lines-together;  page-break-after:avoid;  mso-outline-level:2;  mso-list:l0 level2 lfo3;  font-size:13.0pt;  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#4F81BD;  mso-themecolor:accent1;} h3  {mso-style-noshow:yes;  mso-style-priority:9;  mso-style-qformat:yes;  mso-style-link:"Heading 3 Char";  mso-style-next:Normal;  margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  text-indent:-.5in;  line-height:115%;  mso-pagination:widow-orphan lines-together;  page-break-after:avoid;  mso-outline-level:3;  mso-list:l0 level3 lfo3;  font-size:11.0pt;  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#4F81BD;  mso-themecolor:accent1;} h4  {mso-style-noshow:yes;  mso-style-priority:9;  mso-style-qformat:yes;  mso-style-link:"Heading 4 Char";  mso-style-next:Normal;  margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:.6in;  margin-bottom:.0001pt;  text-indent:-.6in;  line-height:115%;  mso-pagination:widow-orphan lines-together;  page-break-after:avoid;  mso-outline-level:4;  mso-list:l0 level4 lfo3;  font-size:11.0pt;  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#4F81BD;  mso-themecolor:accent1;  font-style:italic;} h5  {mso-style-noshow:yes;  mso-style-priority:9;  mso-style-qformat:yes;  mso-style-link:"Heading 5 Char";  mso-style-next:Normal;  margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:.7in;  margin-bottom:.0001pt;  text-indent:-.7in;  line-height:115%;  mso-pagination:widow-orphan lines-together;  page-break-after:avoid;  mso-outline-level:5;  mso-list:l0 level5 lfo3;  font-size:11.0pt;  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#243F60;  mso-themecolor:accent1;  mso-themeshade:127;  font-weight:normal;} h6  {mso-style-noshow:yes;  mso-style-priority:9;  mso-style-qformat:yes;  mso-style-link:"Heading 6 Char";  mso-style-next:Normal;  margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:.8in;  margin-bottom:.0001pt;  text-indent:-.8in;  line-height:115%;  mso-pagination:widow-orphan lines-together;  page-break-after:avoid;  mso-outline-level:6;  mso-list:l0 level6 lfo3;  font-size:11.0pt;  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#243F60;  mso-themecolor:accent1;  mso-themeshade:127;  font-weight:normal;  font-style:italic;} p.MsoHeading7, li.MsoHeading7, div.MsoHeading7  {mso-style-noshow:yes;  mso-style-priority:9;  mso-style-qformat:yes;  mso-style-link:"Heading 7 Char";  mso-style-next:Normal;  margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:.9in;  margin-bottom:.0001pt;  text-indent:-.9in;  line-height:115%;  mso-pagination:widow-orphan lines-together;  page-break-after:avoid;  mso-outline-level:7;  mso-list:l0 level7 lfo3;  font-size:11.0pt;  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#404040;  mso-themecolor:text1;  mso-themetint:191;  font-style:italic;} p.MsoHeading8, li.MsoHeading8, div.MsoHeading8  {mso-style-noshow:yes;  mso-style-priority:9;  mso-style-qformat:yes;  mso-style-link:"Heading 8 Char";  mso-style-next:Normal;  margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:1.0in;  margin-bottom:.0001pt;  text-indent:-1.0in;  line-height:115%;  mso-pagination:widow-orphan lines-together;  page-break-after:avoid;  mso-outline-level:8;  mso-list:l0 level8 lfo3;  font-size:10.0pt;  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#404040;  mso-themecolor:text1;  mso-themetint:191;} p.MsoHeading9, li.MsoHeading9, div.MsoHeading9  {mso-style-noshow:yes;  mso-style-priority:9;  mso-style-qformat:yes;  mso-style-link:"Heading 9 Char";  mso-style-next:Normal;  margin-top:10.0pt;  margin-right:0in;  margin-bottom:0in;  margin-left:1.1in;  margin-bottom:.0001pt;  text-indent:-1.1in;  line-height:115%;  mso-pagination:widow-orphan lines-together;  page-break-after:avoid;  mso-outline-level:9;  mso-list:l0 level9 lfo3;  font-size:10.0pt;  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#404040;  mso-themecolor:text1;  mso-themetint:191;  font-style:italic;} a:link, span.MsoHyperlink  {mso-style-priority:99;  color:blue;  mso-themecolor:hyperlink;  text-decoration:underline;  text-underline:single;} a:visited, span.MsoHyperlinkFollowed  {mso-style-noshow:yes;  mso-style-priority:99;  color:purple;  mso-themecolor:followedhyperlink;  text-decoration:underline;  text-underline:single;} p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing  {mso-style-priority:1;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  mso-style-link:"No Spacing Char";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph  {mso-style-priority:34;  mso-style-unhide:no;  mso-style-qformat:yes;  margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:.5in;  mso-add-space:auto;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst  {mso-style-priority:34;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle  {mso-style-priority:34;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast  {mso-style-priority:34;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:.5in;  mso-add-space:auto;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} span.Heading1Char  {mso-style-name:"Heading 1 Char";  mso-style-priority:9;  mso-style-unhide:no;  mso-style-locked:yes;  mso-style-link:"Heading 1";  mso-ansi-font-size:14.0pt;  mso-bidi-font-size:14.0pt;  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#365F91;  mso-themecolor:accent1;  mso-themeshade:191;  font-weight:bold;} span.Heading2Char  {mso-style-name:"Heading 2 Char";  mso-style-noshow:yes;  mso-style-priority:9;  mso-style-unhide:no;  mso-style-locked:yes;  mso-style-link:"Heading 2";  mso-ansi-font-size:13.0pt;  mso-bidi-font-size:13.0pt;  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#4F81BD;  mso-themecolor:accent1;  font-weight:bold;} span.Heading3Char  {mso-style-name:"Heading 3 Char";  mso-style-noshow:yes;  mso-style-priority:9;  mso-style-unhide:no;  mso-style-locked:yes;  mso-style-link:"Heading 3";  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#4F81BD;  mso-themecolor:accent1;  font-weight:bold;} span.Heading4Char  {mso-style-name:"Heading 4 Char";  mso-style-noshow:yes;  mso-style-priority:9;  mso-style-unhide:no;  mso-style-locked:yes;  mso-style-link:"Heading 4";  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#4F81BD;  mso-themecolor:accent1;  font-weight:bold;  font-style:italic;} span.Heading5Char  {mso-style-name:"Heading 5 Char";  mso-style-noshow:yes;  mso-style-priority:9;  mso-style-unhide:no;  mso-style-locked:yes;  mso-style-link:"Heading 5";  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#243F60;  mso-themecolor:accent1;  mso-themeshade:127;} span.Heading6Char  {mso-style-name:"Heading 6 Char";  mso-style-noshow:yes;  mso-style-priority:9;  mso-style-unhide:no;  mso-style-locked:yes;  mso-style-link:"Heading 6";  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#243F60;  mso-themecolor:accent1;  mso-themeshade:127;  font-style:italic;} span.Heading7Char  {mso-style-name:"Heading 7 Char";  mso-style-noshow:yes;  mso-style-priority:9;  mso-style-unhide:no;  mso-style-locked:yes;  mso-style-link:"Heading 7";  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#404040;  mso-themecolor:text1;  mso-themetint:191;  font-style:italic;} span.Heading8Char  {mso-style-name:"Heading 8 Char";  mso-style-noshow:yes;  mso-style-priority:9;  mso-style-unhide:no;  mso-style-locked:yes;  mso-style-link:"Heading 8";  mso-ansi-font-size:10.0pt;  mso-bidi-font-size:10.0pt;  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#404040;  mso-themecolor:text1;  mso-themetint:191;} span.Heading9Char  {mso-style-name:"Heading 9 Char";  mso-style-noshow:yes;  mso-style-priority:9;  mso-style-unhide:no;  mso-style-locked:yes;  mso-style-link:"Heading 9";  mso-ansi-font-size:10.0pt;  mso-bidi-font-size:10.0pt;  font-family:"Cambria","serif";  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:major-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:major-fareast;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:major-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:major-bidi;  color:#404040;  mso-themecolor:text1;  mso-themetint:191;  font-style:italic;} p.code, li.code, div.code  {mso-style-name:code;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"No Spacing";  mso-style-link:"code Char";  margin-top:0in;  margin-right:.5in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  background:#F2F2F2;  mso-background-themecolor:background1;  mso-background-themeshade:242;  border:none;  mso-border-alt:solid windowtext .5pt;  padding:0in;  mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;  font-size:9.0pt;  mso-bidi-font-size:11.0pt;  font-family:"Courier New";  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} span.NoSpacingChar  {mso-style-name:"No Spacing Char";  mso-style-priority:1;  mso-style-unhide:no;  mso-style-locked:yes;  mso-style-link:"No Spacing";} span.codeChar  {mso-style-name:"code Char";  mso-style-unhide:no;  mso-style-locked:yes;  mso-style-parent:"No Spacing Char";  mso-style-link:code;  mso-ansi-font-size:9.0pt;  font-family:"Courier New";  mso-ascii-font-family:"Courier New";  mso-hansi-font-family:"Courier New";  background:#F2F2F2;  mso-shading-themecolor:background1;  mso-shading-themeshade:242;} .MsoChpDefault  {mso-style-type:export-only;  mso-default-props:yes;  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoPapDefault  {mso-style-type:export-only;  margin-bottom:10.0pt;  line-height:115%;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.0in 1.0in 1.0in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;}  /* List Definitions */  @list l0  {mso-list-id:27874138;  mso-list-template-ids:67698725;} @list l0:level1  {mso-level-style-link:"Heading 1";  mso-level-text:%1;  mso-level-tab-stop:none;  mso-level-number-position:left;  margin-left:.3in;  text-indent:-.3in;} @list l0:level2  {mso-level-style-link:"Heading 2";  mso-level-text:"%1\.%2";  mso-level-tab-stop:none;  mso-level-number-position:left;  margin-left:.4in;  text-indent:-.4in;} @list l0:level3  {mso-level-style-link:"Heading 3";  mso-level-text:"%1\.%2\.%3";  mso-level-tab-stop:none;  mso-level-number-position:left;  margin-left:.5in;  text-indent:-.5in;} @list l0:level4  {mso-level-style-link:"Heading 4";  mso-level-text:"%1\.%2\.%3\.%4";  mso-level-tab-stop:none;  mso-level-number-position:left;  margin-left:.6in;  text-indent:-.6in;} @list l0:level5  {mso-level-style-link:"Heading 5";  mso-level-text:"%1\.%2\.%3\.%4\.%5";  mso-level-tab-stop:none;  mso-level-number-position:left;  margin-left:.7in;  text-indent:-.7in;} @list l0:level6  {mso-level-style-link:"Heading 6";  mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6";  mso-level-tab-stop:none;  mso-level-number-position:left;  margin-left:.8in;  text-indent:-.8in;} @list l0:level7  {mso-level-style-link:"Heading 7";  mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7";  mso-level-tab-stop:none;  mso-level-number-position:left;  margin-left:.9in;  text-indent:-.9in;} @list l0:level8  {mso-level-style-link:"Heading 8";  mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8";  mso-level-tab-stop:none;  mso-level-number-position:left;  margin-left:1.0in;  text-indent:-1.0in;} @list l0:level9  {mso-level-style-link:"Heading 9";  mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9";  mso-level-tab-stop:none;  mso-level-number-position:left;  margin-left:1.1in;  text-indent:-1.1in;} @list l1  {mso-list-id:717751737;  mso-list-type:hybrid;  mso-list-template-ids:-1508346262 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l1:level1  {mso-level-tab-stop:none;  mso-level-number-position:left;  text-indent:-.25in;} @list l2  {mso-list-id:786506205;  mso-list-type:hybrid;  mso-list-template-ids:-355948468 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l2:level1  {mso-level-tab-stop:none;  mso-level-number-position:left;  text-indent:-.25in;} ol  {margin-bottom:0in;} ul  {margin-bottom:0in;} --&gt; &lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;/p&gt;&lt;p&gt; Advanced Command scripts, with NCM, can be written in Perl or Expect.  When there is interactive input, Expect is normally recommended.  This blog provides a starting point for using Expect to aid in the creation of Cisco NCM command scripts &lt;/p&gt;&lt;h1&gt;&lt;span style="font-size:100%;"&gt;&lt;a class="mceItemAnchor" name="_Toc234912421" title="_Toc234912421"&gt;&lt;/a&gt;&lt;/span&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;1&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';" &gt;         &lt;/span&gt;&lt;/span&gt;Reference Material&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;One of the best references for Expect is the “Exploring Expect” book published by O’Reilly.&lt;span&gt;  &lt;/span&gt;I’ll be adding page number references from the book to the sections below.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Another good reference is the included help files with ActiveState Expect.&lt;span&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;h1&gt;&lt;span style="font-size:100%;"&gt;&lt;a class="mceItemAnchor" name="_Toc234912422" title="_Toc234912422"&gt;&lt;/a&gt;&lt;/span&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;2&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';" &gt;         &lt;/span&gt;&lt;/span&gt;Downloading and Installing ActiveState TCL with Expect Extensions&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;One way to learn how to use Expect is to use the free version, from ActiveState, on your Windows PC.&lt;span&gt;  &lt;/span&gt;This provides the opportunity to learn how TCL and Expect work and test scripts before deploying within NCM.&lt;span&gt;  &lt;/span&gt;Use the following steps to download and install Expect&lt;/p&gt;  &lt;p style="text-indent: -0.25in;" class="MsoListParagraphCxSpFirst"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;1.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';font-size:7pt;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Go to &lt;a href="http://www.activestate.com/" mce_href="http://www.activestate.com/"&gt;http://www.activestate.com&lt;/a&gt; and download the free TCL application&lt;/p&gt;  &lt;p style="text-indent: -0.25in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;2.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';font-size:7pt;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Install TCL&lt;/p&gt;  &lt;p style="text-indent: -0.25in;" class="MsoListParagraphCxSpMiddle"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;3.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';font-size:7pt;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Open a command prompt&lt;/p&gt;  &lt;p style="text-indent: -0.25in;" class="MsoListParagraphCxSpLast"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;4.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';font-size:7pt;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Type “teacup install Expect” to install the Expect extension to TCL&lt;/p&gt;  &lt;h1&gt;&lt;span style="font-size:100%;"&gt;&lt;a class="mceItemAnchor" name="_Toc234912423" title="_Toc234912423"&gt;&lt;/a&gt;&lt;/span&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;3&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';" &gt;         &lt;/span&gt;&lt;/span&gt;Create Your First Script&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;Now that TCL and Expect are installed, you can run through the following test script to see how Expect works.&lt;span&gt;  &lt;/span&gt;This test script shows how to telnet to a router and execute “show version”.&lt;span&gt;  &lt;/span&gt;Within the example script, replace anything in red with the appropriate information from your test router.&lt;span&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;There are minor differences between this script and the script executed within NCM.&lt;span&gt;  &lt;/span&gt;The one main difference is the use of the “exp_send” command.&lt;span&gt;  &lt;/span&gt;Within NCM, this should just be “send”.&lt;/p&gt;  &lt;p style="text-indent: -0.25in;" class="MsoListParagraphCxSpFirst"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;1.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';font-size:7pt;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Open Notepad&lt;/p&gt;  &lt;p style="text-indent: -0.25in;" class="MsoListParagraphCxSpLast"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;2.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';font-size:7pt;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Paste the following script into Notepad and save as sample.txt.&lt;span&gt;  &lt;/span&gt;This script assumes that you have AAA turned on an authorization set to have the user authorized into privileged exec mode.&lt;span&gt;  &lt;/span&gt;If this configuration is not already entered, you can add it by entering the following to add AAA with local authentication and authorization&lt;/p&gt;  &lt;div style="border: 1pt solid windowtext; padding: 1pt 4pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; margin-left: 0.5in; margin-right: 0.5in;"&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;aaa new-model&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;!&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;aaa authentication login default local&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;aaa authorization exec default local&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;!&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;username cisco privilege 15 password cisco&lt;/p&gt;  &lt;/div&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in;" class="MsoNormal"&gt;Script&lt;/p&gt;  &lt;div style="border: 1pt solid windowtext; padding: 1pt 4pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; margin-left: 0.5in; margin-right: 0.5in;"&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;#!/bin/sh&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;# \&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exec tclsh "$0" ${1+"$@"}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;package require Expect&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;log_user 1&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;spawn telnet &lt;span style="color:red;"&gt;192.168.137.100&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect "Username" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exp_send "&lt;span style="color:red;"&gt;cisco&lt;/span&gt;\r"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect "assword" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exp_send "&lt;span style="color:red;"&gt;cisco&lt;/span&gt;\r"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect "&lt;span style="color:red;"&gt;R1&lt;/span&gt;#"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exp_send "terminal length 0\r"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect "&lt;span style="color:red;"&gt;R1&lt;/span&gt;#"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exp_send "sh version\r"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect "&lt;span style="color:red;"&gt;R1&lt;/span&gt;#"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exp_send "exit\r"&lt;/p&gt;  &lt;/div&gt;  &lt;p style="margin-left: 0.5in;" class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p style="margin-left: 0.5in; text-indent: -0.25in;" class="MsoNoSpacing"&gt;&lt;!--[if !supportLists]--&gt;&lt;span&gt;&lt;span&gt;3.&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';font-size:7pt;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Run the script by opening a command prompt, navigating to the directory with the script, and executing “tclsh85 sample.txt”.&lt;span&gt;  &lt;/span&gt;The output of the script should look similar to the following&lt;/p&gt;  &lt;p style="margin-left: 0.5in;" class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;div style="border: 1pt solid windowtext; padding: 1pt 4pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; margin-left: 0.5in; margin-right: 0.5in;"&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;C:\Tcl&gt;tclsh85 showversion.txt&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Welcome to Microsoft Telnet Client&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Escape Character is 'CTRL+]'&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Connecting To 192.168.137.100...&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;                          &lt;/span&gt;&lt;span&gt;      &lt;/span&gt;Put something here&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;User Access Verification&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Username: cisco&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Password:&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;R1#terminal length 0&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;R1#sh version&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Cisco IOS Software, 3600 Software (C3640-JK9O3S-M), Version 12.4(13a), RELEASE S&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;OFTWARE (fc1)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Technical Support: http://www.cisco.com/techsupport&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Copyright (c) 1986-2007 by Cisco Systems, Inc.&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Compiled Tue 06-Mar-07 20:25 by prod_rel_team&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;ROM: ROMMON Emulation Microcode&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;ROM: 3600 Software (C3640-JK9O3S-M), Version 12.4(13a), RELEASE SOFTWARE (fc1)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;R1 uptime is 5 minutes&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;System returned to ROM by unknown reload cause - suspect boot_data[BOOT_COUNT] 0&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;x0, BOOT_COUNT 0, BOOTDATA 19&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;System image file is "tftp://255.255.255.255/unknown"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;This product contains cryptographic features and is subject to United&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;States and local country laws governing import, export, transfer and&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;use. Delivery of Cisco cryptographic products does not imply&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;third-party authority to import, export, distribute or use encryption.&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Importers, exporters, distributors and users are responsible for&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;compliance with U.S. and local country laws. By using this product you&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;agree to comply with applicable laws and regulations. If you are unable&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;to comply with U.S. and local laws, return this product immediately.&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;A summary of U.S. laws governing Cisco cryptographic products may be found at:&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;http://www.cisco.com/wwl/export/crypto/tool/stqrg.html&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;If you require further assistance please contact us by sending email to&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;export@cisco.com.&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Cisco 3640 (R4700) processor (revision 0xFF) with 124928K/6144K bytes of memory.&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Processor board ID 00000000&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;R4700 CPU at 100MHz, Implementation 33, Rev 1.2&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;17 FastEthernet interfaces&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;DRAM configuration is 64 bits wide with parity enabled.&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;125K bytes of NVRAM.&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;8192K bytes of processor board System flash (Read/Write)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Configuration register is 0x2102&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;R1#&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;C:\Tcl&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;h1&gt;&lt;span style="font-size:100%;"&gt;&lt;a class="mceItemAnchor" name="_Toc234912424" title="_Toc234912424"&gt;&lt;/a&gt;&lt;/span&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;4&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';" &gt;         &lt;/span&gt;&lt;/span&gt;Regular Expressions&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;Expect scripts normally include the use of regular expressions to evaluate output from routers and switches.&lt;span&gt;  &lt;/span&gt;The best way to show how this works is through a simple example.&lt;span&gt;  &lt;/span&gt;Let’s take the output from “show interface fa1/0”.&lt;span&gt;  &lt;/span&gt;Here’s the output to use as a reference for the example to follow.&lt;/p&gt;  &lt;div style="border: 1pt solid windowtext; padding: 1pt 4pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; margin-left: 0.5in; margin-right: 0.5in;"&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;R1#sh int fa1/10&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;FastEthernet1/10 is up, line protocol is down &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Hardware is Fast Ethernet, address is cc00.1264.f10a (bia cc00.1264.f10a)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec, &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;reliability 255/255, txload 1/255, rxload 1/255&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Encapsulation ARPA, loopback not set&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Keepalive set (10 sec)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Auto-duplex, Auto-speed&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;ARP type: ARPA, ARP Timeout 04:00:00&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Last input never, output never, output hang never&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Last clearing of "show interface" counters never&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Queueing strategy: fifo&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Output queue: 0/40 (size/max)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;5 minute input rate 0 bits/sec, 0 packets/sec&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;5 minute output rate 0 bits/sec, 0 packets/sec&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 packets input, 0 bytes, 0 no buffer&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;Received 0 broadcasts, 0 runts, 0 giants, 0 throttles&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 input packets with dribble condition detected&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 packets output, 0 bytes, 0 underruns&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 output errors, 0 collisions, 2 interface resets&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 babbles, 0 late collision, 0 deferred&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 lost carrier, 0 no carrier&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 output buffer failures, 0 output buffers swapped out&lt;/p&gt;  &lt;/div&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;With this script, we want to evaluate the up/down state of the interface and line protocol and exit out of the script with an error message if either the interface or line are down.&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;div style="border: 1pt solid windowtext; padding: 1pt 4pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; margin-left: 0.5in; margin-right: 0.5in;"&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;#!/bin/sh&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;# \&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exec tclsh "$0" ${1+"$@"}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;package require Expect&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;log_user 1&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;spawn telnet 192.168.137.100&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect "Username" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exp_send "cisco\r"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect "assword" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exp_send "cisco\r"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect "R1#" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exp_send "sh int fa1/10\r"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;-re "is (\[a-z]*), line protocol is (\[a-z]*)" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt; &lt;/span&gt;set int_status $expect_out(1,string)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt; &lt;/span&gt;set line_status $expect_out(2,string)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;exp_continue&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;"R1#" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;exp_send "exit\r"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;if {$int_status == "down" || $line_status == "down"} {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;puts "\n!!!Interface is down!!!\n"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;exit 1&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;else {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;puts "\n!!!Interface is up!!!\n"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;exit 0&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;/div&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;Let’s look at the regular expression portion of the script &lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;div style="border: 1pt solid windowtext; padding: 1pt 4pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; margin-left: 0.5in; margin-right: 0.5in;"&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;-re "is (\[a-z]*), line protocol is (\[a-z]*)" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt; &lt;/span&gt;set int_status $expect_out(1,string)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt; &lt;/span&gt;set line_status $expect_out(2,string)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;exp_continue&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;"R1#" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;exp_send "exit\r"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;/div&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;The “-re” specifies that the next portion should be treated as a regular expression (&lt;b&gt;pg 109 Exploring Expect&lt;/b&gt;).&lt;span&gt;  &lt;/span&gt;The portion [a-z] specifies a single character matching any lower case character.&lt;span&gt;  &lt;/span&gt;The “*” after the [a-z] specifies a match for the rest of the lower case characters that follow the initial character.&lt;span&gt;  &lt;/span&gt;You’ll notice that there is a \ before the first [.&lt;span&gt;  &lt;/span&gt;This is required, by Expect, to have the [ ] treated correctly as a regular expression delineator (&lt;b&gt;pg 91 Exploring Expect&lt;/b&gt;).&lt;span&gt;  &lt;/span&gt;The () specifiy that anything within them should be treated as a variable.&lt;span&gt;  &lt;/span&gt;The variable is saved in the line after the regular expression with the line &lt;b&gt;(pg 111 Exploring Expect)&lt;/b&gt;.&lt;span&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;div style="border: 1pt solid windowtext; padding: 1pt 4pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; margin-left: 0.5in; margin-right: 0.5in;"&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;set int_status $expect_out(1,string)&lt;/p&gt;  &lt;/div&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;The “1” specifies that it is the first variable created by the ().&lt;span&gt;  &lt;/span&gt;The second () is captured as the variable “line_status”.&lt;span&gt;  &lt;/span&gt;You’ll notice that the “1” has been replaced by a “2” in this case (&lt;b&gt;pg 111 Exploring Expect&lt;/b&gt;).&lt;span&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;The next thing to notice is the “exp_continue” command.&lt;span&gt;  &lt;/span&gt;This specifies that the expect command that surrounds it should be run until there is no remaining input to be evaluated (&lt;b&gt;pg 145 Exploring Expect&lt;/b&gt;).&lt;span&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;Here is the output of the script&lt;/p&gt;  &lt;div style="border: 1pt solid windowtext; padding: 1pt 4pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; margin-left: 0.5in; margin-right: 0.5in;"&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;C:\Tcl&gt;tclsh85 sample.tcl&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Welcome to Microsoft Telnet Client&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Escape Character is 'CTRL+]'&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Connecting To 192.168.137.100...&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;                                &lt;/span&gt;Put something here&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;User Access Verification&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Username: cisco&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;Password:&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;R1#sh int fa1/10&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;FastEthernet1/10 is up, line protocol is down&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Hardware is Fast Ethernet, address is cc00.1264.f10a (bia cc00.1264.f10a)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;reliability 255/255, txload 1/255, rxload 1/255&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Encapsulation ARPA, loopback not set&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Keepalive set (10 sec)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Auto-duplex, Auto-speed&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;ARP type: ARPA, ARP Timeout 04:00:00&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Last input never, output never, output hang never&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Last clearing of "show interface" counters never&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Queueing strategy: fifo&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;Output queue: 0/40 (size/max)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;5 minute input rate 0 bits/sec, 0 packets/sec&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;5 minute output rate 0 bits/sec, 0 packets/sec&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 packets input, 0 bytes, 0 no buffer&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;Received 0 broadcasts, 0 runts, 0 giants, 0 throttles&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 input packets with dribble condition detected&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 packets output, 0 bytes, 0 underruns&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 output errors, 0 collisions, 2 interface resets&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 babbles, 0 late collision, 0 deferred&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 lost carrier, 0 no carrier&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;     &lt;/span&gt;0 output buffer failures, 0 output buffers swapped out&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;R1#&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;!!!Interface is down!!!&lt;/p&gt;  &lt;/div&gt;  &lt;h1&gt;&lt;span style="font-size:100%;"&gt;&lt;a class="mceItemAnchor" name="_Toc234912425" title="_Toc234912425"&gt;&lt;/a&gt;&lt;/span&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;5&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-family:'Times New Roman';" &gt;         &lt;/span&gt;&lt;/span&gt;Limiting Script Output&lt;/span&gt;&lt;!--[endif]--&gt;&lt;/h1&gt;  &lt;p class="MsoNormal"&gt;In the first script, we saw that there was a lot of output.&lt;span&gt;  &lt;/span&gt;We could limit this output to specific information that we wanted to display.&lt;span&gt;  &lt;/span&gt;This is done by changing “log_user 1” to “log_user 0”(&lt;b&gt;pg 175 Exploring Expect&lt;/b&gt;).&lt;span&gt;  &lt;/span&gt;Once this is done, specific output can be displayed using the “puts” command.&lt;span&gt;  &lt;/span&gt;Here is the script from the regular expression section that will only output the interface information&lt;/p&gt;  &lt;div style="border: 1pt solid windowtext; padding: 1pt 4pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; margin-left: 0.5in; margin-right: 0.5in;"&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;#!/bin/sh&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;# \&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exec tclsh "$0" ${1+"$@"}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;package require Expect&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;log_user 0&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;spawn telnet 192.168.137.100&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect "Username" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exp_send "cisco\r"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect "assword" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exp_send "cisco\r"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect "R1#" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;exp_send "sh int fa1/10\r"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;expect {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;-re "is (\[a-z]*), line protocol is (\[a-z]*)" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt; &lt;/span&gt;set int_status $expect_out(1,string)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt; &lt;/span&gt;set line_status $expect_out(2,string)&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;exp_continue&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;"R1#" {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;exp_send "exit\r"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;if {$int_status == "down" || $line_status == "down"} {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;puts "\n!!!Interface is down!!!\n"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;exit 1&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;else {&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;puts "\n!!!Interface is up!!!\n"&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;&lt;span&gt;  &lt;/span&gt;exit 0&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;}&lt;/p&gt;  &lt;/div&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;Here is the output that is displayed in this case&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;div style="border: 1pt solid windowtext; padding: 1pt 4pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; margin-left: 0.5in; margin-right: 0.5in;"&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;C:\Tcl&gt;tclsh85 sample.tcl&lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt; &lt;/p&gt;  &lt;p style="margin: 0in 0in 0.0001pt; background: rgb(242, 242, 242) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" class="code"&gt;!!!Interface is down!!!&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-27884826011050064?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/27884826011050064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=27884826011050064' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/27884826011050064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/27884826011050064'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/07/getting-started-with-expect-for-cisco.html' title='Getting Started with Expect for Cisco NCM Command Scripts'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-527198079355280358</id><published>2009-06-23T19:24:00.023-04:00</published><updated>2009-06-23T21:32:36.859-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NCM'/><title type='text'>Automation with Cisco NCM Command Scripts</title><content type='html'>One of the strongest features of Cisco NCM is the capability to create scripts to be executed against any number of devices.  These scripts can be as simple as running a sequence of Cisco IOS commands or as complex as a multi-page Expect script.  In this blog I'll show how easy it is to create an Expect script, within NCM.&lt;br /&gt;&lt;br /&gt;For this example, let's assume we're trying to figure out a way to allow the Network Operations Center (NOC) to shut down interfaces on access switches, but not on distribution or core switches.  Additionally, the NOC should not be able to be able to shut down the uplink ports located on ports fastethernet 0/23 and fastethernet 0/24.&lt;br /&gt;&lt;br /&gt;NCM provides an easy way to get started with the script.  This is done by creating a SSH session to the switch and executing the commands that would be executed in the command script.  Then, the commands can be viewed and automatically converted to an Expect or Perl script.  From there, the script can be customized to provide the logic to accomplish the task above.  Let's walk through how each step is done.&lt;br /&gt;&lt;br /&gt;1.  Click on "Devices &gt; Inventory".&lt;br /&gt;&lt;img src="file:///C:/DOCUME%7E1/rchee/LOCALS%7E1/Temp/moz-screenshot-29.jpg" alt="" /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SkFonD9hl1I/AAAAAAAAAIE/ZHc3_2DyarU/s1600-h/pic1.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 94px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SkFonD9hl1I/AAAAAAAAAIE/ZHc3_2DyarU/s320/pic1.jpg" alt="" id="BLOGGER_PHOTO_ID_5350672852580407122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.  In the resulting screen, click on the SSH button next to the device you would like to connect to&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SkFpPB3BPlI/AAAAAAAAAIM/RWXYEW9Ixvs/s1600-h/pic2.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 138px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SkFpPB3BPlI/AAAAAAAAAIM/RWXYEW9Ixvs/s320/pic2.jpg" alt="" id="BLOGGER_PHOTO_ID_5350673539211017810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3.  In the Java SSH window that appears, type in an example of the commands that would be used to shutdown an interface and exit.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SkFrKBIm2YI/AAAAAAAAAIc/l4YvYpVRSJc/s1600-h/pic3.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 367px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SkFrKBIm2YI/AAAAAAAAAIc/l4YvYpVRSJc/s400/pic3.jpg" alt="" id="BLOGGER_PHOTO_ID_5350675652140259714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4.  Navigate back to the device by, once again, going to "Devices &gt; Inventory".  Click on the device name&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SkFsMUAsE1I/AAAAAAAAAI0/rnPrE23TjNI/s1600-h/pic4.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 163px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SkFsMUAsE1I/AAAAAAAAAI0/rnPrE23TjNI/s320/pic4.jpg" alt="" id="BLOGGER_PHOTO_ID_5350676791078687570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. In the resulting screen, click on "View &gt; Telnet/SSH Sessions"&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SkFsyE-CCxI/AAAAAAAAAI8/0DazkrOH0ac/s1600-h/pic5.jpg"&gt;&lt;img style="cursor: pointer; width: 237px; height: 320px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SkFsyE-CCxI/AAAAAAAAAI8/0DazkrOH0ac/s320/pic5.jpg" alt="" id="BLOGGER_PHOTO_ID_5350677439876041490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6.  Click on "View Commands Only" to view the commands that you just entered&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SkFtOVAENjI/AAAAAAAAAJE/A9oijhkIKoY/s1600-h/pic6.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 146px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SkFtOVAENjI/AAAAAAAAAJE/A9oijhkIKoY/s320/pic6.jpg" alt="" id="BLOGGER_PHOTO_ID_5350677925215876658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;7.  Click on "Convert to Expect Script" to automatically create a script from the commands entered.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TT1j-w_G00Y/SkFtuCJsBqI/AAAAAAAAAJM/rgAiSI5yKDI/s1600-h/pic7.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 206px;" src="http://4.bp.blogspot.com/_TT1j-w_G00Y/SkFtuCJsBqI/AAAAAAAAAJM/rgAiSI5yKDI/s320/pic7.jpg" alt="" id="BLOGGER_PHOTO_ID_5350678469911774882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;8.  At this point, an Expect script is created with the code needed to execute the commands entered previously&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SkFuO66zAcI/AAAAAAAAAJU/lEeV9kVAAFE/s1600-h/pic8.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 254px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SkFuO66zAcI/AAAAAAAAAJU/lEeV9kVAAFE/s320/pic8.jpg" alt="" id="BLOGGER_PHOTO_ID_5350679034905952706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;9.  There a few places that need customization.  First, the interface used in the script, fastethernet0/9 should be a variable that the NOC can define at execution time.  This can be done by replacing fastethernet0/9 with a NCM variable that the NOC will be prompted to enter when they execute the script.  To do this, replace fastethernet0/9 with $interface$.  A string with $ at the beginning and end signifies an NCM variable.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;send "interface fa0/9\r" -----------&gt; send "interface $interface$\r"&lt;/blockquote&gt;&lt;br /&gt;10.  When this is added, the "Pull Variables" button can be clicked to create the prompt that the NOC will see when they execute the script&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SkFvZEIJ-YI/AAAAAAAAAJc/5n7Q1x-bayk/s1600-h/pic9.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 294px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SkFvZEIJ-YI/AAAAAAAAAJc/5n7Q1x-bayk/s320/pic9.jpg" alt="" id="BLOGGER_PHOTO_ID_5350680308688222594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;11.  This brings up another screen that requires information to be entered for the prompt&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SkFvziFPUQI/AAAAAAAAAJk/9OWq9FhIWZ4/s1600-h/pic10.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 82px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SkFvziFPUQI/AAAAAAAAAJk/9OWq9FhIWZ4/s320/pic10.jpg" alt="" id="BLOGGER_PHOTO_ID_5350680763405652226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;12.  That's the basics of the script.  The only thing left to do is add the restrictions for the script.  First, the NOC should only be able to change access layer switches.  The naming convention for the switches state that access switches start with "A".  We can use this as a check to make sure an access switch is being used.  Below is the corresponding Expect code snippet&lt;br /&gt;&lt;blockquote&gt;if [string match "^A*" $enable_prompt] {&lt;br /&gt;} else {&lt;br /&gt;puts "\nThis is not an access layer switch\n"&lt;br /&gt;exit 1&lt;br /&gt;}&lt;/blockquote&gt;This snippet checks to see if the pre-defined $enable_prompt variable starts with an A.  If so, it is an access layer switch.  If not, an error message is displayed and the script is exited with error status.&lt;br /&gt;&lt;br /&gt;13.  The second check was to make sure fastethernet0/23 or fastethernet0/24 are not used.  This is accomplished with the snippet below.&lt;br /&gt;&lt;blockquote&gt;set protected_int {"1/6" "1/7"}&lt;br /&gt;set int $interface$&lt;br /&gt;&lt;br /&gt;set i 0&lt;br /&gt;foreach i $protected_int {&lt;br /&gt;if [string match "*$i" $int] {&lt;br /&gt;puts "\nShutdown of uplink ports is not permitted\n"&lt;br /&gt;exit 1&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;In this portion, the uplink interfaces are put into an array named "protect_int".  The interface, that the NOC chooses, is stored in the $interface$ variable.  A for loop checks to see if there is match between an uplink interface and the chosen interface.  If so, an error message is sent and the scripted is exited.&lt;br /&gt;&lt;br /&gt;14.  When the script is created, the Expect command "log_user 1" is set.  This means that whatever is sent in the script is also sent to the script output.  In order to stop this from happening, set "log_user 0".  With this set, only the "puts" output is displayed.  In general, this is what you will want to see.&lt;br /&gt;&lt;br /&gt;15.  To run the script, click "Devices &gt; Device Tools &gt; Command Scripts"&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TT1j-w_G00Y/SkF96YuvieI/AAAAAAAAAJs/C0rYj3tFYbI/s1600-h/pic11.jpg"&gt;&lt;img style="cursor: pointer; width: 296px; height: 320px;" src="http://4.bp.blogspot.com/_TT1j-w_G00Y/SkF96YuvieI/AAAAAAAAAJs/C0rYj3tFYbI/s320/pic11.jpg" alt="" id="BLOGGER_PHOTO_ID_5350696274317248994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;16.  Select "Run" on the script to execute.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TT1j-w_G00Y/SkF-mpeaToI/AAAAAAAAAJ8/ltI6BNVWUlY/s1600-h/pic12.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 99px;" src="http://4.bp.blogspot.com/_TT1j-w_G00Y/SkF-mpeaToI/AAAAAAAAAJ8/ltI6BNVWUlY/s400/pic12.jpg" alt="" id="BLOGGER_PHOTO_ID_5350697034726395522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;17.  Select the devices to run the script on, the interface to shutdown, and click "Save Task" to execute the script&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SkF_f7ALnrI/AAAAAAAAAKE/liSqAwFz8iU/s1600-h/pic13.jpg"&gt;&lt;img style="cursor: pointer; width: 357px; height: 400px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SkF_f7ALnrI/AAAAAAAAAKE/liSqAwFz8iU/s400/pic13.jpg" alt="" id="BLOGGER_PHOTO_ID_5350698018683985586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's all there is to creating a command script in NCM.  I would highly recommend purchasing the "Exploring Expect" book written by Don Libes and published by O'Reilly.  Additionally, I would recommend downloading ActiveTCL from Activestate.com.  Expect is actually an extension of TCL.  After installing TCL, you can load the Expect extension by entering "teacup install Expect" from a CMD prompt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-527198079355280358?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/527198079355280358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=527198079355280358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/527198079355280358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/527198079355280358'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/06/automation-with-cisco-ncm-command.html' title='Automation with Cisco NCM Command Scripts'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TT1j-w_G00Y/SkFonD9hl1I/AAAAAAAAAIE/ZHc3_2DyarU/s72-c/pic1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-2303134497392448933</id><published>2009-06-20T21:31:00.003-04:00</published><updated>2009-06-20T22:19:22.340-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Microsoft Swiss Army Toolkit</title><content type='html'>Every once in awhile there are instances where you need information about a Microsoft Windows XP computer that you think should be easy to find but seems impossible to uncover.  The tool to find the information is a built-in command line tool call wmic.exe.  This command has a slew of command line options that can uncover practically any information about your computer.  Here are some examples.&lt;br /&gt;&lt;br /&gt;Want to find out the OS version of your computer?  Run "wmic os".  The output shows up in columns with a ton of information.  The version information show up as shown below&lt;br /&gt;&lt;blockquote&gt;C:\&gt;wmic os&lt;br /&gt;Version&lt;br /&gt;5.1.2600&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Here's a list of all the command line parameters available&lt;br /&gt;&lt;blockquote&gt;C:\&gt; wmic /?&lt;br /&gt;&lt;br /&gt;[global switches] &lt;command&gt;&lt;br /&gt;&lt;br /&gt;The following global switches are available:&lt;br /&gt;/NAMESPACE           Path for the namespace the alias operate against.&lt;br /&gt;/ROLE                Path for the role containing the alias definitions.&lt;br /&gt;/NODE                Servers the alias will operate against.&lt;br /&gt;/IMPLEVEL            Client impersonation level.&lt;br /&gt;/AUTHLEVEL           Client authentication level.&lt;br /&gt;/LOCALE              Language id the client should use.&lt;br /&gt;/PRIVILEGES          Enable or disable all privileges.&lt;br /&gt;/TRACE               Outputs debugging information to stderr.&lt;br /&gt;/RECORD              Logs all input commands and output.&lt;br /&gt;/INTERACTIVE         Sets or resets the interactive mode.&lt;br /&gt;/FAILFAST            Sets or resets the FailFast mode.&lt;br /&gt;/USER                User to be used during the session.&lt;br /&gt;/PASSWORD            Password to be used for session login.&lt;br /&gt;/OUTPUT              Specifies the mode for output redirection.&lt;br /&gt;/APPEND              Specifies the mode for output redirection.&lt;br /&gt;/AGGREGATE           Sets or resets aggregate mode.&lt;br /&gt;/AUTHORITY           Specifies the &lt;authority&gt; for the connection.&lt;br /&gt;/?[:&lt;brief|full&gt;]    Usage information.&lt;br /&gt;&lt;br /&gt;For more information on a specific global switch, type: switch-name /?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The following alias/es are available in the current role:&lt;br /&gt;ALIAS                    - Access to the aliases available on the local system&lt;br /&gt;BASEBOARD                - Base board (also known as a motherboard or system board) management.&lt;br /&gt;BIOS                     - Basic input/output services (BIOS) management.&lt;br /&gt;BOOTCONFIG               - Boot configuration management.&lt;br /&gt;CDROM                    - CD-ROM management.&lt;br /&gt;COMPUTERSYSTEM           - Computer system management.&lt;br /&gt;CPU                      - CPU management.&lt;br /&gt;CSPRODUCT                - Computer system product information from SMBIOS.&lt;br /&gt;DATAFILE                 - DataFile Management.&lt;br /&gt;DCOMAPP                  - DCOM Application management.&lt;br /&gt;DESKTOP                  - User's Desktop management.&lt;br /&gt;DESKTOPMONITOR           - Desktop Monitor management.&lt;br /&gt;DEVICEMEMORYADDRESS      - Device memory addresses management.&lt;br /&gt;DISKDRIVE                - Physical disk drive management.&lt;br /&gt;DISKQUOTA                - Disk space usage for NTFS volumes.&lt;br /&gt;DMACHANNEL               - Direct memory access (DMA) channel management.&lt;br /&gt;ENVIRONMENT              - System environment settings management.&lt;br /&gt;FSDIR                    - Filesystem directory entry management.&lt;br /&gt;GROUP                    - Group account management.&lt;br /&gt;IDECONTROLLER            - IDE Controller management.&lt;br /&gt;IRQ                      - Interrupt request line (IRQ) management.&lt;br /&gt;JOB                      - Provides  access to the jobs scheduled using the schedule service.&lt;br /&gt;LOADORDER                - Management of system services that define execution dependencies.&lt;br /&gt;LOGICALDISK              - Local storage device management.&lt;br /&gt;LOGON                    - LOGON Sessions.&lt;br /&gt;MEMCACHE                 - Cache memory management.&lt;br /&gt;MEMLOGICAL               - System memory management (configuration layout and availability of memory).&lt;br /&gt;MEMPHYSICAL              - Computer system's physical memory management.&lt;br /&gt;NETCLIENT                - Network Client management.&lt;br /&gt;NETLOGIN                 - Network login information (of a particular user) management.&lt;br /&gt;NETPROTOCOL              - Protocols (and their network characteristics) management.&lt;br /&gt;NETUSE                   - Active network connection management.&lt;br /&gt;NIC                      - Network Interface Controller (NIC) management.&lt;br /&gt;NICCONFIG                - Network adapter management.&lt;br /&gt;NTDOMAIN                 - NT Domain management.&lt;br /&gt;NTEVENT                  - Entries in the NT Event Log.&lt;br /&gt;NTEVENTLOG               - NT eventlog file management.&lt;br /&gt;ONBOARDDEVICE            - Management of common adapter devices built into the motherboard (system board).&lt;br /&gt;OS                       - Installed Operating System/s management.&lt;br /&gt;PAGEFILE                 - Virtual memory file swapping management.&lt;br /&gt;PAGEFILESET              - Page file settings management.&lt;br /&gt;PARTITION                - Management of partitioned areas of a physical disk.&lt;br /&gt;PORT                     - I/O port management.&lt;br /&gt;PORTCONNECTOR            - Physical connection ports management.&lt;br /&gt;PRINTER                  - Printer device management.&lt;br /&gt;PRINTERCONFIG            - Printer device configuration management.&lt;br /&gt;PRINTJOB                 - Print job management.&lt;br /&gt;PROCESS                  - Process management.&lt;br /&gt;PRODUCT                  - Installation package task management.&lt;br /&gt;QFE                      - Quick Fix Engineering.&lt;br /&gt;QUOTASETTING             - Setting information for disk quotas on a volume.&lt;br /&gt;RECOVEROS                - Information that will be gathered from memory when the operating system fails.&lt;br /&gt;REGISTRY                 - Computer system registry management.&lt;br /&gt;SCSICONTROLLER           - SCSI Controller management.&lt;br /&gt;SERVER                   - Server information management.&lt;br /&gt;SERVICE                  - Service application management.&lt;br /&gt;SHARE                    - Shared resource management.&lt;br /&gt;SOFTWAREELEMENT          - Management of the  elements of a software product installed on a system.&lt;br /&gt;SOFTWAREFEATURE          - Management of software product subsets of SoftwareElement.&lt;br /&gt;SOUNDDEV                 - Sound Device management.&lt;br /&gt;STARTUP                  - Management of commands that run automatically when users log onto the computer system.&lt;br /&gt;SYSACCOUNT               - System account management.&lt;br /&gt;SYSDRIVER                - Management of the system driver for a base service.&lt;br /&gt;SYSTEMENCLOSURE          - Physical system enclosure management.&lt;br /&gt;SYSTEMSLOT               - Management of physical connection points including ports,  slots and peripherals, and proprietary connections points.&lt;br /&gt;TAPEDRIVE                - Tape drive management.&lt;br /&gt;TEMPERATURE              - Data management of a temperature sensor (electronic thermometer).&lt;br /&gt;TIMEZONE                 - Time zone data management.&lt;br /&gt;UPS                      - Uninterruptible power supply (UPS) management.&lt;br /&gt;USERACCOUNT              - User account management.&lt;br /&gt;VOLTAGE                  - Voltage sensor (electronic voltmeter) data management.&lt;br /&gt;VOLUMEQUOTASETTING       - Associates the disk quota setting with a specific disk volume.&lt;br /&gt;WMISET                   - WMI service operational parameters management.&lt;br /&gt;&lt;br /&gt;For more information on a specific alias, type: alias /?&lt;br /&gt;&lt;br /&gt;CLASS     - Escapes to full WMI schema.&lt;br /&gt;PATH      - Escapes to full WMI object paths.&lt;br /&gt;CONTEXT   - Displays the state of all the global switches.&lt;br /&gt;QUIT/EXIT - Exits the program.&lt;br /&gt;&lt;br /&gt;For more information on CLASS/PATH/CONTEXT, type: (CLASS | PATH | CONTEXT) /?&lt;/brief|full&gt;&lt;/authority&gt;&lt;/command&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-2303134497392448933?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/2303134497392448933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=2303134497392448933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/2303134497392448933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/2303134497392448933'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/06/microsoft-swiss-army-toolkit.html' title='Microsoft Swiss Army Toolkit'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-5893173334018030107</id><published>2009-05-29T22:58:00.004-04:00</published><updated>2009-05-29T23:47:50.122-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NCM'/><title type='text'>Features of Cisco Network Compliance Manager (NCM)</title><content type='html'>Cisco Network Compliance Manager (NCM) is a powerful tool that can ease network and security management by automating many of the more tedious aspects.  This is all on top of the policies that can be used to ensure compliance with various compliance standards such as SOX, PCI, COBIT, ITIL, COSO, GLBA, and HIPAA.  Here's a list of the top features that NCM can provide for an enterprise&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Bare Metal Provisioning&lt;/span&gt;:  This feature allows NCM to configure a device from scratch.  The assumption is that the device console port is connected to a terminal server.   NCM connects to the terminal server and discovers the device through the console port.  It then pushes a config to the device and sets it up for use on the network&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Device Configuration Template&lt;/span&gt;:  This is a full configuration for a device that can be used as your "golden config".  Every time  a new device is configured, it can use this device configuration template as a baseline for the configuration.  Unique portions, such as IP addresses, can be added through device variables that are defined at implementation time. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Command scripts&lt;/span&gt;:  These are code snippets that can be run as a script.  This is a great way to allow NOC personnel to safely execute commands without worrying about misconfigurations.  The command scripts can even be forced to go through a workflow process.  This could ensure that a higher level engineer reviews the command script before it is sent out.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Policies&lt;/span&gt;:  These are checks that are done against the device  snapshots that are periodically taken.  This is one of the strongest features of NCM.  There are number of different ways that policies can be used.  One way is to check for stale configurations that should not exist.  An example of this would be old SNMP server configurations that should be removed.  The policy can also be configured to auto-remediate the problem and remove the stale configuration.  To make this safer, the auto-remediation could be sent through a workflow for approval before it is actually implemented as a task.  The second benefit of policies is standards based policy compliance checks.  These would be policies, such as SOX and PCI.  The third benefit of policies is automated checking of software vulnerabilities.  This is provided with NCM Alert center.  This is a subscription based service that is used to check for software vulnerabilities in Cisco devices.  When a Cisco vulnerability announcement is released, Cisco creates an NCM policy to check for the software vulnerability.  NCM downloads that policy, from Cisco, and uses it to check the devices it supports.  If a vulnerability is found, it shows up in the police compliance report.  The great thing about this is that the Cisco created policy checks for both the software version and the feature that causes the vulnerability.  If the feature is not used, the device will not show up as vulnerable.  This granularity ensures that only the devices truly vulnerable to a PSIRT are flagged.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Software Image Management (SWIM)&lt;/span&gt;:  NCM collects all the information that is needed to determine the software version that should be used on the devices.  By using SWIM, downloading updated software images from Cisco is just a matter of a few mouse clicks.  Deployment of the software images is also just a few mouse clicks. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Searching&lt;/span&gt;:  The search functionality built into NCM is excellent.  The searches are extremely flexible.  When trying to search for a set of information about devices I usually find an extremely easy way of creating the search.  Additionally, searches can be saved as a user report.  This saves a lot of time.  An initial search may take awhile to define which fields should show up and what information should be searched on.  Once this is defined and saved as a user report, the information can be retrieved in a few mouse clicks.&lt;/li&gt;&lt;li&gt;I&lt;span style="font-weight: bold;"&gt;nventory for Cisco SW Maintenance&lt;/span&gt;:  By using the search functionality, a comprehensive list of devices and serial numbers can be retrieved.  This information can be used to define the devices that need to be covered under Cisco SW maintenance for the upcoming year. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Reporting&lt;/span&gt;:  There are a number of great reports that NCM generates that show management level reports as well as detailed reports about the network environment&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Diagrams:&lt;/span&gt;  NCM can create L2, L3, L3 port, and other diagrams that show the network in a JPG, interactive JPG, or Visio format.  You can also define which devices show up in the diagram to provide unique views showning the connectivity of different devices in the network.&lt;/li&gt;&lt;/ol&gt;I'll be providing further blogs, in the future, showing screenshots of the features listed above.  Feel free to shoot me an email if there's a specific topic you wanted me to cover.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-5893173334018030107?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/5893173334018030107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=5893173334018030107' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/5893173334018030107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/5893173334018030107'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/05/features-of-cisco-network-compliance.html' title='Features of Cisco Network Compliance Manager (NCM)'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-9059731305840159201</id><published>2009-05-14T15:40:00.004-04:00</published><updated>2009-05-14T15:52:59.557-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASDM'/><category scheme='http://www.blogger.com/atom/ns#' term='ASA'/><category scheme='http://www.blogger.com/atom/ns#' term='high bandwidth'/><title type='text'>Tracking down high bandwidth users</title><content type='html'>When your internet bandwidth is being maxed out, it's nice to have an easy way to determine which users are causing the problem.  One way of doing this is by using Netflow statistics.  One free toolset to collect Netflow data is called &lt;a href="http://www.splintered.net/sw/flow-tools"&gt;flow-tools&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;If you're using ASA FWs, a quick and dirty way to check out the offending users is to use the built in statistics in Cisco ASDM.  This is located on the firewall dashboard as shown below&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/Sgx1j2xwsmI/AAAAAAAAAHQ/Rwbs_82rQlM/s1600-h/navigation.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 39px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/Sgx1j2xwsmI/AAAAAAAAAHQ/Rwbs_82rQlM/s320/navigation.jpg" alt="" id="BLOGGER_PHOTO_ID_5335768917387293282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On this dashboard is a "top usage status" box that shows the offending user IP addresses along with the percentage of bandwidth used.  This is shown below&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/Sgx2BzfXHwI/AAAAAAAAAHY/1Ejd9qmXOxY/s1600-h/top+usage+status.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 117px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/Sgx2BzfXHwI/AAAAAAAAAHY/1Ejd9qmXOxY/s320/top+usage+status.jpg" alt="" id="BLOGGER_PHOTO_ID_5335769431900888834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This data can be used as a starting point for tracking down the high bandwidth users on your network&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-9059731305840159201?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/9059731305840159201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=9059731305840159201' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/9059731305840159201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/9059731305840159201'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/05/tracking-down-high-bandwidth-users.html' title='Tracking down high bandwidth users'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_TT1j-w_G00Y/Sgx1j2xwsmI/AAAAAAAAAHQ/Rwbs_82rQlM/s72-c/navigation.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-4944116825194270379</id><published>2009-05-03T18:33:00.006-04:00</published><updated>2009-05-03T19:09:44.846-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MARS'/><category scheme='http://www.blogger.com/atom/ns#' term='SNMP'/><category scheme='http://www.blogger.com/atom/ns#' term='NCM'/><title type='text'>SNMP testing with net-snmp</title><content type='html'>With most network management systems and network security systems, SNMP is a critical component. One great tool for checking SNMP functionality is &lt;a href="http://www.net-snmp.org/"&gt;net-snmp&lt;/a&gt;. This tool works with Windows and Linux.  From a security perspective, this net-snmp can be used as another troubleshooting tool to ensure that Cisco MARS and Cisco NCM are working correctly.&lt;br /&gt;&lt;br /&gt;One basic tool, included with the toolset, is snmpwalk. This can be used to determine the OIDs used for a network device. Here's a partial execution of the command against a Cisco 2523 router.&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&lt;br /&gt;C:\Apps\net-snmp\bin&gt; snmpwalk -c cisco -v 1 10.1.1.200 more&lt;br /&gt;SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software&lt;br /&gt;IOS (tm) 2500 Software (C2500-IK8OS-L), Version 12.2(32), RELEASE SOFTWARE (fc1)&lt;br /&gt;Copyright (c) 1986-2005 by cisco Systems, Inc.&lt;br /&gt;Compiled Fri 02-Dec-05 16:15 by&lt;br /&gt;SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.27&lt;br /&gt;DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1229180359) 142 days, 6:23:23.59&lt;br /&gt;SNMPv2-MIB::sysContact.0 = STRING:&lt;br /&gt;SNMPv2-MIB::sysName.0 = STRING: termserv-R5&lt;br /&gt;SNMPv2-MIB::sysLocation.0 = STRING:&lt;br /&gt;SNMPv2-MIB::sysServices.0 = INTEGER: 78&lt;br /&gt;SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00&lt;br /&gt;IF-MIB::ifNumber.0 = INTEGER: 4&lt;br /&gt;IF-MIB::ifIndex.1 = INTEGER: 1&lt;/p&gt;&lt;/blockquote&gt;You can see that all the MIB OID values by adding the "-O n" option. By just typing "snmpwalk" you can get the full list of command line options. The use of "-O n" is shown below&lt;br /&gt;&lt;blockquote&gt;C:\Apps\net-snmp\bin&gt; snmpwalk -O n -c cisco -v 1 10.1.1.200&lt;br /&gt;.1.3.6.1.2.1.1.1.0 = STRING: Cisco Internetwork Operating System Software&lt;br /&gt;IOS (tm) 2500 Software (C2500-IK8OS-L), Version 12.2(32), RELEASE SOFTWARE(fc1)&lt;br /&gt;Copyright (c) 1986-2005 by cisco Systems, Inc.&lt;br /&gt;Compiled Fri 02-Dec-05 16:15 by&lt;br /&gt;.1.3.6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.9.1.27&lt;br /&gt;.1.3.6.1.2.1.1.3.0 = Timeticks: (1229164596) 142 days, 6:20:45.96&lt;br /&gt;.1.3.6.1.2.1.1.4.0 = STRING:&lt;br /&gt;.1.3.6.1.2.1.1.5.0 = STRING: termserv-R5&lt;br /&gt;.1.3.6.1.2.1.1.6.0 = STRING:&lt;br /&gt;.1.3.6.1.2.1.1.7.0 = INTEGER: 78&lt;br /&gt;.1.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00&lt;br /&gt;.1.3.6.1.2.1.2.1.0 =&lt;br /&gt;INTEGER: 4&lt;br /&gt;.1.3.6.1.2.1.2.2.1.1.1 = INTEGER: 1&lt;/blockquote&gt;You can then use this information to be more specific with your SNMP requests by using snmpget. Using the example above, we can just get the version information for the 2523 router by executing the command below&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&lt;br /&gt;C:\Apps\net-snmp\bin&gt; snmpget -c cisco -v 1 10.1.1.200 .1.3.6.1.2.1.1.1.0&lt;br /&gt;SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software&lt;br /&gt;IOS (tm) 2500 Software (C2500-IK8OS-L), Version 12.2(32), RELEASE SOFTWARE (fc1)&lt;br /&gt;Copyright (c) 1986-2005 by cisco Systems, Inc.&lt;br /&gt;Compiled Fri 02-Dec-05 16:15 by&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-4944116825194270379?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/4944116825194270379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=4944116825194270379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/4944116825194270379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/4944116825194270379'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/05/snmp-testing-with-net-snmp.html' title='SNMP testing with net-snmp'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-8827783045832539194</id><published>2009-04-29T15:34:00.001-04:00</published><updated>2009-04-29T21:37:11.175-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>NAC API Example</title><content type='html'>The NAC API provides a method of inputting configuration into the NAC using a Perl script instead of typing it in manually.  This is really nice if you have a large number of items to add or if you want to automate a particular process.  One example would be to add the MAC addresses of printers to the device filter list.  Another example would be to a method of automatically creating guest user accounts.  Both of these features can be completed by the NAC Profiler and NAC Guest Server for larger deployments&lt;br /&gt;&lt;br /&gt;There's a good example of using the NAC API in the &lt;a href="http://www.cisco.com/en/US/products/ps6128/products_qanda_item09186a00803b7a9f.shtml#q8"&gt;NAC Manager FAQ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-8827783045832539194?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/8827783045832539194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=8827783045832539194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/8827783045832539194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/8827783045832539194'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/07/nac-api-example.html' title='NAC API Example'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-1162736984730580762</id><published>2009-02-17T22:59:00.008-05:00</published><updated>2009-09-02T10:28:55.851-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IOS'/><title type='text'>Packet Captures with Cisco IOS</title><content type='html'>With &lt;a href="http://www.cisco.com/en/US/docs/ios/netmgmt/configuration/guide/nm_troubleshooting_ps6441_TSD_Products_Configuration_Guide_Chapter.html#wp1055858"&gt;Cisco IOS 12.4(20)T, &lt;/a&gt;Cisco now supports packet captures on interfaces.  This is a welcome addition to the Cisco feature set.  Previous to this addition, network admins had to rely on span ports and capturing traffic on end devices to troubleshoot network problems.  Now, network admins can capture packets entering and exiting router interfaces.  There are a couple of disappointments with the the packet capture.  The first is that the configuration is a little bit difficult to use.  There are a number of commands that need to be entered to execute a capture.  It would have been nice if there was just one command, similar to tcpdump.   The second disappointment is that the ability to view the packets, on the router, is very limited.  In order to get a good view of the packet capture, it is necessary to export the capture file and view the file using Wireshark.&lt;br /&gt;&lt;br /&gt;I'd like to go through an example of how to use the new packet capture feature.  As stated above, there are number of steps to go through to create the capture.  In this example, I will show how to create a 512 Kbytes circular buffer to hold the data and collect the data on the gigabitethernet 0/1 interface.&lt;br /&gt;&lt;br /&gt;1. The first step is to create the buffer.  In the configuration below I am calling the buffer "buf1"&lt;br /&gt;&lt;blockquote&gt;monitor capture buffer buf1 size 512 max-size 512 circular&lt;/blockquote&gt;2. The next step is to define which interface will listen for the traffic.  This is done by creating a capture point.  In the configuration below I am calling the capture point "cap1".  I am setting the capture point to capture ip packets sent and received on gigabitethernet 0/1.&lt;br /&gt;&lt;blockquote&gt;monitor capture point ip cef cap1 gigabitethernet0/1 both&lt;/blockquote&gt;3. The next step is to associate the buffer with the capture point.&lt;br /&gt;&lt;blockquote&gt;monitor capture point associate cap1 buf1&lt;/blockquote&gt;4. The next step is to to start the capture&lt;br /&gt;&lt;blockquote&gt;monitor capture point start cap1&lt;/blockquote&gt;5. After the required data is captured, the capture is stopped&lt;br /&gt;&lt;blockquote&gt;monitor capture point stop cap1&lt;br /&gt;&lt;/blockquote&gt;6. The data can then be viewed with the command below.  As you can see in the associated information shown with the command, there is not alot of detail given&lt;br /&gt;&lt;blockquote&gt;show monitor cap buffer buf1 dump&lt;br /&gt;23:50:18.669 EDT Feb 17 2009 : IPv4 LES CEF    : Gi0/1 None&lt;br /&gt;&lt;br /&gt;499A6280: 00192F06 0C09001B D5FF3C05 08004500  ../.....U.&lt;...E. 499A6290: 008000BA 0000F611 881DAD4F 20284465  ...:..v...-O (De 499A62A0: 29B91194 1194006C 00003668 E2340000  )9.....l..6hb4.. 499A62B0: 51D5B8B1 90BFB446 3F7011AF 78C98F42  QU81.?4F?p./xI.B 499A62C0: 696F3833 023841E8 5EF6988B C741F5E9  io83.8Ah^v..GAui 499A62D0: 4ACD925F 074DC56C 10B731B2 797F9C03  JM._.MEl.712y... 499A62E0: 28BF4C53 2ADF0EEF AE0F3526 98442EE2  (?LS*_.o..5&amp;amp;.D.b 499A62F0: 5A8C348A 246ABF28 3EFA15CB 11ABF76C  Z.4.$j?(&gt;z.K.+wl&lt;br /&gt;499A6300: EC586E86 E802FF30 343BE135 9A0300    lXn.h..04;a5...&lt;br /&gt;&lt;/blockquote&gt;7. A better way to view the data is to export it.  The data can be exported to another computer.  The capture file can then be viewed with Wireshark.  The export supports FTP, HTTP, HTTPS, PRAM, RCP, SCP, and TFTP.  The example below shows TFTP.&lt;br /&gt;&lt;blockquote&gt;monitor capture buffer buf1 export tftp://192.168.1.10/buf1.pcap&lt;/blockquote&gt;&lt;br /&gt;Here are some references to use for further information&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cisco.com/en/US/docs/ios/netmgmt/configuration/guide/nm_troubleshooting_ps6441_TSD_Products_Configuration_Guide_Chapter.html#wp1055858"&gt;Packet Capture Section of the 12.4T Config Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cisco.com/en/US/docs/ios/netmgmt/command/reference/nm_10.html"&gt;Packet Capture Section of the 12.4T Reference Guide&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-1162736984730580762?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/1162736984730580762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=1162736984730580762' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/1162736984730580762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/1162736984730580762'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/02/packet-captures-with-cisco-ios.html' title='Packet Captures with Cisco IOS'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-239157969636448644</id><published>2009-02-15T16:46:00.000-05:00</published><updated>2009-02-15T16:46:54.696-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VPN'/><title type='text'>Cisco IOS SSL VPN Example</title><content type='html'>Cisco has made a big push into the SSL VPN market.  Currently, their main focus appears to be on beefing up their SSL VPN support of the ASA FW.  SSL VPN does exist within IOS as well, though. Version &lt;a href="http://www.cisco.com/en/US/docs/ios/security/configuration/guide/sec_ssl_vpn.html"&gt;12.4(20)T&lt;/a&gt; added a lot of new features.  The IOS SSL VPN features are definitely lagging behind the ASA SSL VPN, but the basic functionality is available within IOS SSL VPN.  The IOS SSL VPN supports clientless, thin client, and full client modes.  The clientless mode uses a web portal.  Thin client augments the web portal with port forwarding capability.  The full client uses the AnyConnect SSL client.  The IOS SSL VPN does not have RDP, telnet, ssh, etc plugin capability that exists in the ASA SSL VPN.  It also does not support the dynamic access policy(DAP) also available in the ASA SSL VPN.&lt;br /&gt;&lt;br /&gt;I wanted to show an example of using clientless and thin client features in this blog entry.  Before going into the example, I wanted to point out the general methodology for implementing the IOS SSL VPN.    The "webvpn context" command is the container that houses the individual parameters for the VPN.  The "webvpn gateway" and "policy group" provide the parameters that are added to the "webvpn context".&lt;br /&gt;&lt;br /&gt;The example is based on the diagram below&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TT1j-w_G00Y/SZh_wPEVgQI/AAAAAAAAAGo/O8a8fD6CVPM/s1600-h/ios-ssl-diagram.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 126px;" src="http://4.bp.blogspot.com/_TT1j-w_G00Y/SZh_wPEVgQI/AAAAAAAAAGo/O8a8fD6CVPM/s320/ios-ssl-diagram.jpg" alt="" id="BLOGGER_PHOTO_ID_5303129027883925762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For this example, the router needs to provide a user on the 192.168.137.x network secure access to R1 through an SSL web portal.  HTTP acccess, to R1, is provided through a URL link.  HTTPS and SSH access, to R1, is provided by port forwarding.  In a real world example, this type of access could allow emergency access for a network administrator from any computer.&lt;br /&gt;&lt;br /&gt;The first step is to set up the authentication method for the user.  The IOS SSL VPN uses the default AAA method by default.  For this example, we will use local authentication with the commands below&lt;br /&gt;&lt;blockquote&gt;aaa new-model&lt;br /&gt;aaa authentication login default local&lt;br /&gt;username cisco password cisco&lt;/blockquote&gt;The next step is to setup the IP and port information for connectivity to the SSL VPN.  The IOS SSL VPN allows the IP to be based on the interface IP of the router or a virtual IP address.  Additionally, the port can be the standard 443/tcp or it can be another manually assigned port.  For this example, we will use the fa1/0 interface of the router and port 8000/tcp.  This is shown below.&lt;br /&gt;&lt;blockquote&gt;webvpn gateway SSL1&lt;br /&gt;hostname SSL1&lt;br /&gt;ip address 192.168.137.100 port 8000&lt;br /&gt;ssl trustpoint TP-self-signed-4294967295&lt;br /&gt;inservice&lt;/blockquote&gt;Notice the "ssl trustpoint" in the configuration.  This is automatically created when the "inservice" command is added to active the configuration.&lt;br /&gt;&lt;br /&gt;The next step is to create the "webvpn context".  As stated earlier, this is the container for the VPN parameters.  Within the "webvpn context" container, there are number of parameters that are defined and applied.  For example:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A URL can be defined&lt;/li&gt;&lt;li&gt;The URL can be applied to a policy group&lt;/li&gt;&lt;li&gt;The policy group can then be applied to the context&lt;/li&gt;&lt;/ol&gt;This is all within the "webvpn context" container.  An example is shown below&lt;br /&gt;&lt;blockquote&gt;webvpn context SSL&lt;br /&gt;url-list "R1"&lt;br /&gt;heading "R1"&lt;br /&gt;url-text "R1-http" url-value "http://192.168.1.2"&lt;br /&gt;policy group default&lt;br /&gt;url-list "R1"&lt;br /&gt;default-group-policy default&lt;br /&gt;&lt;/blockquote&gt;This shows the URL list, R1,  being defined and then applied to the policy group, default.  The policy group, default, is then applied to the context with the "default-group-policy" command.&lt;br /&gt;&lt;br /&gt;In a similar manner, the IOS SSL VPN can support port forwarding.  This is shown below.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;webvpn context SSL&lt;br /&gt;port-forward "R1"&lt;br /&gt;local-port 5000 remote-server "192.168.1.2" remote-port 443 description "R1 HTTPS"&lt;br /&gt;local-port 5001 remote-server "192.168.1.2" remote-port 22 description "R1 SSH"&lt;br /&gt;policy group default&lt;br /&gt;port-forward "R1" auto-download&lt;br /&gt;default-group-policy default&lt;/span&gt;&lt;/blockquote&gt;This portion shows how to forward ports.  When a user uses a web browser to access https://127.0.0.1:5000, they are redirected to https://192.168.1.2 through the SSL connection.  Similarly, when a users uses an SSH client to access 127.0.0.1 on port 5001, they are redirected to 192.168.1.2 on port 22.  In the "port-forward" command, notice the "auto-download" parameter.  This causes the port forward connectivity to launch automatically, instead of requiring the user to click on the "thin client" start button shown below&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SZiHlNFT_1I/AAAAAAAAAGw/HVtFO-SpxtQ/s1600-h/thin-client-start.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 50px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SZiHlNFT_1I/AAAAAAAAAGw/HVtFO-SpxtQ/s320/thin-client-start.jpg" alt="" id="BLOGGER_PHOTO_ID_5303137634465611602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The screenshots below show the GUI experience based on the configuration above.&lt;br /&gt;&lt;br /&gt;1. The user accesses the web portal at https://192.168.137.100:8000&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///C:/DOCUME%7E1/rchee/LOCALS%7E1/Temp/moz-screenshot-3.jpg" alt="" /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TT1j-w_G00Y/SZiIcx9KdtI/AAAAAAAAAG4/_ScQcHhJXdA/s1600-h/step1-portal-page.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 254px;" src="http://4.bp.blogspot.com/_TT1j-w_G00Y/SZiIcx9KdtI/AAAAAAAAAG4/_ScQcHhJXdA/s320/step1-portal-page.jpg" alt="" id="BLOGGER_PHOTO_ID_5303138589256349394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. The user logs in and is presented with the web portal&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SZiI9vNQ0pI/AAAAAAAAAHA/ePIQ9UwuNfo/s1600-h/step2-web-portal.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 254px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SZiI9vNQ0pI/AAAAAAAAAHA/ePIQ9UwuNfo/s320/step2-web-portal.jpg" alt="" id="BLOGGER_PHOTO_ID_5303139155454251666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. At the same time as step 2, the port forwarding window appears with the setting for port forwarding&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SZiJMQg2sDI/AAAAAAAAAHI/TC7iYaFhF7s/s1600-h/port-forward-dialog-box.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 273px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SZiJMQg2sDI/AAAAAAAAAHI/TC7iYaFhF7s/s320/port-forward-dialog-box.jpg" alt="" id="BLOGGER_PHOTO_ID_5303139404912963634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Below is the full relevant config for the example above&lt;br /&gt;&lt;blockquote&gt;aaa new-model&lt;br /&gt;!&lt;br /&gt;!&lt;br /&gt;aaa authentication login default local&lt;br /&gt;username cisco password 0 cisco&lt;br /&gt;no ip http server&lt;br /&gt;no ip http secure-server&lt;br /&gt;webvpn gateway SSL1&lt;br /&gt; hostname SSL1&lt;br /&gt; ip address 192.168.137.100 port 8000&lt;br /&gt; ssl trustpoint TP-self-signed-4294967295&lt;br /&gt; inservice&lt;br /&gt; !&lt;br /&gt;webvpn context SSL&lt;br /&gt; ssl authenticate verify all&lt;br /&gt; !&lt;br /&gt; url-list "R1"&lt;br /&gt;   heading "R1"&lt;br /&gt;   url-text "R1-http" url-value "http://192.168.1.2"&lt;br /&gt; !&lt;br /&gt; !&lt;br /&gt; port-forward "R1"&lt;br /&gt;   local-port 5000 remote-server "192.168.1.2" remote-port 443 description "R1 HTTPS"&lt;br /&gt;   local-port 5001 remote-server "192.168.1.2" remote-port 22 description "R1 SSH"&lt;br /&gt; !&lt;br /&gt; policy group default&lt;br /&gt;   url-list "R1"&lt;br /&gt;   port-forward "R1" auto-download&lt;br /&gt;   banner "Welcome to the IOS SSL Lab"&lt;br /&gt; default-group-policy default&lt;br /&gt; gateway SSL1&lt;br /&gt; inservice&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-239157969636448644?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/239157969636448644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=239157969636448644' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/239157969636448644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/239157969636448644'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/02/cisco-ios-ssl-vpn-example.html' title='Cisco IOS SSL VPN Example'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_TT1j-w_G00Y/SZh_wPEVgQI/AAAAAAAAAGo/O8a8fD6CVPM/s72-c/ios-ssl-diagram.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-4052102106354967356</id><published>2009-02-11T20:07:00.006-05:00</published><updated>2009-02-11T23:05:46.618-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VPN'/><title type='text'>Auto reconnect with Cisco AnyConnect VPN</title><content type='html'>One of the great features about the Cisco AnyConnect VPN client is auto reconnect.  This feature automatically reconnects a VPN session if the users internet connectivity drops.  This means that if a user is connected to the VPN and the user's computer is accidentally unplugged, the VPN connection will be automatically reestablished when the computer is plugged back in.  Another example would be a similar situation when a 3G wireless connection drops.  If using the IPSec VPN client, a temporary loss of signal would cause the VPN connection to drop.  With the AnyConnect VPN client, the VPN connection would be automatically reestablished.&lt;br /&gt;&lt;br /&gt;This feature is turned on by default.  As long as the user's computer does not go into a suspend state the AnyConnect VPN client will attempt to reconnect.  This setting is defined in an XML file that is described in the &lt;a href="http://www.cisco.com/en/US/docs/security/vpn_client/anyconnect/anyconnect23/administration/23adminapa.html"&gt;Cisco AnyConnect VPN Administrator Guide, Release 2.3&lt;/a&gt;.  The XML file is located in the \Documents and Settings\All Users\Application Data\Cisco\Cisco AnyConnect VPN Client\Profile\AnyConnectProfile.tmpl file.  By modifying this file, the auto reconnect functionality can be disabled, if desired.&lt;br /&gt;&lt;br /&gt;The portion of the file pertinent to auto reconnect appears as follows&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SZOgBY6jX7I/AAAAAAAAAGg/hhafJeMG7WY/s1600-h/TMPL-file.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 89px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SZOgBY6jX7I/AAAAAAAAAGg/hhafJeMG7WY/s400/TMPL-file.jpg" alt="" id="BLOGGER_PHOTO_ID_5301757132073557938" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-4052102106354967356?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/4052102106354967356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=4052102106354967356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/4052102106354967356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/4052102106354967356'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/02/auto-reconnect-with-cisco-anyconnect.html' title='Auto reconnect with Cisco AnyConnect VPN'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_TT1j-w_G00Y/SZOgBY6jX7I/AAAAAAAAAGg/hhafJeMG7WY/s72-c/TMPL-file.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-6796364475111691996</id><published>2009-02-09T00:11:00.003-05:00</published><updated>2009-02-12T10:44:59.215-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSA'/><title type='text'>Moving Cisco CSA Management Center to a New Server with New Name and New  IP</title><content type='html'>The Cisco Security Agent Management Center (CSA MC) provides the central management for CSA.  The Agents check in with the CSA MC to make sure they have the latest policy and version of software.  For this reason, it is important that the CSA MC be a stable server that is always operational with the same IP address and name.  Unfortunately, there may be unavoidable instances where the CSA MC must be moved to a new server with a different IP and name.  This guide will go through how to move the CSA MC application and database to a new server and migrate the Agents, running on the end computers, to use the new CSA MC.&lt;br /&gt;&lt;br /&gt;The following assumptions are being made&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The database is MS SQL Server 2005 Express Ediation and is housed on the same server as the CSA MC&lt;/li&gt;&lt;li&gt;CSA version 6.0&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Screenshots show the old CSA MC with name "CSA" and the new CSA MC with name "CSA2"&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Creating the New CSA MC&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The first step is to install the &lt;span style="font-weight: bold;"&gt;exact same version&lt;/span&gt; of CSA MC application on the new server.  The license does not need to be installed on the new CSA MC because the license will be moved over from the old CSA MC as part of the database move.&lt;br /&gt;&lt;br /&gt;The next step is to move the database from the old CSA MC to the new CSA MC.  This will allow all the registered agents, groups, rule modules, rules, etc to be moved to the new CSA MC.  The detailed steps are listed below. &lt;blockquote style="font-style: italic;"&gt;Note:  It is important to note that doing this fully replaces the existing database.  This means that any SSL certificate, Agent, policy, group,etc information on the existing database will be removed.  We will see how this affects the Agent registration for the new CSA MC later.&lt;/blockquote&gt;First, on the new and old CSA MCs, stop the CSA MC service and the Agent, running on the CSA MC, using the following commands&lt;br /&gt;&lt;br /&gt;Open Start-&gt;Run... and type "services.msc".  Stop the Management Console, MSSQL, and Agent  services.  The services should look similar to the names below.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY-zt3X4BbI/AAAAAAAAAGQ/KUtpXri5NxI/s1600-h/csa-service.jpg"&gt;&lt;img style="cursor: pointer; width: 127px; height: 29px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY-zt3X4BbI/AAAAAAAAAGQ/KUtpXri5NxI/s320/csa-service.jpg" alt="" id="BLOGGER_PHOTO_ID_5300652886977938866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TT1j-w_G00Y/SY2crG0YvoI/AAAAAAAAAGA/HzD9biowSk8/s1600-h/csamc-service.jpg"&gt;&lt;img style="cursor: pointer; width: 296px; height: 45px;" src="http://4.bp.blogspot.com/_TT1j-w_G00Y/SY2crG0YvoI/AAAAAAAAAGA/HzD9biowSk8/s320/csamc-service.jpg" alt="" id="BLOGGER_PHOTO_ID_5300064600863587970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY2cz9H6qgI/AAAAAAAAAGI/BBw0C-NROwI/s1600-h/sql-server-service.jpg"&gt;&lt;img style="cursor: pointer; width: 169px; height: 20px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY2cz9H6qgI/AAAAAAAAAGI/BBw0C-NROwI/s320/sql-server-service.jpg" alt="" id="BLOGGER_PHOTO_ID_5300064752879970818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On the new CSA MC, rename the c:\Program Files\Cisco\CSAMC\CSAMC60\db directory to a new name, such as db-backup.  Next, copy the c:\Program Files\Cisco\CSAMC\CSAMC60\db directory from the old CSA MC to the new CSA MC.  At this point you have fork lifted the database from the old CSA MC into the new CSA MC.  Reboot the new CSA MC.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Updating Agent Kits&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;As mentioned earlier, the old CSA MC database has been fork lifted into the new CSA MC and fully replaced the existing database on the new CSA MC.  This means that any existing agent kits and any new agent kits generated on the new CSA MC still reference the old CSA MC.  To correct this, we need to dig into the database and modify some entries.&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;Note:  The database changes are based on my own research.  Use at your own risk&lt;/blockquote&gt;The CSA MC installation did not include the Management console to view the SQL Server 2005 database.  Microsoft offers the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&amp;amp;displaylang=en"&gt;Microsoft SQL Server Management Studio Express&lt;/a&gt; to manage the database.  Download this application to the CSA MC and install it.  After it has been installed, launch it.  Take the default login settings as shown below&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY0iNmh7eRI/AAAAAAAAAFo/s0uj_LE3-0Y/s1600-h/SQL-server-console-login.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 234px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY0iNmh7eRI/AAAAAAAAAFo/s0uj_LE3-0Y/s320/SQL-server-console-login.jpg" alt="" id="BLOGGER_PHOTO_ID_5299929953561442578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Navigate down the database tree to the following section&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY0jEmZLooI/AAAAAAAAAFw/wEq4qbV31W8/s1600-h/SQL-db-tree.jpg"&gt;&lt;img style="cursor: pointer; width: 295px; height: 287px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY0jEmZLooI/AAAAAAAAAFw/wEq4qbV31W8/s320/SQL-db-tree.jpg" alt="" id="BLOGGER_PHOTO_ID_5299930898417558146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Within this tree scroll down and look for "dbo.mc_config".  Right click on the name and click "Open Table" as shown below&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY0juxGeHhI/AAAAAAAAAF4/ISZw4jxwhLc/s1600-h/SQL-db-mc_config.jpg"&gt;&lt;img style="cursor: pointer; width: 223px; height: 320px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY0juxGeHhI/AAAAAAAAAF4/ISZw4jxwhLc/s320/SQL-db-mc_config.jpg" alt="" id="BLOGGER_PHOTO_ID_5299931622846373394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The table shows the entries that get sent as part of the Agent Kit.  We will modify the parameters to reflect the new CSA MC instead of the old CSA MC.&lt;br /&gt;&lt;br /&gt;This screenshot shows the database before any changes were made.  The name CSA references the old CSA MC as does the IP 192.168.137.100&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TT1j-w_G00Y/SY0f_kb2RAI/AAAAAAAAAFY/ifmdUKmnboQ/s1600-h/csa2-sql-db-right-after-db-load.jpg"&gt;&lt;img style="cursor: pointer; width: 218px; height: 320px;" src="http://4.bp.blogspot.com/_TT1j-w_G00Y/SY0f_kb2RAI/AAAAAAAAAFY/ifmdUKmnboQ/s320/csa2-sql-db-right-after-db-load.jpg" alt="" id="BLOGGER_PHOTO_ID_5299927513457640450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This screenshot shows the database after the changes were made.  The name CSA2 references the new CSA MC as does the IP 192.168.137.15.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SY0gboxQnKI/AAAAAAAAAFg/JZSWC9rEDh8/s1600-h/csa2-sql-db-modified.jpg"&gt;&lt;img style="cursor: pointer; width: 215px; height: 320px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SY0gboxQnKI/AAAAAAAAAFg/JZSWC9rEDh8/s320/csa2-sql-db-modified.jpg" alt="" id="BLOGGER_PHOTO_ID_5299927995657526434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In addition to the changes listed above, you should probably modify the sslca.crt, sslca.ns, sslca.key, sslhost.crt, sslhost.csr, and sslhost.key files in the database.  In my testing, everything seemed to work fine without modifying the values, but for completeness sake, I would recommend modifying both the names and the data to reflect the information on the new CSA MC server.  The data can be retrieved from the c:\Program Files\cisco\CSAMC\CSAMC60\cfg directory.  Right click on each file and open with notepad.  Then copy the entire contents and paste it into the value portion of the database.&lt;br /&gt;&lt;br /&gt;After the database has been changed, the agent kits need to be refreshed to incorporate the new values.  This can be done by running the following command&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;C:\Program Files\Cisco\CSAMC\CSAMC60\bin&gt;webmgr makekits_refresh&lt;br /&gt;Generating rule programs...&lt;br /&gt;Regenerating agent kits...&lt;br /&gt;Done.&lt;/span&gt;&lt;/blockquote&gt;Once this is complete, the agent kits will have the correct information referencing the new CSA MC.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Fixing the Agent on the New CSA MC&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Now, access the web GUI and navigate to Systems &gt; Hosts.  You'll notice that the new CSA MC server is not listed.  This is because we are using the database from the old server.  This is shown below.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY0D036KwLI/AAAAAAAAAEw/_1QqsSfeQpA/s1600-h/csa2-web-gui-with-only-csa.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 222px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY0D036KwLI/AAAAAAAAAEw/_1QqsSfeQpA/s320/csa2-web-gui-with-only-csa.jpg" alt="" id="BLOGGER_PHOTO_ID_5299896543380947122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The old CSA MC does not need to be listed here, so you can move the server named "CSA.lab.com" to the recycling bin.&lt;br /&gt;&lt;br /&gt;The Agent running on the new CSA MC, CSA2.lab.com, is not showing up because we are using the database from the old CSA MC.  The new CSA MC was registered in the original database on the new CSA MC.  This was the database that we renamed "db-backup". Confirmation of the problem is shown in the agent logs on the new CSA MC&lt;br /&gt;&lt;blockquote&gt;1504: CSA2: Feb 06 2009 21:58:10.773 -0600: %CSA-4-REGISTRATION_FAILED_INVALID_REGID: %[Component=Csamanager][PID=1076]: No deployment host exists on server with registration ID={90A55B27-4F2B-490A-A27E-081D8747E3F5}.&lt;/blockquote&gt;We need to get a new registration that is recognized by the current database on the new CSA MC.  In order to do this, the following steps should be followed:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Remove the Agent on the new CSA MC&lt;/li&gt;&lt;li&gt;Reboot&lt;/li&gt;&lt;li&gt;Download and install the "Servers CSA Management Center V6.0.0.201" Agent Kit from the new CSA MC.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Reboot&lt;/li&gt;&lt;li&gt;Verify that the new CSA MC shows up in the CSA MC web GUI in "Systems &gt; Hosts".&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Following these steps will allow the Agent, running on the new CSA MC, to be properly registered and displayed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Handling Existing Agents&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The registration IDs for the existing Agents have been ported to the new CSA MC with the database move.  There are just two steps that need to occur, on the computers with the Agent installed,  to complete the migration of the already deployed Agents from the old CSA MC to the new CSA MC&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Modify the c:\Program Files\Cisco\CSAgent\cfg\agent.bundle file to reference the new CSA MC&lt;/li&gt;&lt;li&gt;Replace the c:\Program Files\Cisco\CSAgent\cfg\sslca.crt file to reference the new CSA MC&lt;/li&gt;&lt;/ol&gt;To complete step 1, you will first need to stop the Agent with the "net stop csagent" command.  After that, open the agent.bundle file and make the modifications as shown in the screenshots below.  In the screenshots, CSA and 192.168.137.100 reference the old CSA MC and CSA2 and 192.168.137.15 reference the new CSA MC.  The original file is shown on the left and the new file is shown on the right&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TT1j-w_G00Y/SY0Zgm1N54I/AAAAAAAAAE4/UYlPjwQ1foI/s1600-h/agent-machine-agent.bundle-before.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 195px;" src="http://3.bp.blogspot.com/_TT1j-w_G00Y/SY0Zgm1N54I/AAAAAAAAAE4/UYlPjwQ1foI/s320/agent-machine-agent.bundle-before.jpg" alt="" id="BLOGGER_PHOTO_ID_5299920384455206786" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY0Zw3NKiGI/AAAAAAAAAFA/l11rSIYErD4/s1600-h/agent-machine-agent.bundle-after.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 211px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SY0Zw3NKiGI/AAAAAAAAAFA/l11rSIYErD4/s320/agent-machine-agent.bundle-after.jpg" alt="" id="BLOGGER_PHOTO_ID_5299920663728523362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The second step was to replace the sslca.crt file.  The CSA MC creates its own root certificate and distributes it in the CSA Agent Kit.  The Agents then trust the SSL certificate provided by the CSA MC because it is signed with the root certificate.  When the CSA MC is changed, the root certificate also needs to be changed to reference the new CSA MC.  The new sslca.crt can be obtained from the new CSA MC in the c:\Program Files\Cisco\CSAMC\CSAMC60\cfg directory.  It needs to replace the c:\Program Files\Cisco\CSAgent\cfg\sslca.crt file on each computer with the Agent.&lt;br /&gt;&lt;br /&gt;The two steps above can normally be accomplished with a central application used to push out applications.  Some examples of these applications would be Microsoft SMS or Altiris.&lt;br /&gt;&lt;br /&gt;Once the two step above are completed, you should see the following screen on the Agent status page&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TT1j-w_G00Y/SY0eJkONGZI/AAAAAAAAAFI/Efcdeh_7ghY/s1600-h/csa-agent-after-move.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 206px;" src="http://3.bp.blogspot.com/_TT1j-w_G00Y/SY0eJkONGZI/AAAAAAAAAFI/Efcdeh_7ghY/s320/csa-agent-after-move.jpg" alt="" id="BLOGGER_PHOTO_ID_5299925486175852946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cisco.com/en/US/products/sw/cscowork/ps2330/products_configuration_example09186a0080472c19.shtml#csa-mc"&gt;Changing the IP and Hostname of a CSA server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://supportwiki.cisco.com/ViewWiki/index.php/How_to_migrate_the_CiscoWorks_Management_Center_for_Cisco_Security_Agents_to_a_new_server"&gt;How to migrate the CiscoWorks Management Center for Cisco Security Agents to a new server&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-6796364475111691996?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/6796364475111691996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=6796364475111691996' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/6796364475111691996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/6796364475111691996'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/02/moving-cisco-csa-management-center-to.html' title='Moving Cisco CSA Management Center to a New Server with New Name and New  IP'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TT1j-w_G00Y/SY-zt3X4BbI/AAAAAAAAAGQ/KUtpXri5NxI/s72-c/csa-service.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-8924750630690788162</id><published>2009-02-08T23:12:00.005-05:00</published><updated>2009-05-03T19:57:24.750-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SNMP'/><category scheme='http://www.blogger.com/atom/ns#' term='ASA'/><title type='text'>Easy way to find the SNMP OIDs on an ASA FW</title><content type='html'>One excellent command for viewing ASA SNMP OIDs is "show snmp-server oidlist".  It appears that this is a hidden command, based on the &lt;a href="http://www.cisco.com/en/US/docs/security/asa/asa80/command/reference/s7.html"&gt;ASA 8.0 Reference Guide&lt;/a&gt;.  This command provides information on the OID  and name associated with it.  I've included an example below&lt;br /&gt;&lt;blockquote&gt;show snmp-server oidlist&lt;br /&gt;&lt;br /&gt;-------------------------------------------------&lt;br /&gt;[0]     1.3.6.1.2.1.1.1.        sysDescr&lt;br /&gt;[1]     1.3.6.1.2.1.1.2.        sysObjectID&lt;br /&gt;[2]     1.3.6.1.2.1.1.3.        sysUpTime&lt;br /&gt;[3]     1.3.6.1.2.1.1.4.        sysContact&lt;br /&gt;[4]     1.3.6.1.2.1.1.5.        sysName&lt;br /&gt;[5]     1.3.6.1.2.1.1.6.        sysLocation&lt;/blockquote&gt;&lt;br /&gt;I found this command at the link below.  All credit should go to Joe Harris.&lt;br /&gt;&lt;a class="moz-txt-link-freetext" href="http://6200networks.com/2008/10/23/asa-snmp-oids/"&gt;http://6200networks.com/2008/10/23/asa-snmp-oids/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-8924750630690788162?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/8924750630690788162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=8924750630690788162' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/8924750630690788162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/8924750630690788162'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/02/easy-way-to-find-snmp-oids-on-asa-fw.html' title='Easy way to find the SNMP OIDs on an ASA FW'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-4106501385383699352</id><published>2009-02-02T22:24:00.002-05:00</published><updated>2009-02-02T22:28:02.163-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>Cisco NAC Version 4.1.8 released</title><content type='html'>Cisco NAC version 4.1.8 has been released.  The &lt;a href="http://www.cisco.com/en/US/docs/security/nac/appliance/release_notes/418/418rn.html"&gt;release notes&lt;/a&gt; spell out the changes.&lt;br /&gt;&lt;br /&gt;The general NAC Manager/Server enhancements are&lt;br /&gt;&lt;ul&gt;&lt;li&gt;CAS Fallback Behavior Enhancement&lt;/li&gt;&lt;li&gt;CAS HA Pair Link-Detect Configuration Enhancement&lt;/li&gt;&lt;li&gt;DHCP Failover Behavior Enhancement &lt;/li&gt;&lt;/ul&gt;Additionally, there are number of agent fixes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-4106501385383699352?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/4106501385383699352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=4106501385383699352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/4106501385383699352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/4106501385383699352'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/02/blog-post.html' title='Cisco NAC Version 4.1.8 released'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-4388491061076231092</id><published>2009-02-01T14:31:00.002-05:00</published><updated>2009-02-01T14:44:08.084-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSL Certificate'/><title type='text'>Creating a self-signed SSL certificate for Microsoft IIS</title><content type='html'>I wrote a previous blog entry that gave information creating a &lt;a href="http://security-blog.netcraftsmen.net/search/label/SSL%20Certificate"&gt;self-signed SSL certificate with Apache&lt;/a&gt;.  I recently also had to create a self-signed SSL certificate for Microsoft IIS.  It turns out that this is really easy.&lt;br /&gt;&lt;br /&gt;Microsoft provides an &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-4c73-b628-ade629c89499&amp;amp;DisplayLang=en"&gt;IIS resource kit&lt;/a&gt; that provides an application to create a self-signed SSL certificate.  The application is called selfssl.exe.  The steps for creating the SSL certificate are listed below.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download and install the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-4c73-b628-ade629c89499&amp;amp;DisplayLang=en"&gt;IIS resource kit&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Open a cmd prompt and type:  cd "c:\Program Files\IIS Resources\SelfSSL"&lt;/li&gt;&lt;li&gt;Create the self-signed SSL certificate by just typing:  selfssl.exe&lt;/li&gt;&lt;/ol&gt;There are a number of command line parameters you can enter to modify the default settings.  They are listed below&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;C:\Program Files\IIS Resources\SelfSSL&gt;selfssl /?&lt;br /&gt;Microsoft (R) SelfSSL Version 1.0&lt;br /&gt;Copyright (C) 2003 Microsoft Corporation. All rights reserved.&lt;br /&gt;&lt;br /&gt;Installs self-signed SSL certificate into IIS.&lt;br /&gt;SELFSSL [/T] [/N:cn] [/K:key size] [/S:site id] [/P:port]&lt;br /&gt;&lt;br /&gt;/T               Adds the self-signed certificate to "Trusted Certificates"&lt;br /&gt;                 list. The local browser will trust the self-signed certificate&lt;br /&gt;                 if this flag is specified.&lt;br /&gt;/N:cn            Specifies the common name of the certificate. The computer&lt;br /&gt;                 name is used if not specified.&lt;br /&gt;/K:key size      Specifies the key length. Default is 1024.&lt;br /&gt;/V:validity days Specifies the validity of the certificate. Default is 7 days.&lt;br /&gt;/S:site id       Specifies the id of the site. Default is 1 (Default Site).&lt;br /&gt;/P:port          Specifies the SSL port. Default is 443.&lt;br /&gt;/Q               Quiet mode. You will not be prompted when SSL settings are&lt;br /&gt;                 overwritten.&lt;br /&gt;&lt;br /&gt;The default behaviour is equivalent with:&lt;br /&gt;&lt;br /&gt;selfssl.exe /N:CN=SERVER /K:1024 /V:7 /S:1 /P:443&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;Below is an example of creating the self-signed SSL certificate&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;C:\Program Files\IIS Resources\SelfSSL&gt;selfssl&lt;br /&gt;Microsoft (R) SelfSSL Version 1.0&lt;br /&gt;Copyright (C) 2003 Microsoft Corporation. All rights reserved.&lt;br /&gt;&lt;br /&gt;Do you want to replace the SSL settings for site 1 (Y/N)?y&lt;br /&gt;The self signed certificate was successfully assigned to site 1.&lt;br /&gt;&lt;br /&gt;C:\Program Files\IIS Resources\SelfSSL&gt;cd "c:\Program Files"&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-4388491061076231092?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/4388491061076231092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=4388491061076231092' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/4388491061076231092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/4388491061076231092'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/02/creating-self-signed-ssl-certificate.html' title='Creating a self-signed SSL certificate for Microsoft IIS'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-6205249164139421476</id><published>2009-01-31T00:17:00.005-05:00</published><updated>2009-01-31T00:21:26.328-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><category scheme='http://www.blogger.com/atom/ns#' term='ASA'/><title type='text'>NAC Architectures Presentation</title><content type='html'>Chesapeake Netcraftsmen hosts a monthly Cisco Users Group Meeting.  Last month we had a presentation on NAC Architectures and on Troubleshooting ASA.  You can view the presentation slides at &lt;a href=http://www.netcraftsmen.net/cmug&gt;http://www.netcraftsmen.net/cmug&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-6205249164139421476?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/6205249164139421476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=6205249164139421476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/6205249164139421476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/6205249164139421476'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/01/nac-architectures-presentation.html' title='NAC Architectures Presentation'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-1767593949150978979</id><published>2009-01-23T22:33:00.000-05:00</published><updated>2009-01-23T22:33:46.444-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VPN'/><title type='text'>TCP and UDP Ports used for the Cisco VPN Client</title><content type='html'>The Cisco VPN client is the client side application used to encrypt traffic from an end user's computer to the company network.  IPSec is used to encrypt the traffic.   When using standard IPSec, IKE is used for the key negotiation and IPSec to encrypt the data.  IKE uses UDP port 500 and IPSec uses IP protocol 50, assuming ESP is used.&lt;br /&gt;&lt;br /&gt;In most situations, there is a PAT device between the VPN client and the head end VPN device.  PAT works by differentiating users by the UDP or TCP port used.  Since IPSec uses IP protocol 50, it is impossible for more than one user to connect to the VPN device, through the PAT. This is because the IP protocol operates at layer 3 of the OSI reference model and PAT functionality exists at layer 4.    For this reason, there are three different methods of tunneling IPSec traffic.  It is important to understand the ports used for the different methods to ensure that those ports are not blocked.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;NAT Traversal - This method still uses 500/udp for IKE negotiation, but then tunnels IPSec data traffic within 4500/udp packets.  This is the default method for UDP tunneling with the Cisco VPN client&lt;/li&gt;&lt;li&gt;IPSec over UDP - This method still uses 500/udp for IKE negotiation, but then tunnels IPSec data traffic within a pre-defined UDP port.  The default port for this traffic is 10000/udp.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;IPSec over TCP - This method tunnels both the IKE negotiation and IPSec data traffic within a pre-defined TCP port.  The default port for this traffic is 10000/tcp.  This is the only method that tunnels both IKE and IPSec within the same stream.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-1767593949150978979?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/1767593949150978979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=1767593949150978979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/1767593949150978979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/1767593949150978979'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/01/tcp-and-udp-ports-used-for-cisco-vpn.html' title='TCP and UDP Ports used for the Cisco VPN Client'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-3466850612675070882</id><published>2009-01-06T14:53:00.004-05:00</published><updated>2009-01-06T15:04:33.072-05:00</updated><title type='text'>Cisco Mid-Atlantic User's Group Meeting - Jan 15, 16</title><content type='html'>On Jan 15 and 16, Chesapeake Netcraftsmen will be hosting the Cisco Mid-Atlantic User's Group Meeting.  For more details, go to &lt;a href=http://www.netcraftsmen.net/cmug&gt;http://www.netcraftsmen.net/cmug&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Below are the speakers and topics&lt;br /&gt;&lt;br /&gt;    * Rob Chee, CCIE, Sr. Consultant at Chesapeake NetCraftsmen, will explain How to Deploy Cisco Network Access Control. Rob will show you various deployment methods you can use to get the most out of Cisco NAC. If you have been considering NAC for remote users, office users, or wireless users, you won't want to miss this informative presentation.&lt;br /&gt;&lt;br /&gt;    * Having problems with your PIX/ASA firewall? Eric Stuhl, CCIE, Sr. Consultant at Chesapeake NetCraftsmen will talk on Troubleshooting PIX/ASA Firewalls. You will learn expert techniques for diagnosing and repairing problems with your firewall.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-3466850612675070882?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/3466850612675070882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=3466850612675070882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/3466850612675070882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/3466850612675070882'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2009/01/cisco-mid-atlantic-users-group-meeting.html' title='Cisco Mid-Atlantic User&apos;s Group Meeting - Jan 15, 16'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-7612848299016118754</id><published>2008-12-28T10:54:00.010-05:00</published><updated>2008-12-28T18:02:42.610-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='SSL Certificate'/><title type='text'>Java and SSL Certificates</title><content type='html'>&lt;h3&gt;Overview&lt;/h3&gt;&lt;br /&gt;I have a Linux box at home, running Apache 2.2, that I use to archive pictures.  I use an application called &lt;a href=http://gallery.menalto.com&gt;Gallery&lt;/a&gt; as a front end to organize and view the photos.  I'm using a Java application called &lt;a href=http://gallery.menalto.com/wiki/Gallery_Remote&gt;Gallery Remote&lt;/a&gt; to upload pictures to the server.  I've also added SSL encryption so that the username and password, to access the site, are not sent in the clear.  &lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Problem and Solution&lt;/h3&gt;&lt;br /&gt;The problem was that Gallery Remote wasn't able to connect to the server.  It seemed to be having problems with the SSL certificate I had on the web server.  I was using a self-signed SSL certificate, so that was definitely possible.  I checked out the SSL certificate and found that it was expired.  I regenerated a new certificate using the instructions on the &lt;a href=http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html#selfcert&gt;Apache Website&lt;/a&gt;.   The relevant text is shown below.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;How do I create a self-signed SSL Certificate for testing purposes?&lt;br /&gt;    &lt;ol&gt;&lt;br /&gt;    &lt;li&gt;Make sure OpenSSL is installed and in your &lt;code&gt;PATH&lt;/code&gt;.&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Run the following command, to create &lt;code&gt;server.key&lt;/code&gt; and&lt;br /&gt;        &lt;code&gt;server.crt&lt;/code&gt; files:&lt;br /&gt; &lt;code&gt;&lt;strong&gt;$ openssl req -new -x509 -nodes -out server.crt &lt;br /&gt;   -keyout server.key&lt;/strong&gt;&lt;/code&gt;&lt;br /&gt; These can be used as follows in your &lt;code&gt;httpd.conf&lt;/code&gt; &lt;br /&gt; file:&lt;br /&gt;        &lt;pre&gt;             SSLCertificateFile    /path/to/this/server.crt&lt;br /&gt;             SSLCertificateKeyFile /path/to/this/server.key&lt;br /&gt; &lt;/pre&gt;&lt;br /&gt;    &lt;/li&gt;&lt;br /&gt;    &lt;li&gt;It is important that you are aware that this &lt;br /&gt; &lt;code&gt;server.key&lt;/code&gt; does &lt;em&gt;not&lt;/em&gt; have any passphrase.&lt;br /&gt; To add a passphrase to the key, you should run the following &lt;br /&gt; command, and enter &amp;amp; verify the passphrase as requested.&lt;br /&gt; &lt;p&gt;&lt;code&gt;&lt;strong&gt;$ openssl rsa -des3 -in server.key -out &lt;br /&gt; server.key.new&lt;/strong&gt;&lt;/code&gt; &lt;br /&gt;&lt;code&gt;&lt;strong&gt;$ mv server.key.new server.key&lt;/strong&gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt; Please backup the &lt;code&gt;server.key&lt;/code&gt; file, and the passphrase &lt;br /&gt; you entered, in a secure location.&lt;br /&gt;    &lt;/li&gt;&lt;br /&gt;    &lt;/ol&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;After restarting the webserver, I was still having problems with Gallery Remote.  I then found out that Java has it's own repository of trusted SSL certificates.  My SSL certificate was a self-signed certificate, so it definitely wasn't in the default SSL Certificate trust list.  One method of adding the certificate is by going through the Java control panel.  Another method is to add it through the command line.  This was described on the &lt;a href=http://codex.gallery2.org/Gallery_Remote:FAQ#Using_HTTPS&gt;Gallery Remote FAQ page&lt;/a&gt;.  The relevant text is shown below.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Using HTTPS&lt;br /&gt;&lt;p&gt;You can use https:// URLs with Gallery Remote to connect to secured web sites. This functionality is only available on Java 1.4 and later. If the site you are attempting to connect to uses a server certificate that is not certified by a trusted certificate authority, Gallery Remote will be unable to connect. If this happens, you will need to add the site's certificate to the Java registry of trusted certificates:&lt;br /&gt;&lt;/p&gt;&lt;b&gt;For Windows:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Go to the site with Internet Explorer&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Go to menu File&amp;gt;Properties&lt;br /&gt;&lt;/li&gt;&lt;li&gt; In the Properties window, click Certificates&lt;br /&gt;&lt;/li&gt;&lt;li&gt; On the Details tab, click Copy to File...&lt;br /&gt;&lt;/li&gt;&lt;li&gt; In the wizard, select DER-encoded X.509 certificate and save it to a &lt;br /&gt;file&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Open a console window (cmd.exe)&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Type the following command-line:&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;pre&gt;     keytool -import -trustcacerts -file path_to_cer_file &lt;br /&gt;-keystore&amp;nbsp;%JAVA_HOME%/jre/lib/security/cacerts -alias arbitrary_name&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You'll be prompted for the store password, which by default is &lt;br /&gt;&lt;pre&gt;changeit&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;I used that and it worked.  It's interesting to note that Java uses it's own keystore and that there's a default password used if using the command line.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-7612848299016118754?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/7612848299016118754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=7612848299016118754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/7612848299016118754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/7612848299016118754'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/12/java-and-ssl-certificates.html' title='Java and SSL Certificates'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-7031569618512558770</id><published>2008-12-16T14:29:00.020-05:00</published><updated>2008-12-17T23:59:47.616-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSA'/><title type='text'>Allowing CSA Management Center  to access WSUS server</title><content type='html'>The pre-configured CSA 6.0 policy for the CSA Management Center does not allow for connectivity to the WSUS server.  Rule 269 blocks the access as shown below&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TT1j-w_G00Y/SUmHS4ts8FI/AAAAAAAAACc/-4FJOiahPyk/s1600-h/agent-error-message.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 202px;" src="http://3.bp.blogspot.com/_TT1j-w_G00Y/SUmHS4ts8FI/AAAAAAAAACc/-4FJOiahPyk/s320/agent-error-message.jpg" alt="" id="BLOGGER_PHOTO_ID_5280900796600086610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You'll notice that the screenshot is from the events shown on the agent GUI on the management center.  This is because rule 269 does not log by default.  Because of this, the denied packets do not show up in the management center event logs.  In order to view the logs on the management center, you would need to do one of two things:&lt;br /&gt;&lt;br /&gt;Explicitly turn on logging for rule 269&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SUmxdlKUUqI/AAAAAAAAACk/leLZZkjE-AA/s1600-h/log-rule269.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 131px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SUmxdlKUUqI/AAAAAAAAACk/leLZZkjE-AA/s320/log-rule269.jpg" alt="" id="BLOGGER_PHOTO_ID_5280947159818326690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enable log overrides for a particular group&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SUmxri2wfiI/AAAAAAAAACs/V2cQhXsGBjQ/s1600-h/log-override.jpg"&gt;&lt;img style="cursor: pointer; width: 306px; height: 320px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SUmxri2wfiI/AAAAAAAAACs/V2cQhXsGBjQ/s320/log-override.jpg" alt="" id="BLOGGER_PHOTO_ID_5280947399717584418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once the denied rule shows up in the management center event logs, the denied events can be viewed on the management center.  This helps with the troubleshooting process.  &lt;br /&gt;&lt;br /&gt;The problem is that rule 269 blocks all network traffic not explicitly allowed by another rule.  Since rule 269 applies to the "CSA MC Network Security Module", it only affects the management center.  This is why WSUS updates work fine with the pre-configured server and desktop rules.  In those policies, there is no rule explicitly blocking network traffic.  The default action is to allow traffic, so the WSUS update traffic is allowed for desktops and servers.  &lt;br /&gt;&lt;br /&gt;There are a number of ways to fix the problem for the management center.  The easiest method is to use the Wizard in the event log entry for rule 269.  The Wizard provides a method of easily creating an exception rule for the specific traffic that was blocked.  &lt;br /&gt;&lt;br /&gt;The first step is to locate the rule 269 event log entry and click on the Wizard link.  This is shown in the red oval in the diagram below&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SUnSYTOdltI/AAAAAAAAADs/G_XxLl8gvgI/s1600-h/log-wizard.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 26px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SUnSYTOdltI/AAAAAAAAADs/G_XxLl8gvgI/s400/log-wizard.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5280983352988243666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The next step is to click on the "Allow Operation" radio button, provide a justification and click "Finish".  This is shown below.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TT1j-w_G00Y/SUnEUGqz7cI/AAAAAAAAAC8/6c5tA9_P2rg/s1600-h/log-wizard-dialog.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 302px;" src="http://3.bp.blogspot.com/_TT1j-w_G00Y/SUnEUGqz7cI/AAAAAAAAAC8/6c5tA9_P2rg/s320/log-wizard-dialog.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5280967887735221698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After "Finish" is clicked, the necessary variables and rule are created.  The next step is to generate the policy to install the rules.  The diagram below shows the variables and rules that will be generated.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TT1j-w_G00Y/SUnE1MMbyzI/AAAAAAAAADE/2mRDyKSYUNY/s1600-h/log-wizard-rule-generation.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 82px;" src="http://3.bp.blogspot.com/_TT1j-w_G00Y/SUnE1MMbyzI/AAAAAAAAADE/2mRDyKSYUNY/s320/log-wizard-rule-generation.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5280968456154106674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After the rule generation, there should now be an exception rule that allows access to the WSUS server to get Microsoft updates.  This is shown below.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SUnFUxrPR4I/AAAAAAAAADM/uUjJDd6dB7U/s1600-h/exception-result.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 62px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SUnFUxrPR4I/AAAAAAAAADM/uUjJDd6dB7U/s320/exception-result.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5280968998791366530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A closer inspection of the rule shows that it is a granular rule only allowing executable "svchost.exe -k netsvc" to talk to the WSUS server, as a client, on port 80/tcp.  This is shown below.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TT1j-w_G00Y/SUnYYoyyLKI/AAAAAAAAAD8/AMMDser-zPs/s1600-h/exception-rule.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 238px;" src="http://4.bp.blogspot.com/_TT1j-w_G00Y/SUnYYoyyLKI/AAAAAAAAAD8/AMMDser-zPs/s320/exception-rule.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5280989955847498914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To verify that the rule is really working, you can temporarily turn on logging for the exception rule.  This is shown below.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SUnKCNXFtmI/AAAAAAAAADU/D8aIJ-9iRgs/s1600-h/exception-rule-log.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 130px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SUnKCNXFtmI/AAAAAAAAADU/D8aIJ-9iRgs/s320/exception-rule-log.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5280974177363670626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A reboot of the management center should kick off the WSUS update check again.  Once this is completed, something similar to the following should be in the event log&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SUnP-5ouhHI/AAAAAAAAADc/8i6yFrAjzTI/s1600-h/log-exception-success.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 20px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SUnP-5ouhHI/AAAAAAAAADc/8i6yFrAjzTI/s320/log-exception-success.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5280980717599097970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After verifying the success of the exception rule, make sure to turn off logging on the exception rule and any other logging that was turned on for troubleshooting purposes above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-7031569618512558770?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/7031569618512558770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=7031569618512558770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/7031569618512558770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/7031569618512558770'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/12/allowing-csa-management-center-to.html' title='Allowing CSA Management Center  to access WSUS server'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_TT1j-w_G00Y/SUmHS4ts8FI/AAAAAAAAACc/-4FJOiahPyk/s72-c/agent-error-message.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-7804073863830839050</id><published>2008-12-15T16:36:00.011-05:00</published><updated>2008-12-15T17:28:18.776-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSA'/><title type='text'>Cisco CSA 6.0 Upgrade Note</title><content type='html'>When upgrading to CSA 6.0, most of the effort is concentrated on upgrading the management center.  Cisco provides fairly well documented instructions in their&lt;a href="http://www.cisco.com/en/US/docs/security/csa/csa60/install_guide/Installing_CSAMC.html#wp1025642"&gt; installation guide&lt;/a&gt;.  The part they don't talk about enough is the CSA Agent upgrade to 6.0.&lt;br /&gt;&lt;br /&gt;One problem I ran into has to do with upgrading clients running Windows XP SP3.  According to the &lt;a href="http://www.cisco.com/en/US/docs/security/csa/csa52/release_notes/CSA52N.html#wp65968"&gt;CSA 5.2 release notes&lt;/a&gt;, CSA 5.2 only supports Windows XP SP 0, 1, or 2.  Of course, you can surmise that they just forgot to update their release notes with XP SP3 support, since the documentation is dated 4/2/07 and Windows XP SP3 came out on &lt;a href="http://en.wikipedia.org/wiki/Windows_XP"&gt;5/6/08&lt;/a&gt;.  Unfortunately, that is not true.  This can be seen when viewing the "Host Identification" information under "Systems &gt; Hosts &gt; [hostname]".  I've shown an example below.  The "unsupported" information is shown in red.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TT1j-w_G00Y/SUbVnP32q3I/AAAAAAAAACE/6n_tYICVi2U/s1600-h/web-browser-view-host.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_TT1j-w_G00Y/SUbVnP32q3I/AAAAAAAAACE/6n_tYICVi2U/s320/web-browser-view-host.jpg" alt="" id="BLOGGER_PHOTO_ID_5280142483390901106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Despite this screen, the CSA 5.2 Agent works fine after the upgrade to XP SP3.  The big problem comes when the Management Center is upgraded to version 6.0 and you try to do the scheduled software update to upgrade all the agents to 6.0.  This does not work.  The normal process is to&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Access "Systems &gt; Software Updates &gt; Scheduled Software Updates"&lt;/li&gt;&lt;li&gt;Create a new Item that schedules the update for a particular group&lt;/li&gt;&lt;li&gt;The agents check in with the Management Center, download the update, and install&lt;/li&gt;&lt;/ol&gt;The problem is that the agents never download the update.  The "System &gt; Hosts &gt; [hostname]" page always shows that the software version as "Agent is running the latest software" instead of "Update Available".  Both of these screenshots are shown below.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TT1j-w_G00Y/SUbYWKlPsiI/AAAAAAAAACM/fVO6JhWrqKU/s1600-h/host-status.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 111px;" src="http://4.bp.blogspot.com/_TT1j-w_G00Y/SUbYWKlPsiI/AAAAAAAAACM/fVO6JhWrqKU/s320/host-status.jpg" alt="" id="BLOGGER_PHOTO_ID_5280145488447779362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TT1j-w_G00Y/SUbYcrpt11I/AAAAAAAAACU/5SeNg9TnYAk/s1600-h/host-status-good.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 119px;" src="http://4.bp.blogspot.com/_TT1j-w_G00Y/SUbYcrpt11I/AAAAAAAAACU/5SeNg9TnYAk/s320/host-status-good.jpg" alt="" id="BLOGGER_PHOTO_ID_5280145600404117330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The only workaround is to create a new CSA 6.0 agent kit and push the new agent kit to all the users via your normal application installation mechanism (Altiris, SMS,...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-7804073863830839050?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/7804073863830839050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=7804073863830839050' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/7804073863830839050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/7804073863830839050'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/12/cisco-csa-60-upgrade-note.html' title='Cisco CSA 6.0 Upgrade Note'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_TT1j-w_G00Y/SUbVnP32q3I/AAAAAAAAACE/6n_tYICVi2U/s72-c/web-browser-view-host.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-6429812463727728343</id><published>2008-12-07T21:40:00.007-05:00</published><updated>2008-12-07T22:28:44.343-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>Cisco NAC Manager HA log files</title><content type='html'>&lt;a href="http://www.cisco.com/en/US/docs/security/nac/appliance/configuration_guide/45/cam/m_logs.html#wp1082695"&gt;The NAC Manager documentation&lt;/a&gt; provides a number of logs that can be viewed to troubleshoot various issues.  The only problem is that when a problem occurs it would be really nice to have a reference showing what good log output looks like.  That's what I'd like to share here.  Hopefully this will help someone troubleshooting an issue.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The log files below show the log files on a standby NAM when it becomes active&lt;/span&gt;&lt;br /&gt;/perfigo/control/tomcat/logs/localhost_log.&lt;yyyy-mm-dd&gt;.txt&lt;/yyyy-mm-dd&gt;&lt;/span&gt;&lt;br /&gt;2008-11-19 14:22:58 StandardHost[localhost]: Removing web application at context path /admin&lt;br /&gt;2008-11-19 14:22:58 StandardHost[localhost]: Removing web application at context path&lt;br /&gt;2008-11-19 14:23:03 WebappLoader[/admin]: Deploying class repositories to work directory /perfigo/control/tomcat/work/Standalone/localhost/admin&lt;br /&gt;2008-11-19 14:23:03 WebappLoader[/admin]: Deploy JAR /WEB-INF/lib/jsf_hack_tld.jar to /perfigo/control/tomcat/webapps/admin/WEB-INF/lib/jsf_hack_tld.jar&lt;br /&gt;2008-11-19 14:23:04 ContextConfig[/admin]: Configured an authenticator for method NONE&lt;br /&gt;2008-11-19 14:23:04 PersistentManager[/admin]: Seeding random number generator class java.security.SecureRandom&lt;br /&gt;2008-11-19 14:23:04 PersistentManager[/admin]: Seeding of random number generator has been completed&lt;br /&gt;2008-11-19 14:23:04 PersistentManager[/admin]: No Store configured, persistence disabled&lt;br /&gt;2008-11-19 14:23:22 StandardWrapper[/admin:default]: Loading container servlet default&lt;br /&gt;2008-11-19 14:23:22 StandardWrapper[/admin:invoker]: Loading container servlet invoker&lt;br /&gt;2008-11-19 14:23:22 HostConfig[localhost]: Deploying web application directory ROOT&lt;br /&gt;2008-11-19 14:23:22 StandardHost[localhost]: Installing web application at context path  from URL file:/perfigo/control/tomcat/normal-webapps/ROOT&lt;br /&gt;2008-11-19 14:23:22 WebappLoader[]: Deploying class repositories to work directory /perfigo/control/tomcat/work/Standalone/localhost/_&lt;br /&gt;2008-11-19 14:23:22 StandardManager[]: Seeding random number generator class java.security.SecureRandom&lt;br /&gt;2008-11-19 14:23:22 StandardManager[]: Seeding of random number generator has been completed&lt;br /&gt;2008-11-19 14:23:23 StandardWrapper[:default]: Loading container servlet default&lt;br /&gt;2008-11-19 14:23:23 StandardWrapper[:invoker]: Loading container servlet invoker&lt;br /&gt;2008-11-19 14:23:23 HostConfig[localhost]: Deploying web application directory upload&lt;br /&gt;2008-11-19 14:23:23 StandardHost[localhost]: Installing web application at context path /upload from URL file:/perfigo/control/tomcat/normal-webapps/upload&lt;br /&gt;2008-11-19 14:23:23 WebappLoader[/upload]: Deploying class repositories to work directory /perfigo/control/tomcat/work/Standalone/localhost/upload&lt;br /&gt;2008-11-19 14:23:23 StandardManager[/upload]: Seeding random number generator class java.security.SecureRandom&lt;br /&gt;2008-11-19 14:23:23 StandardManager[/upload]: Seeding of random number generator has been completed&lt;br /&gt;2008-11-19 14:23:23 StandardWrapper[/upload:default]: Loading container servlet default&lt;br /&gt;2008-11-19 14:23:23 StandardWrapper[/upload:invoker]: Loading container servlet invoker&lt;br /&gt;2008-11-19 14:23:23 HostConfig[localhost]: Deploying web application directory wlan&lt;br /&gt;2008-11-19 14:23:23 StandardHost[localhost]: Installing web application at context path /wlan from URL file:/perfigo/control/tomcat/normal-webapps/wlan&lt;br /&gt;2008-11-19 14:23:23 WebappLoader[/wlan]: Deploying class repositories to work directory /perfigo/control/tomcat/work/Standalone/localhost/wlan&lt;br /&gt;2008-11-19 14:23:23 ContextConfig[/wlan]: Configured an authenticator for method NONE&lt;br /&gt;2008-11-19 14:23:23 StandardManager[/wlan]: Seeding random number generator class java.security.SecureRandom&lt;br /&gt;2008-11-19 14:23:23 StandardManager[/wlan]: Seeding of random number generator has been completed&lt;br /&gt;2008-11-19 14:23:23 StandardWrapper[/wlan:default]: Loading container servlet default&lt;br /&gt;2008-11-19 14:23:23 StandardWrapper[/wlan:invoker]: Loading container servlet invoker&lt;br /&gt;2008-11-19 14:23:23 HostConfig[localhost]: Deploying web application directory packages&lt;br /&gt;2008-11-19 14:23:23 StandardHost[localhost]: Installing web application at context path /packages from URL file:/perfigo/control/tomcat/normal-webapps/packages&lt;br /&gt;2008-11-19 14:23:23 WebappLoader[/packages]: Deploying class repositories to work directory /perfigo/control/tomcat/work/Standalone/localhost/packages&lt;br /&gt;2008-11-19 14:23:23 StandardManager[/packages]: Seeding random number generator class java.security.SecureRandom&lt;br /&gt;2008-11-19 14:23:23 StandardManager[/packages]: Seeding of random number generator has been completed&lt;br /&gt;2008-11-19 14:23:24 StandardWrapper[/packages:default]: Loading container servlet default&lt;br /&gt;2008-11-19 14:23:24 StandardWrapper[/packages:invoker]: Loading container servlet invoker&lt;br /&gt;2008-11-19 14:23:24 HostConfig[localhost]: Deploying web application directory download&lt;br /&gt;2008-11-19 14:23:24 StandardHost[localhost]: Installing web application at context path /download from URL file:/perfigo/control/tomcat/normal-webapps/download&lt;br /&gt;2008-11-19 14:23:24 WebappLoader[/download]: Deploying class repositories to work directory /perfigo/control/tomcat/work/Standalone/localhost/download&lt;br /&gt;2008-11-19 14:23:24 StandardManager[/download]: Seeding random number generator class java.security.SecureRandom&lt;br /&gt;2008-11-19 14:23:24 StandardManager[/download]: Seeding of random number generator has been completed&lt;br /&gt;2008-11-19 14:23:24 StandardWrapper[/download:default]: Loading container servlet default&lt;br /&gt;2008-11-19 14:23:24 StandardWrapper[/download:invoker]: Loading container servlet invoker&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/var/log/ha-log&lt;/span&gt;&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: Received shutdown notice from 'camanager1'.&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: Resources being acquired from camanager1.&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: acquire all HA resources (standby).&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: No local resources [/usr/lib64/heartbeat/ResourceManager listkeys camanager2] to acquire.&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: Acquiring resource group: camanager1 x.x.x.x controlsmart&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: Running /etc/ha.d/resource.d/IPaddr x.x.x.x start&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: /sbin/ifconfig eth0:0 x.x.x.x netmask 255.255.255.0   broadcast 172.31.31.255&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: Sending Gratuitous Arp for x.x.x.x on eth0:0 [eth0]&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 /usr/lib64/heartbeat/send_arp -i 1010 -r 5 -p /var/lib/heartbeat/rsctmp/send_arp/send_arp-x.x.x.x eth0 x.x.x.x auto x.x.x.x ffffffffffff&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: Running /perfigo/control/bin/controlsmart  start&lt;br /&gt;heartbeat: 2008/11/19_14:23:02 info: all HA resource acquisition completed (standby).&lt;br /&gt;heartbeat: 2008/11/19_14:23:02 info: Standby resource acquisition done [all].&lt;br /&gt;heartbeat: 2008/11/19_14:23:02 info: Running /etc/ha.d/rc.d/status status&lt;br /&gt;heartbeat: 2008/11/19_14:23:04 info: Taking over resource group x.x.x.x&lt;br /&gt;heartbeat: 2008/11/19_14:23:04 info: Acquiring resource group: camanager1 x.x.x.x controlsmart&lt;br /&gt;heartbeat: 2008/11/19_14:23:04 info: Running /perfigo/control/bin/controlsmart  start&lt;br /&gt;heartbeat: 2008/11/19_14:23:04 info: /usr/lib64/heartbeat/mach_down: nice_failback: foreign resources acquired&lt;br /&gt;heartbeat: 2008/11/19_14:23:04 info: mach_down takeover complete.&lt;br /&gt;heartbeat: 2008/11/19_14:23:04 info: mach_down takeover complete for node camanager1.&lt;br /&gt;heartbeat: 2008/11/19_14:23:14 WARN: node camanager1: is dead&lt;br /&gt;heartbeat: 2008/11/19_14:23:14 info: Dead node camanager1 gave up resources.&lt;br /&gt;heartbeat: 2008/11/19_14:23:14 info: Link camanager1:eth1 dead.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;These logs show the story when a NAM starts as the active NAM and then   "service perfigo stop" is entered to turn off the NAC service&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/perfigo/control/tomcat/logs/localhost_log.&lt;yyyy-mm-dd&gt;.txt&lt;/yyyy-mm-dd&gt;&lt;/span&gt;&lt;br /&gt;2008-11-19 14:22:55 StandardHost[localhost]: Removing web application at context path /admin&lt;br /&gt;2008-11-19 14:22:55 StandardHost[localhost]: Removing web application at context path /upload&lt;br /&gt;2008-11-19 14:22:55 StandardHost[localhost]: Removing web application at context path /download&lt;br /&gt;2008-11-19 14:22:55 StandardHost[localhost]: Removing web application at context path /packages&lt;br /&gt;2008-11-19 14:22:55 StandardHost[localhost]: Removing web application at context path /wlan&lt;br /&gt;2008-11-19 14:22:55 StandardHost[localhost]: Removing web application at context path&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/var/log/ha-debug &lt;/span&gt;&lt;br /&gt;heartbeat: 2008/11/19_14:22:54 info: Heartbeat shutdown in progress. (4516)&lt;br /&gt;heartbeat: 2008/11/19_14:22:54 info: Giving up all HA resources.&lt;br /&gt;heartbeat: 2008/11/19_14:22:54 info: Releasing resource group: camanager1 x.x.x.x controlsmart&lt;br /&gt;heartbeat: 2008/11/19_14:22:54 info: Running /perfigo/control/bin/controlsmart  stop&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: Running /etc/ha.d/resource.d/IPaddr x.x.x.x stop&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: /sbin/route -n del -host x.x.x.x&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: /sbin/ifconfig eth0:0 down&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: IP Address x.x.x.x released&lt;br /&gt;heartbeat: 2008/11/19_14:22:58 info: All HA resources relinquished.&lt;br /&gt;heartbeat: 2008/11/19_14:22:59 info: killing HBREAD process 4521 with signal 15&lt;br /&gt;heartbeat: 2008/11/19_14:22:59 info: killing HBFIFO process 4519 with signal 15&lt;br /&gt;heartbeat: 2008/11/19_14:22:59 info: killing HBWRITE process 4520 with signal 15&lt;br /&gt;heartbeat: 2008/11/19_14:22:59 info: Core process 4519 exited. 3 remaining&lt;br /&gt;heartbeat: 2008/11/19_14:22:59 info: Core process 4520 exited. 2 remaining&lt;br /&gt;heartbeat: 2008/11/19_14:22:59 info: Core process 4521 exited. 1 remaining&lt;br /&gt;heartbeat: 2008/11/19_14:22:59 info: Heartbeat shutdown complete.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;This show the status after "service perfigo start" is entered with another NAM active&lt;/span&gt;&lt;br /&gt;[root@camanager1 logs]# service perfigo start&lt;br /&gt;Starting High-Availability services:&lt;br /&gt;[  OK  ]&lt;br /&gt;Please wait while bringing up service IP.&lt;br /&gt;Heartbeat service is running.&lt;br /&gt;Service IP is up on the peer node.&lt;br /&gt;Stopping postgresql service: [  OK  ]&lt;br /&gt;Starting postgresql service: [  OK  ]&lt;br /&gt;DROP DATABASE&lt;br /&gt;CREATE DATABASE&lt;br /&gt;DROP DATABASE&lt;br /&gt;CREATE DATABASE&lt;br /&gt;Database synced&lt;br /&gt;[root@camanager1 logs]#&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/perfigo/control/tomcat/logs/localhost_log.&lt;yyyy-mm-dd&gt;.txt&lt;/yyyy-mm-dd&gt;&lt;/span&gt;&lt;br /&gt;2008-11-19 14:30:14 WebappLoader[/admin]: Deploying class repositories to work directory /perfigo/control/tomcat/work/Standalone/localhost/admin&lt;br /&gt;2008-11-19 14:30:14 WebappLoader[/admin]: Deploy JAR /WEB-INF/lib/jsf_hack_tld.jar to /perfigo/control/tomcat/webapps/admin/WEB-INF/lib/jsf_hack_tld.jar&lt;br /&gt;2008-11-19 14:30:14 ContextConfig[/admin]: Configured an authenticator for method NONE&lt;br /&gt;2008-11-19 14:30:14 PersistentManager[/admin]: Seeding random number generator class java.security.SecureRandom&lt;br /&gt;2008-11-19 14:30:14 PersistentManager[/admin]: Seeding of random number generator has been completed&lt;br /&gt;2008-11-19 14:30:14 PersistentManager[/admin]: No Store configured, persistence disabled&lt;br /&gt;2008-11-19 14:30:15 StandardWrapper[/admin:default]: Loading container servlet default&lt;br /&gt;2008-11-19 14:30:15 StandardWrapper[/admin:invoker]: Loading container servlet invoker&lt;br /&gt;2008-11-19 14:30:15 HostConfig[localhost]: Deploying web application directory ROOT&lt;br /&gt;2008-11-19 14:30:15 StandardHost[localhost]: Installing web application at context path  from URL file:/perfigo/control/tomcat/admin-webapps/ROOT&lt;br /&gt;2008-11-19 14:30:15 WebappLoader[]: Deploying class repositories to work directory /perfigo/control/tomcat/work/Standalone/localhost/_&lt;br /&gt;2008-11-19 14:30:15 StandardManager[]: Seeding random number generator class java.security.SecureRandom&lt;br /&gt;2008-11-19 14:30:15 StandardManager[]: Seeding of random number generator has been completed&lt;br /&gt;2008-11-19 14:30:16 StandardWrapper[:default]: Loading container servlet default&lt;br /&gt;2008-11-19 14:30:16 StandardWrapper[:invoker]: Loading container servlet invoker&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/var/log/ha-log&lt;/span&gt;&lt;br /&gt;heartbeat: 2008/11/19_14:27:25 info: **************************&lt;br /&gt;heartbeat: 2008/11/19_14:27:25 info: Configuration validated. Starting heartbeat 1.2.5&lt;br /&gt;heartbeat: 2008/11/19_14:27:25 info: heartbeat: version 1.2.5&lt;br /&gt;heartbeat: 2008/11/19_14:27:26 info: Heartbeat generation: 44&lt;br /&gt;heartbeat: 2008/11/19_14:27:26 info: ucast: write socket priority set to IPTOS_LOWDELAY on eth1&lt;br /&gt;heartbeat: 2008/11/19_14:27:26 info: ucast: trying to bind: eth1&lt;br /&gt;&lt;br /&gt;heartbeat: 2008/11/19_14:27:26 info: ucast: bound send socket to device: eth1&lt;br /&gt;heartbeat: 2008/11/19_14:27:26 info: ucast: try binding receive socket to device: eth1&lt;br /&gt;heartbeat: 2008/11/19_14:27:26 info: ucast: could bind receive socket to device: eth1:fe00a8c0.&lt;br /&gt;heartbeat: 2008/11/19_14:27:26 info: ucast: started on port 694 interface eth1 to 192.168.0.253&lt;br /&gt;heartbeat: 2008/11/19_14:27:26 notice: Using watchdog device: /dev/watchdog&lt;br /&gt;heartbeat: 2008/11/19_14:27:26 info: pid 19899 locked in memory.&lt;br /&gt;heartbeat: 2008/11/19_14:27:26 info: Local status now set to: 'up'&lt;br /&gt;heartbeat: 2008/11/19_14:27:27 info: pid 19902 locked in memory.&lt;br /&gt;heartbeat: 2008/11/19_14:27:27 info: pid 19903 locked in memory.&lt;br /&gt;heartbeat: 2008/11/19_14:27:27 info: pid 19904 locked in memory.&lt;br /&gt;heartbeat: 2008/11/19_14:27:27 info: Link camanager2:eth1 up.&lt;br /&gt;heartbeat: 2008/11/19_14:27:27 info: Status update for node camanager2: status active&lt;br /&gt;heartbeat: 2008/11/19_14:27:27 info: Local status now set to: 'active'&lt;br /&gt;heartbeat: 2008/11/19_14:27:27 info: remote resource transition completed.&lt;br /&gt;heartbeat: 2008/11/19_14:27:27 info: remote resource transition completed.&lt;br /&gt;heartbeat: 2008/11/19_14:27:27 info: Local Resource acquisition completed. (none)&lt;br /&gt;heartbeat: 2008/11/19_14:27:27 info: Initial resource acquisition complete (T_RESOURCES(them))&lt;br /&gt;heartbeat: 2008/11/19_14:27:27 info: Running /etc/ha.d/rc.d/status status&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-6429812463727728343?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/6429812463727728343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=6429812463727728343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/6429812463727728343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/6429812463727728343'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/12/nac-manager-documentation-provides.html' title='Cisco NAC Manager HA log files'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-3166897396137398986</id><published>2008-12-04T09:42:00.009-05:00</published><updated>2008-12-05T07:46:39.976-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>Essential Cisco NAC deployment tools</title><content type='html'>When deploying NAC there are a number of very useful tools that can help with implementing and troubleshooting.  Here's a list of tools I've found useful&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=http://www.wireshark.org&gt;Wireshark&lt;/a&gt; - This is an open source network protocol analyzer that allows you to see exactly what traffic is going across the wire.  There's a "Follow TCP Stream" feature that allows you to see the entire stream of traffic for a session.  One place this can be used is when looking for certificate CRL information being sent from a client to a CA.  You'll be able to see the exact URL that is being used in an easy to read manner.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=http://www.ldapbrowser.com&gt;LDAP Browser&lt;/a&gt; - This tool allows you to browse the LDAP tree to help determine what entries you should match on.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=http://www.microsoft.com/downloads/details.aspx?FamilyID=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&amp;displaylang=en&gt;Kerbtray&lt;/a&gt; - This is a one tool in a set of Microsoft resource kit tools that is meant for Windows 2003, but also works for Windows XP.  This tool provides information about Kerberos authentication.  This is invaluable for troubleshooting AD SSO issues.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=http://www.camstudio.org&gt;Camstudio&lt;/a&gt; - This is an open source video creation tool that you can use to create short video tutorials showing how NAC works.  It can create an AVI or Flash file of your screen while you're demonstrating different NAC features.  This can be a great tool for providing a visual representation of the NAC login process during end user training&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=http://www.irfanview.com&gt;Irfanview&lt;/a&gt; - This is a great tool for editing screenshots&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-3166897396137398986?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/3166897396137398986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=3166897396137398986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/3166897396137398986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/3166897396137398986'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/12/essential-nac-deployment-tools.html' title='Essential Cisco NAC deployment tools'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-1669184115725863103</id><published>2008-11-10T22:46:00.004-05:00</published><updated>2009-02-16T10:57:53.278-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><category scheme='http://www.blogger.com/atom/ns#' term='WSUS'/><title type='text'>Solution for Slow Cisco NAC WSUS Requirement Check</title><content type='html'>Slow NAC posture validation can be one of the biggest stumbling blocks for a successful NAC deployment.  One of the biggest reasons for slow posture validation is the time it takes for the WSUS Requirement check.  I've come up with a list of troubleshooting steps to try to reduce the time it takes for the WSUS Requirement checks&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Troubleshooting Option 1:  Use the Latest version of Windows Update Agent &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The latest version of Windows Update Agent includes new features that speed up the WSUS check process.  First, make sure that &lt;a href="http://support.microsoft.com/kb/927891"&gt;Windows Update Agent 3.0 release&lt;/a&gt; is being used on the client. Also, the &lt;a href="http://support.microsoft.com/kb/927891"&gt;KB927891&lt;/a&gt; patch must be installed if you are running XP SP2.  You can verify the version by looking at the version of the c:\WINDOWS\System32\wuaueng.dll file.  The version should be 7.2.6001.784 as shown in the picture&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SReprFgEFFI/AAAAAAAAABk/ijKwNyfHG0E/s1600-h/wua-ver7.2.jpg"&gt;&lt;img style="cursor: pointer; width: 256px; height: 320px;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SReprFgEFFI/AAAAAAAAABk/ijKwNyfHG0E/s320/wua-ver7.2.jpg" alt="" id="BLOGGER_PHOTO_ID_5266864846909215826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Based on the links listed below, this Windows Update Agent release is backwards compatible with WSUS release 2.0.&lt;br /&gt;&lt;br /&gt;Because of the major changes that have been made with the new Windows Update Agent, this troubleshooting step should be done before any other troubleshooting is done. In addition to the faster checks, this latest version includes a number of fixes that controls the CPU utilization.  Below are two links explaining the changes&lt;br /&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;http://blogs.technet.com/wsus/archive/2007/04/28/update-on.aspx&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;http://blogs.technet.com/wsus/archive/2007/05/15/srvhost-msi-issue-follow-up.aspx&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;The first link actually starts off with the following statement&lt;br /&gt;&lt;span&gt;&lt;span style="color: rgb(51, 0, 102);font-family:verdana,geneva;" &gt;&lt;span style="color: rgb(31, 73, 125);font-family:'Calibri','sans-serif';font-size:11;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(51, 0, 102);font-family:verdana,geneva;" &gt;&lt;span style="color: rgb(31, 73, 125);font-family:'Calibri','sans-serif';" &gt;In addition to the next week’s  WSUS 3.0 release, we are making the new client portion available via the following plan to our customers who continue to experience performance issues like UI hang and &lt;span style="font-weight: bold;"&gt;long scan times&lt;/span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;In one instance, I saw a 90 second scan time go down to 5 seconds.  I used the PT (Protocol Tracker) lines of the c:\windows\WindowsUpdate.log file to verify this.  Below are screenshots with long time with Windows Update Agent 2.0 followed by the short time after the Windows Update Agent 3.0 upgrade.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This first screen shows the version, start time and end time in bold.  You'll notice that updates take 98 seconds to complete.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_TT1j-w_G00Y/SRidOi2DjbI/AAAAAAAAABs/VeowMitR0D8/s1600-h/wua-PT-bad.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 145px;" src="http://4.bp.blogspot.com/_TT1j-w_G00Y/SRidOi2DjbI/AAAAAAAAABs/VeowMitR0D8/s320/wua-PT-bad.jpg" alt="" id="BLOGGER_PHOTO_ID_5267132637407055282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This second screen also shows the version, start time and end time in bold.  You'll notice that updates takes 2 seconds to complete&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_TT1j-w_G00Y/SRid43LtPxI/AAAAAAAAAB0/pTRnBR8otd8/s1600-h/wua-PT-good.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 146px;" src="http://3.bp.blogspot.com/_TT1j-w_G00Y/SRid43LtPxI/AAAAAAAAAB0/pTRnBR8otd8/s320/wua-PT-good.jpg" alt="" id="BLOGGER_PHOTO_ID_5267133364421082898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Troubleshooting Option 2: Defragment datastore.edb&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;The c:\windows\SoftwareDistribution\DataStore\DataStore.edb file is a database file that stores the local information about Microsoft Updates.  When the Windows Update Agent downloads the WSUS data store, it compares it with the local data store in the DataStore.edb database.  I found the instruction for defragementing the database on a &lt;a href="http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.windowsupdate&amp;amp;tid=507fdfc2-c65b-4d88-bdee-9dc79a8e975f&amp;amp;cat=en_US_2231886c-4c59-45b0-92e0-8881ddf5f40b&amp;amp;lang=en&amp;amp;cr=US&amp;amp;sloc=en-us&amp;amp;m=1&amp;amp;p=1"&gt;Microsoft Forum Link&lt;/a&gt; I've posted the relevant information below.&lt;br /&gt;&lt;blockquote&gt;The detection scan hits DataStore.edb causing a buffer overflow.&lt;br /&gt;One can run esentutl from a Command Prompt to defragment DataStore.edb&lt;br /&gt;instead of deleting it in hopes that will resolve the issue -&lt;br /&gt;&lt;br /&gt;esentutl /d %windir%\SoftwareDistribution\Datastore\datastore.edb&lt;br /&gt;&lt;br /&gt;If that doesn't resolve the issue, attempt to Recover the file -&lt;br /&gt;&lt;br /&gt;esentutl /r %windir%\SoftwareDistribution\Datastore\datastore.edb&lt;br /&gt;&lt;br /&gt;[This command performs recovery, bringing all databases to a&lt;br /&gt;consistent state]&lt;br /&gt;&lt;br /&gt;The next to last resort is to attempt to Repair it -&lt;br /&gt;&lt;br /&gt;esentutl /p %windir%\SoftwareDistribution\Datastore\datastore.edb&lt;br /&gt;&lt;br /&gt;NOTE: MS recommends that if the system is imaged regularly that a new&lt;br /&gt;system image be done after running ANY of the above operations&lt;br /&gt;&lt;br /&gt;* On XP Home Edition, one must stop the Automatic Updates service PRIOR&lt;br /&gt;to running the above. This wasn't the case when doing so on XP Pro *&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Troubleshooting Option 3:  Remove Corrupted Database&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;This troubleshooting step removes the database directory entirely.  The downside of this solution is that you will lose any history of updates.  I found this procedure on the following website:  http://myitkb.net/category/windows-updates.  I've posted the relevant information below&lt;br /&gt;&lt;ol&gt;&lt;li&gt;type in net stop wuauserv and then hit &lt;enter&gt;&lt;br /&gt;&lt;/enter&gt;&lt;/li&gt;&lt;li&gt;then enter cd /d %windir%\SoftwareDistribution hit &lt;enter&gt;&lt;br /&gt;&lt;/enter&gt;&lt;/li&gt;&lt;li&gt;rd /s DataStore &lt;enter&gt;&lt;br /&gt;&lt;/enter&gt;&lt;/li&gt;&lt;li&gt;click Yes at prompt&lt;br /&gt;&lt;/li&gt;&lt;li&gt;and then type in net start wuauserv and hit &lt;enter&gt;&lt;br /&gt;&lt;/enter&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;**Note:  On one machine I was testing with, I corrupted something that was required for Windows Update Agent to start.  I used the commands from the &lt;a href="http://www.eggheadcafe.com/software/aspnet/32178096/fatal-client-call-record.aspx"&gt; on a web forum&lt;/a&gt; to fix the problem:&lt;br /&gt;&lt;blockquote&gt;sc sdset bits "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)"&lt;br /&gt;&lt;br /&gt;sc sdset wuauserv "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)"&lt;/blockquote&gt;Use at your own risk&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-1669184115725863103?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/1669184115725863103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=1669184115725863103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/1669184115725863103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/1669184115725863103'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/11/solution-for-slow-cisco-nac-wsus.html' title='Solution for Slow Cisco NAC WSUS Requirement Check'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_TT1j-w_G00Y/SReprFgEFFI/AAAAAAAAABk/ijKwNyfHG0E/s72-c/wua-ver7.2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-817900618106565093</id><published>2008-11-07T09:29:00.005-05:00</published><updated>2008-11-12T14:26:24.501-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><category scheme='http://www.blogger.com/atom/ns#' term='WSUS'/><title type='text'>Microsoft WSUS Guide for Cisco NAC deployments</title><content type='html'>Microsoft Windows Server Update Services (WSUS) provides a method for managing Microsoft updates for company computers.  Within a company, there are one or more WSUS servers that gets updates from Microsoft.  Computers, within the company network, check in with this WSUS server to get their Microsoft updates.  There are a number of benefits for using a WSUS server.  Some of the benefits are&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Control when updates are installed&lt;/b&gt; - This allows companies to test updates before deploying them to the user community.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Lower internet bandwidth usage&lt;/b&gt; - Keep the bandwidth, used for downloading Microsoft updates, within the internal network.  This would keep the internet connection from becoming overloaded by users downloading updates directly from Microsoft&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;From a security perspective, keeping current with the latest Microsoft updates is very important.  Computers are vulnerable to attacks if they do not have they do not have the latest security updates installed.  Cisco NAC can make sure computers have approved Microsoft updates by using a WSUS Requirement.  This requirement uses the WSUS API, on the the end computer, to poll the WSUS server for an index of all approved Microsoft updates.  The end computer then uses the local Windows Update Agent to compare the local index, called a data store, with the index received from the WSUS server.  Any differences would cause the Cisco NAC remediation dialog box to appear and guide the end user through downloading and installing the Microsoft updates.&lt;br /&gt;&lt;br /&gt;In theory this should be a seamless process that occurs quickly.  In practice, there are a number of problems that can occur.  Some common problems are problems connecting to the WSUS server and errors when connecting to the WSUS server.  Below are some common tools to use for troubleshooting WSUS problems.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Common Troubleshooting Tools&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;wuauclt.exe /detectnow&lt;/b&gt; - This is a great command to initiate detection of the WSUS server manually.  Without this command you need to wait for the Automatic Update process to kick off.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;c:\WINDOWS\WindowsUpdate.log&lt;/b&gt; - This file provides invaluable logs regarding the status of the Windows update progress.&lt;/li&gt;&lt;li&gt;&lt;b&gt;esentutl.exe&lt;/b&gt; - This command is a database utility that can recover and repair the database used, on the end computer.  The database is stored in c:\WINDOWS\SoftwareDistribution\DataStore\DataStore.edb&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://technet.microsoft.com/en-us/wsus/bb466192.aspx"&gt;WSUS Client Diagnostics Tool&lt;/a&gt;&lt;/b&gt; - This tool checks the basic settings required for WSUS to work. The link above provides access to the Microsoft website providing more information about the tool along with a link to download&lt;/li&gt;&lt;/ol&gt;Here's an example on how the first two tools would be used.&lt;br /&gt;&lt;br /&gt;A user is having problems getting Microsoft updates from the WSUS server.  You go to the users computer and check out the c:\WINDOWS\windowsupdate.log file.  In the file, you notice the following error message&lt;br /&gt;&lt;blockquote&gt;WARNING: WU client failed Searching for update with error 0x8024400e&lt;/blockquote&gt;You run "wuauclt.exe /detectnow" and check the windowsupdate.log file again to make sure the problem is still occurring.  After verifying that it still occurring, you do a Google search on "error 0x8024400e" and find a link to a website describing a similar problem and offering a &lt;a href="http://www.wsus.info/forums/index.php?showtopic=11876"&gt;solution&lt;/a&gt;.  You contact the WSUS team and have them implement the change to fix the problem.&lt;br /&gt;&lt;br /&gt;While Google searches are excellent ways of obtaining information about WSUS, I've found a number of links to start your troubleshooting efforts with.  Below are the best links I've found to start your research&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/wsus"&gt;Main Microsoft WSUS Site including Configuration Guides&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/oas/default.aspx?gprid=6527"&gt;Free Microsoft Support&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wsuswiki.com/"&gt;WSUS Wiki Site&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/902093"&gt;How to read the WindowsUpdate.log File&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.technet.com/wsus"&gt;Microsoft Blog about WSUS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wsus.info/forums/"&gt;WSUS Forum&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eggheadcafe.com/conversationlist.aspx?groupid=1397"&gt;WindowsUpdate Posts on Eggheadcafe.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/communities/newsgroups/list/en-us/default.aspx?dg=microsoft.public.windows.server.update_services"&gt;Microsoft WSUS Discussion Group&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-817900618106565093?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/817900618106565093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=817900618106565093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/817900618106565093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/817900618106565093'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/10/microsoft-wsus-guide-for-cisco-nac.html' title='Microsoft WSUS Guide for Cisco NAC deployments'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-6244367282858337082</id><published>2008-10-19T18:53:00.006-04:00</published><updated>2008-11-07T09:31:24.429-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><title type='text'>Basic Cisco wireless setup with Cisco Supportwiki</title><content type='html'>Cisco recently introduced wiki pages for their support.  I've started using it as one more resource for research and general information.  One link that I recently used was to &lt;a href="http://supportwiki.cisco.com/ViewWiki/index.php/How_to_configure_WPA_without_an_authentication_server"&gt;setup basic wireless security for Cisco Access Point&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The instructions were fairly simple, but they got the job done.  The instructions were as follows&lt;br /&gt;&lt;blockquote&gt;To configure Wi-Fi Protected Access (WPA) on a Cisco Access Point (AP) without an authentication server, configure the AP with a pre-share key (WPA-PSK).&lt;br /&gt;&lt;br /&gt;To configure the WPA-PSK, perform these steps using the GUI interface:&lt;br /&gt;&lt;br /&gt;1. In the Encryption Manager window, select cipher TKIP and click Apply.&lt;br /&gt;2. In the Service Set Identifier (SSID) Manager window, perform these steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;         Create an SSID.&lt;/li&gt;&lt;li&gt;         Select Open Authentication.&lt;/li&gt;&lt;li&gt;         Set the Key Management to Mandatory.&lt;/li&gt;&lt;li&gt;         Check the WPA box.&lt;/li&gt;&lt;li&gt;         Enter a WPA-PSK and click Apply. &lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt;To check out the Cisco Support Wiki Site, go to http://supportwiki.cisco.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-6244367282858337082?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/6244367282858337082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=6244367282858337082' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/6244367282858337082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/6244367282858337082'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/10/basic-cisco-wireless-setup.html' title='Basic Cisco wireless setup with Cisco Supportwiki'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-1338380400182662342</id><published>2008-10-19T14:05:00.005-04:00</published><updated>2008-10-19T14:18:35.562-04:00</updated><title type='text'>Fun with boolean expressions in Cisco NAC Appliance Rules</title><content type='html'>This is an example of how to handle a tricky boolean expression with NAC Appliance rules.  I'll lay out a scenario and focus on the rule creation.  I'll cover the other aspects in future blog posts.&lt;br /&gt;&lt;br /&gt;Let's set the stage.  Say you're setting up NAC for remote access VPN users using L3 in-band virtual gateway.  The VPN is handled by an ASA and authentication is handled by VPN SSO.  There are three classes of users.  The three classes of users each have a different VPN profile for connecting to the VPN.  These profiles are provided with separate VPN pools on the ASA.  This make separating the users into roles fairly straightforward as described below.&lt;br /&gt;&lt;br /&gt;With VPN SSO, RADIUS accounting packets are sent from the ASA to the NAC Server (NAS).  One RADIUS accounting attribute is called "Framed_IP".  This attribute contains the VPN pool IP address of the user.  This information is used to map the user into a particular role.  In this scenario, the computers used by the remote access users also have registry keys that define which user class they are in.&lt;br /&gt;&lt;br /&gt;Now comes the fun part.  Most of the users have the correct VPN profile for their user class, but there are some users that have an incorrect VPN profile.  We'll call the user classes CLASSA, CLASSB, and CLASSC.  How do you block the users, using the incorrect profile, from the network and also provide them with the correct VPN profile?&lt;br /&gt;&lt;br /&gt;From a 10,000 foot view, this is an easy task of completing the following steps&lt;br /&gt;1. Define the unique registry keys for CLASSA, CLASSB, and CLASSC&lt;br /&gt;2. Create checks for each registry key and value name&lt;br /&gt;3. Create the rules based on the checks&lt;br /&gt;4. Create the requirements&lt;br /&gt;5. Tie the requirements to the rules to create requirement-rules&lt;br /&gt;6. Tie the requirement-rules to the roles for the different classes of users(ie CLASSA, CLASSB, and CLASSC)&lt;br /&gt;&lt;br /&gt;The devil is truly in the details.  Steps 1 and 2 are fairly straightforward.  Use regedit to find the registry keys and value names.  Then create the checks in the NAC Manager (NAM) by navigating to "Device Management &gt; Clean Access &gt; Clean Access Agent &gt; Rules".&lt;br /&gt;&lt;br /&gt;Step 3 is where things get interesting.  I'll take the rules for CLASSA as an example.  The rules will be tied to requirements that ensure that the VPN user is using the correct VPN profile.  I'll call the checks created for each class REGA, REGB, and REGC.  I'll be creating two rules.  Below is a sentence description of what the rules will accomplish&lt;br /&gt;&lt;br /&gt;1. For CLASSA, if the registry key on the VPN user's computer matches REGA, then pass the rule.  If the registry does not match REGA, but does match REGB, then fail the rule.  On rule failure, the requirement tied to this rule will provide the user a download link to download the CLASSB VPN profile.  If REGA does not exist and REGB does not exist, pass the rule.  This will allow other users that do not match REGA and REGB to flow down to the next rule.&lt;br /&gt;2. For CLASSA, if the registry key on the VPN user's computer matches REGA, then pass the rule.  If the registry does not match REGA, but does match REGC, then fail the rule.  On rule failure, the requirement tied to this rule will provide the user a download link to download the CLASSC VPN profile.  If REGA does not exist and REGC does not exist, pass the rule.  This will allow other users that do not match REGA and REGC to flow down to the next rule.&lt;br /&gt;3. This rule blocks access if none of the REGA, REGB, or REGC checks were seen.  This would be a catchall rule looking for rogue users trying to access the network with an unapproved computer.&lt;br /&gt;&lt;br /&gt;I'll explain the boolean logic behind the first rule.  The first thing to keep in mind is that the requirement-rule will only trigger on a failure of the rule.  If the rule passes, the the requirement is deemed successful and no remediation is necessary. With that in mind, let's take a look at boolean logic for the first rule.  The rule will actually be&lt;br /&gt;&lt;blockquote&gt;REGA or (!REGA and !REGB)&lt;/blockquote&gt;Let's break this out into the individual parts.&lt;br /&gt;&lt;blockquote&gt;Part1:  REGA&lt;/blockquote&gt;The first REGA designates that if REGA is not found, then fail the rule.&lt;br /&gt;&lt;blockquote&gt;Part2:  (!REGA and !REGB)&lt;/blockquote&gt;The portion within the parentheses succeeds only if REGA is not found and REGB is not found.  It is important to have the !REGA because we only want to Remember, what we are really looking for is failure scenarios.  Failure occurs in three combinations:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;REGA is found and REGB not found&lt;/li&gt;&lt;li&gt;REGA is found and REGB is found&lt;/li&gt;&lt;li&gt;REGA is not found and REGB is found. &lt;/li&gt;&lt;/ol&gt;The first two combinations will never occur because they would already have passed the expression in Part1.  The last combination is the one we want to fail.  This means that the requirement remediation dialog box will only appear if REGA fails, but REGB is found.&lt;blockquote&gt;REGA or (!REGA and !REGB)&lt;/blockquote&gt;Putting it all together, if REGA is found, then the rule will succeed and remediation is not necessary.  The immediate success is because of the "or" boolean expression right after the REGA.  If REGA is not found, then the second part of the expression, within the parentheses, is evaluated.  If this expression succeeds it means that REGB was not found.  In this case we're doing this because only want to provide remediation if REGB is found and REGA is not found.&lt;br /&gt;&lt;br /&gt;Below is the matrix form of the rule.  1 indicates that the check evaluates true.  0 indicates that the check evaluates to false.  In the REGA and REGB columns a 0 indicates that the registry key does not exist and a 1 indicates that the registry key does exist.&lt;br /&gt;&lt;table border="1"&gt;&lt;br /&gt;&lt;tr&gt;&lt;th&gt;REGA&lt;/th&gt;&lt;th&gt;REGB&lt;/th&gt;&lt;th&gt;REGA or (!REGA and !REGB)&lt;/th&gt;&lt;th&gt;Result&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0 or (1 and 1)&lt;/td&gt;&lt;td&gt;1 (pass)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0 or (1 and 0)&lt;/td&gt;&lt;td&gt;0 (fail)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1 or (0 and 1)&lt;/td&gt;&lt;td&gt;1 (pass)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1 or (0 and 0)&lt;/td&gt;&lt;td&gt;1 (pass)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;In summary, the most important thing to keep in mind is that you want the rule to fail in order to trigger the requirement remediation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-1338380400182662342?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/1338380400182662342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=1338380400182662342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/1338380400182662342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/1338380400182662342'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/10/fun-with-boolean-expressions-in-cisco.html' title='Fun with boolean expressions in Cisco NAC Appliance Rules'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-4385603691213312577</id><published>2008-09-21T22:41:00.001-04:00</published><updated>2008-09-24T13:04:33.567-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>Limiting Operating Systems Allowed Through Cisco NAC Appliance</title><content type='html'>In order to limit the operating systems that are allowed through the NAC Server, configure the "User Pages".  "User Pages" are located at "Administration &gt; User Pages", as seen below.  This makes sense when the login page is used for user authentication.  Users plug in their computers, try to access a webpage, and are then redirected to the login page for their operating system.  If their operating system is not defined under "User Pages", then they are denied access to the network.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/SNcE8J8XquI/AAAAAAAAABc/fpWbV0vh48Q/s1600-h/userpages.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/SNcE8J8XquI/AAAAAAAAABc/fpWbV0vh48Q/s320/userpages.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5248669322231392994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What is less obvious is how the "User Pages" affect single sign on (SSO) scenarios.  With NAC Appliance, there are two widely used single sign methods.  The first SSO method is VPN SSO.  This is used mostly with remote VPN access where the VPN device sends the NAC Server a RADIUS accounting packet after successful authentication.  This allows the NAC Server to accept sessions from the user as successfully authenticated.  The second SSO method is AD SSO.  This is used mostly for campus deployments.  In this method, a user's AD login is recognized by the NAC Server using Kerberos tickets.  &lt;br /&gt;&lt;br /&gt;In both SSO methods, the login page is never displayed because authentication is handled by SSO.  With this in mind, configuring the User Pages is not an intuitive step in the configuration process.  In actuality, the User Pages are very important in the configuration of SSO.  The "User Pages" still define which operating systems are allowed through the NAC Server.  This means that, even if a user successfully completes SSO, they will not be allowed access, through the NAC Server, if their operating system is not defined in "User Pages".  Thinking of it another way, this is still the recommended method of blocking unwanted operating systems even when using SSO.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-4385603691213312577?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/4385603691213312577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=4385603691213312577' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/4385603691213312577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/4385603691213312577'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/07/blocking-operating-systems-from-cisco.html' title='Limiting Operating Systems Allowed Through Cisco NAC Appliance'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TT1j-w_G00Y/SNcE8J8XquI/AAAAAAAAABc/fpWbV0vh48Q/s72-c/userpages.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-580474392138380458</id><published>2008-08-28T12:07:00.007-04:00</published><updated>2008-08-28T12:18:50.194-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>Cisco NAC Appliance and Wildcard SSL Certificates</title><content type='html'>The Cisco NAC Appliance 4.1.6 Server Configuration guide clearly states that wildcard SSL certificates are not supported.  Below is the associated text that is also a link to the section in the guide&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://www.cisco.com/en/US/docs/security/nac/appliance/configuration_guide/416/CAS/s_admin.html#wp1074628"&gt;Cisco NAC Appliance does not support "wildcard" certificates.   &lt;/span&gt;&lt;/a&gt;&lt;/blockquote&gt;What is not stated is exactly why this is the case.  On the Miami of Ohio mailing list, Nate Austin, provided more detailed information about why wildcard certificates are not supported&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://listserv.muohio.edu/scripts/wa.exe?A2=ind0808&amp;amp;L=cleanaccess&amp;amp;T=0&amp;amp;X=7E87B4468096585FDD&amp;amp;Y=rchee%40netcraftsmen.net&amp;amp;P=13347"&gt;Theres actually a valid reason. The client pulls the redirection  information out of the certificate Common Name. So if the CN is  *.domain.com, it will try to redirect you to that and obviously fail.&lt;br /&gt;&lt;br /&gt;I have never personally tried it where the SAN in the cert was the cas  name, so I don't know if we can pull the name from there as well, but my  instinct says probably not. &lt;/a&gt; &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-580474392138380458?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/580474392138380458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=580474392138380458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/580474392138380458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/580474392138380458'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/08/cisco-nac-appliance-and-wildcard-ssl.html' title='Cisco NAC Appliance and Wildcard SSL Certificates'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-3918051605309945123</id><published>2008-08-15T10:03:00.009-04:00</published><updated>2008-08-18T16:34:24.288-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>Cisco NAC Appliance 4.1.6 upgrade notes</title><content type='html'>I'll start by saying that it is imperative to read the release notes, cover to cover, before doing the upgrade.  There are a couple of problems I ran into with my first two NAC upgrades.  Both problems revolved around one big change in 4.1.6.  That change requires the communication between the NAS and NAM to provide &lt;a href="http://www.cisco.com/en/US/docs/security/nac/appliance/release_notes/416/416rn.html#wp558418"&gt;mutual SSL certificate authentication&lt;/a&gt;.  This means that the CA root certificate for the NAS SSL certificate needs to exist on the NAM and the the CA root certificate for the NAM SSL certificate needs to exist on the NAS.  Previously, the NAM only authenticated the NAS SSL certificate so you only had to make sure that the CA root certificate for the NAS existed on the NAM.  With this new requirement, you also now have to make sure that the NAS SSL certificate supports both SSL server and SSL client attributes.  Chris Evans does a pretty good explaining this on his &lt;a href="http://listserv.muohio.edu/scripts/wa.exe?A2=ind0808&amp;amp;L=cleanaccess&amp;amp;T=0&amp;amp;P=2956"&gt;Miami of Ohio Mailing List entry&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The first big problem was that SSL certificates on the NAS and NAM must support SSL client and SSL server attributes.  On the Miami of Ohio Mailing List, &lt;a href="http://listserv.muohio.edu/scripts/wa.exe?A2=ind0808&amp;amp;L=cleanaccess&amp;amp;T=0&amp;amp;P=6131"&gt;Rand talked about that issue. &lt;/a&gt;  I ran into that issue with an Entrust Standard SSL certificate.  It turns out that you have to purchase the Entrust Advantage SSL certifcate to get the SSL client and SSL server attribute functionality.&lt;br /&gt;&lt;br /&gt;Here's what an SSL public certificate with only the SSL server attribute enabled looks like&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SKWSzn_I_4I/AAAAAAAAABM/7cC6PwFh-Ds/s1600-h/ssl-cert-server.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SKWSzn_I_4I/AAAAAAAAABM/7cC6PwFh-Ds/s320/ssl-cert-server.jpg" alt="" id="BLOGGER_PHOTO_ID_5234751557492866946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here's what an SSL public certificate with SSL server and SSL client attributes enabled looks like.  This is what you want to see.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_TT1j-w_G00Y/SKWTQmhAHTI/AAAAAAAAABU/DT_0LUaXwt4/s1600-h/ssl-cert-client-server.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_TT1j-w_G00Y/SKWTQmhAHTI/AAAAAAAAABU/DT_0LUaXwt4/s320/ssl-cert-client-server.jpg" alt="" id="BLOGGER_PHOTO_ID_5234752055314226482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The second problem I ran into had to do with corruption of the SSL certificate when doing the upgrade.  I had a Verisign certificate, which uses an intermediate root CA certificate, on the NAS.  I made sure I added the root and intermediate CA certificate onto the NAM.  When I did the upgrade the NAS and NAM wouldn't talk.  In the NAS and NAM logs there were complaints about invalid chaining certificate.  I checked the Trusted Certifcate Authority on the NAS and the NAM and made sure the intermediate and root CA Verisign certificate existed on both.  I ended up solving the problem by re-inputting the private key and CA-Signed Certificate on the NAS.  Once I did that and rebooted everything worked fine.  I also saw in the&lt;a href="http://www.cisco.com/en/US/docs/security/nac/appliance/configuration_guide/416/CAS/s_admin.html#wp1047275"&gt; 4.1.6 NAS config guide&lt;/a&gt; that the cacerts file can get corrupted.  That may have been what happened during the upgrade.  The config guide recommends the following&lt;br /&gt;&lt;blockquote&gt;If you check nslookup and date from the CAS, and both the DNS and TIME settings on the CAS are correct, this can indicate that the cacerts file on the CAS is corrupted. In this case, Cisco recommends backing up the existing cacerts file from /usr/java/j2sdk1.4/lib/security/cacerts, overriding it with the file from /perfigo/common/conf/cacerts, then performing “service perfigo restart” on the CAS.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-3918051605309945123?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/3918051605309945123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=3918051605309945123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/3918051605309945123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/3918051605309945123'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/08/cisco-nac-appliance-416-upgrade-notes.html' title='Cisco NAC Appliance 4.1.6 upgrade notes'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_TT1j-w_G00Y/SKWSzn_I_4I/AAAAAAAAABM/7cC6PwFh-Ds/s72-c/ssl-cert-server.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-7742599205967587719</id><published>2008-07-14T10:36:00.010-04:00</published><updated>2008-07-16T07:40:04.011-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>How to remote control a computer connected through a VPN client connection</title><content type='html'>I've run into numerous cases where a user is successfully connected via a Cisco VPN client and is having application problems.  The helpdesk would like to get into the user's computer to diagnose the problem.  Since they have a valid VPN tunnel, you'd think they'd just be able to remote desktop into the user's computer and take a look. Unfortunately, as soon as you remote desktop into their computer, you get a screen saying you'll have to kick them off. When you kick them off, you're also killing the VPN connection.&lt;br /&gt;&lt;br /&gt;In order to get around that limitation, I know of two options.  The first option is to have the user install VNC Server.  This would allow the helpdesk to use a VNC client to remote into their computer.  This option requires that the user has admin right on the computer in order to install VNC Server.&lt;br /&gt;&lt;br /&gt;The second option is preferable because it does not require admin rights and is already built into Microsoft WinXP.  The method involves using "Remote Assistance".  The process is to&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Have a user create a file&lt;/li&gt;&lt;li&gt;Email the file to the helpdesk&lt;/li&gt;&lt;li&gt;Have the help desk download the file from the email&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Have the help desk double click on the file to open a connection to the users computer.  &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;The remote assistance program is located at Start-&gt;All Programs-&gt;Remote Assistance, as seen below&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_TT1j-w_G00Y/SHtrhOd2HjI/AAAAAAAAAAc/lD5A9hLOwhM/s1600-h/start-menu.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_TT1j-w_G00Y/SHtrhOd2HjI/AAAAAAAAAAc/lD5A9hLOwhM/s320/start-menu.jpg" alt="" id="BLOGGER_PHOTO_ID_5222886411429355058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This brings up the Remote Assistance wizard.  The user should click on "Invite someone to help you"&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_TT1j-w_G00Y/SHtuBNAgoHI/AAAAAAAAAAk/L7O_F9I-vNY/s1600-h/ra-pic1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_TT1j-w_G00Y/SHtuBNAgoHI/AAAAAAAAAAk/L7O_F9I-vNY/s320/ra-pic1.jpg" alt="" id="BLOGGER_PHOTO_ID_5222889159816945778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the next screen click Continue&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_TT1j-w_G00Y/SHwH1GLlGII/AAAAAAAAAAs/t54Ayt9LN_o/s1600-h/ra-pic3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_TT1j-w_G00Y/SHwH1GLlGII/AAAAAAAAAAs/t54Ayt9LN_o/s320/ra-pic3.jpg" alt="" id="BLOGGER_PHOTO_ID_5223058276616575106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The next screen gives the option of defining a password that the helpdesk has to input before being allowed remote access&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_TT1j-w_G00Y/SHwIOiAqyCI/AAAAAAAAAA0/Q1tMC2gnz2U/s1600-h/ra-pic4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_TT1j-w_G00Y/SHwIOiAqyCI/AAAAAAAAAA0/Q1tMC2gnz2U/s320/ra-pic4.jpg" alt="" id="BLOGGER_PHOTO_ID_5223058713583732770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Next the user saves the file&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_TT1j-w_G00Y/SHwIysIlq5I/AAAAAAAAAA8/1rdIGPVzQGI/s1600-h/ra-pic5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_TT1j-w_G00Y/SHwIysIlq5I/AAAAAAAAAA8/1rdIGPVzQGI/s320/ra-pic5.jpg" alt="" id="BLOGGER_PHOTO_ID_5223059334776597394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Finally, the user emails the file to the helpdesk.  The helpdesk downloads the email attachment and double clicks on the file to launch it.  After the file is launched, it opens a remote desktop session to the user's computer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-7742599205967587719?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/7742599205967587719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=7742599205967587719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/7742599205967587719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/7742599205967587719'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/07/how-to-remote-control-client-connected.html' title='How to remote control a computer connected through a VPN client connection'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_TT1j-w_G00Y/SHtrhOd2HjI/AAAAAAAAAAc/lD5A9hLOwhM/s72-c/start-menu.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-3525954541691207240</id><published>2008-07-13T12:04:00.006-04:00</published><updated>2008-07-13T15:37:02.927-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>Adding static routes for Cisco NAC Manager and Profiler</title><content type='html'>The NAC Manager and Profiler don't have a documented way of adding a static route, in addition to the default gateway.  In most cases this is fine because all traffic follows the default gateway.  When doing a pilot or setting up a lab environment there's a greater possibility of needing a static route to direct some traffic another direction than the default gateway.  &lt;br /&gt;&lt;br /&gt;Since the NAC products are built on Fedora Core, you can use the standard way of adding default routes within Fedora.  Modifying the routing table requires root access, so make sure you are logged in as root or type "su -" to elevate to root privileges.  Assuming eth0 is used for the traffic, you would create a file called "route-eth0" in the "/etc/sysconfig/network-scripts" directory. Here's an example of the contents of the file assuming you want to route the 192.168.0.0/16 subnet to 10.1.1.110&lt;br /&gt;&lt;br /&gt;GATEWAY0=10.1.1.110&lt;br /&gt;NETMASK0=255.255.0.0&lt;br /&gt;ADDRESS0=192.168.0.0&lt;br /&gt;&lt;br /&gt;As you probably figured out, you can add additional entries for GATEWAY1, NETMASK1, and ADDRESS1 to add additional static routes.  &lt;br /&gt;&lt;br /&gt;Once you've created this file, you can apply it in one of two ways.  The safest way is to reboot the device with "shutdown -r now".  The second way is to just restart the routing process with "service network restart"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-3525954541691207240?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/3525954541691207240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=3525954541691207240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/3525954541691207240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/3525954541691207240'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/07/adding-static-routes-for-nac-manager.html' title='Adding static routes for Cisco NAC Manager and Profiler'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-6146853490403921640</id><published>2008-07-08T21:06:00.004-04:00</published><updated>2008-07-16T14:05:04.601-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>Ports required for AD SSO</title><content type='html'>When configuring NAC for AD SSO, the last place you'd think to look would be the documentation, right?  We'll, this would be one time that it makes a lot of sense to RTFM.  On page 9-7 of the PDF version of the 4.1.3 Clean Access Server Installation and Configuration Guide they have all the ports required for AD SSO.&lt;br /&gt;&lt;br /&gt;Here are the TCP ports required, in the unauthenticated role, for AD SSO to work:  88, 135, 389, 445, 1025, and 1026.&lt;br /&gt;&lt;br /&gt;The one thing that isn't listed in the documentation is that ICMP is also required.  Part of the login process includes trying to ping the AD server.  If this fails, then AD login doesn't work&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-6146853490403921640?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/6146853490403921640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=6146853490403921640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/6146853490403921640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/6146853490403921640'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/07/ports-required-for-ad-sso.html' title='Ports required for AD SSO'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-2068617660776054143</id><published>2008-07-07T16:38:00.000-04:00</published><updated>2008-07-07T17:28:23.165-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSA'/><title type='text'>CSA Basic Building Blocks</title><content type='html'>CSA is a very powerful tool to enforce the security policy for a company. It has a very structured approach to create a security policy that is enforced through the CSA Agents. In order to optimize its use, it is important to understand the fundamental building blocks involved with turning the written security policy into an actionable enforcement tool.&lt;br /&gt;&lt;br /&gt;I view the building blocks in two separate parts.  The first part is creating the actions that will be used to enforce the security policy.  The second part is defining the different types of computers, such as desktops and servers, that have the same type of characteristics.   Once these two parts are created, they are linked together so that the correct actions are linked to the appropriate types of computers.&lt;br /&gt;&lt;br /&gt;The first part involves creating three objects that build upon each other: rules, rule modules, and policies.  The first object is called a rule.  This is the basic if/then action that determines enforcement.  An example would be, "if an application tries to open a cmd.exe shell, deny and log the access".  In addition to denying access, there are a number of different actions that can be taken.  The diagram below shows the different actions available.  The diagram is important, because, in many places within CSA, the icons associated with the actions are shown without the actual names.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_TT1j-w_G00Y/SHKCGx0JTMI/AAAAAAAAAAM/NgQ0We4RJG8/s1600-h/rule-action-icons.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_TT1j-w_G00Y/SHKCGx0JTMI/AAAAAAAAAAM/NgQ0We4RJG8/s320/rule-action-icons.jpg" alt="" id="BLOGGER_PHOTO_ID_5220377971038702786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The second object is called a rule module.  A rule module combines multiple rules together that all pertain to the same operating system and provide the same type of functionality.  Rule modules are then combined into a policy.  The policy should contain all aspects that cover the security policy for a particular group of computers (ie desktops or servers).  Unlike the rule modules, the policies are not restricted to pertaining to a single operating system.  That completes the first part.&lt;br /&gt;&lt;br /&gt;The second part is defining the types of computers.  CSA calls these groups.  These groups break up the computers based on operating system and other logical criteria such as function and business group.  Additionally, CSA parameters, such as polling interval, alerts, and events, can be defined for the group instead of for individual hosts.&lt;br /&gt;&lt;br /&gt;The last step is to tie the policies created to the groups.  This creates an enforceable security policy for the different types of computers in the network.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-2068617660776054143?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/2068617660776054143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=2068617660776054143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/2068617660776054143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/2068617660776054143'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/07/csa-basic-building-blocks.html' title='CSA Basic Building Blocks'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_TT1j-w_G00Y/SHKCGx0JTMI/AAAAAAAAAAM/NgQ0We4RJG8/s72-c/rule-action-icons.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-7686872920350815460</id><published>2008-06-25T17:47:00.000-04:00</published><updated>2008-06-25T17:56:12.084-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>AVG 8.0 will be fully supported in NAC 4.1.6</title><content type='html'>Currently NAC only supports installation checks for the paid version of AVG 8.0.  The free version and definition file checks will be supported in version 4.1.6.  From what I've been told, this version should be coming out sometime in July.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-7686872920350815460?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/7686872920350815460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=7686872920350815460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/7686872920350815460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/7686872920350815460'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/06/avg-80-fully-supported-in-nac-416.html' title='AVG 8.0 will be fully supported in NAC 4.1.6'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-1202721191009397295</id><published>2008-06-17T11:35:00.000-04:00</published><updated>2008-06-17T11:44:55.059-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>Resetting NAC Manager database</title><content type='html'>I've been writing some NAC labs and I wanted to figure out the best way to clear out the database and start from scratch.  I found the instructions in the /perfigo/dbscripts/README file on the NAC Manager.  Here are the relevant commands to clear out the database and start from scratch&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;To remove perfigo database issue:&lt;br /&gt;-----------------------------&lt;br /&gt;&lt;span style="font-size:78%;"&gt;su -l postgres -c "psql -h 127.0.0.1 -p 5432 controlsmartdb &lt; /perfigo/dbscripts/pg_droptable.sql"&lt;br /&gt;su -l postgres -c "dropdb -h 127.0.0.1 -p 5432 controlsmartdb"  &lt;/span&gt;&lt;br /&gt;To install perfigo database issue:&lt;br /&gt;-----------------------------&lt;br /&gt;&lt;span style="font-size:78%;"&gt;su -l postgres -c "createdb -h 127.0.0.1 -p 5432 controlsmartdb"&lt;br /&gt;su -l postgres -c "psql -h 127.0.0.1 -p 5432 controlsmartdb &lt; /perfigo/dbscripts/pg_createtable.sql"&lt;/span&gt; &lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;*Note:  Running the commands will remove the license file as well, so make sure you have the NAC Manager and Server license files before running the commands&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-1202721191009397295?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/1202721191009397295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=1202721191009397295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/1202721191009397295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/1202721191009397295'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/06/resetting-nac-manager-database.html' title='Resetting NAC Manager database'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-2488406782808924671</id><published>2008-06-14T08:34:00.002-04:00</published><updated>2008-07-10T20:33:32.430-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>Solution to slow CAM login</title><content type='html'>I just saw this in the 4.1(1) release notes.  It's resolved caveat CSCsi23228.  I haven't had to use it but it may be useful someday if I run into slow CAM login time&lt;br /&gt;http://www.cisco.com/en/US/docs/security/nac/appliance/release_notes/411/411rn.html&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;CAM database performance degraded over time&lt;br /&gt;&lt;br /&gt;Clean Access Manager performance degrades over time, users may experience slowness during login process and CAM web administration interfaces. The slowness may start to exhibit itself after an extensive number of database delete/insert/modify operations.&lt;br /&gt;&lt;br /&gt;There are three workarounds for this issue which can be applied under different conditions.&lt;br /&gt;&lt;br /&gt;Workaround 1&lt;br /&gt;&lt;br /&gt;This can be applied during maintenance window when CAM is not in service. Note that this may take up several minutes, please do not interrupt the process.&lt;br /&gt;&lt;br /&gt;1. service perfigo stop&lt;br /&gt;2. su -l postgres&lt;br /&gt;3. vacuumdb -h 127.0.0.1 -a -f&lt;br /&gt;4. exit&lt;br /&gt;5. service postgresql restart&lt;br /&gt;6. service perfigo start&lt;br /&gt;&lt;br /&gt;Workaround 2&lt;br /&gt;&lt;br /&gt;This can be applied when system is in service with light load. Note that this may take up several minutes, please do not interrupt the process.&lt;br /&gt;1. su -l postgres&lt;br /&gt;2. vacuumdb -h 127.0.0.1 -a -f&lt;br /&gt;3. exit&lt;br /&gt;&lt;br /&gt;Workaround 3: This can be added as system daily cron job to prevent the potential slowness.&lt;br /&gt;&lt;br /&gt;1. Create a file named "db_vacuum.sh" under "/etc/cron.daily" with the following content:&lt;br /&gt;#!/bin/sh&lt;br /&gt;su - postgres -c "vacuumdb -h 127.0.0.1 -a -f"&lt;br /&gt;2. cd /etc/cron.daily&lt;br /&gt;3. chmod +x db_vacuum.sh &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-2488406782808924671?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/2488406782808924671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=2488406782808924671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/2488406782808924671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/2488406782808924671'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/06/licensing-cisco-nac-manager-and-server.html' title='Solution to slow CAM login'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-8797031648302343421</id><published>2008-06-13T08:47:00.003-04:00</published><updated>2010-11-21T22:02:11.519-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VPN'/><title type='text'>DMVPN with NAT</title><content type='html'>It looks like Cisco has been fixing NAT issues with DMVPN.  They fixed the NAT issue for spokes talking to the hub using NAT traversal.  This is the same method that VPN clients use.  It uses UDP port 4500 to send the IPSec traffic instead of IP protocol 50 (ESP) and IP protocol 51 (AH).  Here's a link with more explanation.&lt;br /&gt;http://www.cisco.com/en/US/docs/ios/security/configuration/guide/dmvpn_dt_spokes_b_nat.html&lt;br /&gt;&lt;br /&gt;In versions after 12.4(6)T, the spoke-to-spoke traffic with NAT is supported.  Take a look at this link for more information.&lt;br /&gt;http://www.cisco.com/en/US/docs/ios/12_2t/12_2t13/feature/guide/ftgreips.html#wp1039515&lt;br /&gt;&lt;br /&gt;Here's the important information from the link&lt;br /&gt;&lt;span class="content"&gt;&lt;blockquote&gt;In Cisco IOS Release 12.4(6)T or earlier, DMVPN spokes behind NAT &lt;span style="font-style: italic; font-weight: normal;color:Black;" &gt;will not&lt;/span&gt; participate in dynamic direct spoke-to-spoke tunnels. Any traffic to or from a spoke that is behind NAT will be forwarded using the DMVPN hub routers. DMVPN spokes that are not behind NAT in the same DMVPN network may create dynamic direct spoke-to-spoke tunnels between each other.&lt;br /&gt;&lt;br /&gt;In Cisco IOS Release 12.4(6)T or later releases, DMVPN spokes behind NAT &lt;span style="font-style: italic; font-weight: normal;color:Black;" &gt;will&lt;/span&gt; participate in dynamic direct spoke-to-spoke tunnels. The spokes must be behind NAT boxes that are preforming NAT, not PAT. The NAT box must translate the spoke to the same outside NAT IP address for the spoke-spoke connections as the NAT box does for the spoke-hub connection. If there is more than one DMVPN spoke behind the same NAT box, then the NAT box &lt;span style="font-style: italic; font-weight: normal;color:Black;" &gt;must&lt;/span&gt; translate the DMVPN spokes to different outside NAT IP addresses. It is also likely that you may not be able to build a direct spoke-spoke tunnel between these spokes. If a spoke-spoke tunnel fails to form, then the spoke-spoke packets will continue to be forwarded via the spoke-hub-spoke path.&lt;/blockquote&gt;&lt;br /&gt;I tried this out in a Dynamips lab and it worked great.&lt;br /&gt;&lt;br /&gt;Here's a diagram of the dynagen lab I created with the relevant config&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TT1j-w_G00Y/TOndEHuxaAI/AAAAAAAAAKY/KndOinG2LOY/s1600/dmvpn-with-nat.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 329px;" src="http://1.bp.blogspot.com/_TT1j-w_G00Y/TOndEHuxaAI/AAAAAAAAAKY/KndOinG2LOY/s400/dmvpn-with-nat.jpg" alt="" id="BLOGGER_PHOTO_ID_5542203879320545282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-8797031648302343421?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/8797031648302343421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=8797031648302343421' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/8797031648302343421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/8797031648302343421'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/06/dmvpn-with-nat.html' title='DMVPN with NAT'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TT1j-w_G00Y/TOndEHuxaAI/AAAAAAAAAKY/KndOinG2LOY/s72-c/dmvpn-with-nat.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4995926276347110012.post-7471711733564583431</id><published>2008-06-11T23:03:00.002-04:00</published><updated>2008-07-10T20:32:59.893-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAC'/><title type='text'>How does Cisco NAC change your DHCP IP</title><content type='html'>When implementing NAC you may wonder how it changes your IP when you move back and forth betwen the untrusted and trusted VLANs.  Back in the olden days, the only way to do this was to bounce the switch port.  This caused the link to go down on the connected computer which kicked off a new DHCP request.  Nowadays there's a method that works better when the switch port has an IP phone and a computer on the same&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4995926276347110012-7471711733564583431?l=security-blog.netcraftsmen.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://security-blog.netcraftsmen.net/feeds/7471711733564583431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4995926276347110012&amp;postID=7471711733564583431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/7471711733564583431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4995926276347110012/posts/default/7471711733564583431'/><link rel='alternate' type='text/html' href='http://security-blog.netcraftsmen.net/2008/06/how-does-cisco-nac-change-your-dhcp-ip.html' title='How does Cisco NAC change your DHCP IP'/><author><name>Rob Chee</name><uri>http://www.blogger.com/profile/03255875642992615906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_TT1j-w_G00Y/SiZTNcidiWI/AAAAAAAAAHk/xLvgy2XlOPU/S220/rob.png'/></author><thr:total>0</thr:total></entry></feed>
