<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>xpresslearn.com</title>
	
	<link>http://www.xpresslearn.com</link>
	<description>Solutions to your Networking and Security questions</description>
	<lastBuildDate>Tue, 13 Dec 2011 18:16:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Xpresslearn" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="xpresslearn" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Two Factor Authentication for Linux Console and ssh Logins</title>
		<link>http://www.xpresslearn.com/security/two-factor-authentication-for-linux-console-and-ssh-logins</link>
		<comments>http://www.xpresslearn.com/security/two-factor-authentication-for-linux-console-and-ssh-logins#comments</comments>
		<pubDate>Mon, 12 Dec 2011 22:20:33 +0000</pubDate>
		<dc:creator>Scott Pilkinton</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Radius]]></category>
		<category><![CDATA[RSA]]></category>
		<category><![CDATA[token]]></category>
		<category><![CDATA[Two-Factor Auth]]></category>

		<guid isPermaLink="false">http://www.xpresslearn.com/?p=933</guid>
		<description><![CDATA[This article will explain how to authenticate users on a Linux machine using a RADIUS server for central authentication.  In this particular example, RADIUS is being used to authenticate users in RSA Authentication Manager for two-factor authentication, specifically local for ssh and console logins.]]></description>
			<content:encoded><![CDATA[<p>This article will describe how to setup two-factor authentication for a Debian based Linux machine.  This solution will work for console and remote (ssh) logins.  When changing a Linux host to using two-factor authentication, there is actually a couple of options.  I&#8217;ll briefly explain the two options and why one was chosen over the other in this particular example.  Before getting to that part, a brief mention of the type of two-factor authentication server that is being used.</p>
<p>RSA Authentication Manager provides an authentication mechanism consisting of a &#8220;token&#8221; &#8211; either hardware (e.g. a Keyfob) or software (application that provides same functionally as a keyfob).  A hardware or software token is assigned to an individual, which generates an authentication code at fixed intervals (usually 60 seconds) using a built-in clock and the tokens factory-encoded random key (known as the &#8220;seed&#8221;). The seed is different for each token, and is loaded into the corresponding RSA SecurID server (RSA Authentication Manager, formerly ACE/Server) as the tokens are purchased.</p>
<p>In this example, I are using RSA Authentication Manager 6.1, which is running on a purpose built appliance that uses Windows 2003 Server with the RSA server software installed.  This particular solution includes Funk Software&#8217;s Steel Belted Radius, which provides a radius authentication mechanism into RSA.  At the time of this writing, this particular appliance and software version is approaching end of life and has since been replaced with Authentication Manager 7.1.  In the appliance version of 7.1 (known as Authentication Manger 3.0), the operating system has moved to Linux with Authentication Manager 7.1 loaded on top of it.  Version 7.1/3.0 also includes a radius server that can be used for radius clients needing to utilize two-factor authentication.</p>
<p><span id="more-933"></span></p>
<p><center>
<div></div>
<p></center></p>
<p>Now, onto the client portion of software used to interface with the RSA server.  As previously mentioned, there are two options, with the first being to use the RSA provided authentication agent for Unix/Linux.  The agent is actually a module that hooks into PAM, which is the central authentication standard used in most modern Unix/Linux systems today.  This option provides the maximimum functionality and interfaces directly with the RSA protocol (which means the RADIUS server is not required).</p>
<p>The second option is to load a RADIUS module into PAM (pam_radius_auth), which would then communicate to the RSA server via it&#8217;s built in RADIUS server.  Why would you want to use this option over the first option presented?  The RSA provided client is only supported on  a couple of Linux platforms, namely Red Hat and SuSE, which are both RPM based.  So if you are using any other Linux distribution (Debian based, etc.), there is not an RSA provided option with this client software.</p>
<p>Most Linux software repositories will contain a PAM radius module, which prevents having to download source code and compiling programs.  I&#8217;m specifically working on a Debian based system, which includes the module libpam_radius_auth in it&#8217;s repository.  The following contains instructions for configuring the system:</p>
<p>First, install the module from the distributions repository:</p>
<pre>root@localhost:~# apt-get install libpam-radius-auth
Running /usr/bin/apt-get install libpam-radius-auth
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  radius-server
The following NEW packages will be installed:
  libpam-radius-auth
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 24.7kB of archives.
After this operation, 127kB of additional disk space will be used.
Get:1 http://ftp.us.debian.org lenny/main libpam-radius-auth 1.3.16-4.4 [24.7kB]
Fetched 24.7kB in 0s (58.4kB/s)
Selecting previously deselected package libpam-radius-auth.
(Reading database ... 36010 files and directories currently installed.)
Unpacking libpam-radius-auth (from .../libpam-radius-auth_1.3.16-4.4_amd64.deb) ...
Setting up libpam-radius-auth (1.3.16-4.4) ...</pre>
<p>Now that the module is installed, it&#8217;s time to edit configuration files:</p>
<pre>root@localhost:~# vi /etc/pam_radius_auth.conf</pre>
<p>My default configuration file had two invalid entries defined to show the format.  One of two entries in my configuration file was for 127.0.0.1 with a comment below it that read &#8220;having localhost in your radius configuration is a Good Thing&#8221;.  I don&#8217;t know what that is supposed to mean, but don&#8217;t leave it in the configuration as we have no Radius server running on the local machine.</p>
<p>After removing the existing (sample) entries and replacing with valid server entries, which contained server[:port], shared_secret, and timeout (separated by tab) &#8211; save and close the file.  A particular detail to note is that initially I set the timeout value to the displayed default of 3 (seconds).  However, I experienced authentication failures until I changed that value to 5 (seconds) &#8211; after noticing timeout messages in /var/log/auth.log.</p>
<p>Next, we need to modify a PAM configuration file in order to specify the use of the RADIUS module when authentication occurs.  Note: There are several services that make use of the PAM system for authentication.  Therefore, by doing what I am about to explain could cause negative impact on an application that uses PAM to authenticate users.  Further research should be performed to determine which configuration file the following commands should be placed in, based on what you want to secure.</p>
<p>In this example, there are no applications running that need auth services provided by PAM (such as an FTP server, HTTP server, SAMBA, etc).  The goal is to define the use of a global policy that uses the RADIUS module for central authentication.  If you wanted to only secure a particular service (like ssh logins for administrator shell access via sshd), a different file other than the following can be modified so to not disrupt any other PAM using applications installed on the machine.</p>
<p><center>
<div></div>
<p></center></p>
<p>Edit the /etc/pam.d/common-auth configuration file:</p>
<pre>
root@localhost:/etc/pam.d# vi common-auth
</pre>
<p>First, find the following line in the configuration:</p>
<pre>
auth	required	pam_unix.so nullok_secure
</pre>
<p>Insert a new line BEFORE/ABOVE the previous line and paste the following line into the file.</p>
<pre>
auth	sufficient	pam_radius_auth.so
</pre>
<p>Save and exit the file.  The previous addition to the common-auth file tells PAM to use the RADIUS module for authentication first (since it is listed first in the configuration).  By specifying &#8216;sufficient&#8217; in our entry, PAM determines that a successful auth using this module is satisfactory, therefore no other modules defined in the configuration file need to be processed.  However, if there is a failure from this module (user didn&#8217;t exist on RADIUS server), then continue processing entries in this configuration file.  Note: By configuring this way, any locally defined users on the system will still authenticate successfully.  Therefore, it is advised to only have local &#8216;emergency accounts&#8217; defined, in case the machine completely looses communications with all configured RADIUS servers &#8211; you would still be able to log in with a local user.  If you adopt this policy, obviously the people who know the credentials to the locally defined account(s) should be minimal &#8211; in order to force the use of individual (RADIUS defined) accounts.</p>
<p>Next, edit the /etc/pam.d/common-account file</p>
<pre>
root@localhost:/etc/pam.d# vi common-account
</pre>
<p>Find the line:</p>
<pre>
account	required	pam_unix.so
</pre>
<p>Insert the following BEFORE/ABOVE the previous line:</p>
<pre>
account	required	pam_radius_auth.so
</pre>
<p>Save and exit the file.  The previous addition to the common-account file is to tell PAM to use the RADIUS module for any authorization requirement (like permitting access to a service based on time of day, etc.), prior to checking the local database. By specifying &#8216;required&#8217; in our entry, PAM determines that the success of the module is required for the module-type facility (in this case authorization is the module-type) to succeed. </p>
<p>Next edit the /etc/pam.d/common-session configuration file:</p>
<pre>
root@localhost:/etc/pam.d# vi common-session
</pre>
<p>Find the line:</p>
<pre>
session	required	pam_unix.so
</pre>
<p>Insert the following lines BEFORE/ABOVE the previous line:</p>
<pre>
session	required	pam_radius_auth.so
session	required	pam_mkhomedir.so	skel=/etc/skel/	umask=0022
</pre>
<p>Save and exit the file.  The previous addition to the common-session file is to define tasks to be performed at the start and end of a user control of a service. By specifying &#8216;required&#8217; in our entry, PAM determines that the success of the module is required for the module-type facility (in this case services is the module-type) to succeed.</p>
<p>As you can see, we added a second module (pam_mkhomedir.so) to the common-session configuration file.  This is required in order to have a home directory available for a RADIUS authenticated user.  The module will run after a successful authentication and create the user home directory in /etc/skel with the appropriate permissions.</p>
<p>That will complete the configuration setup.  There is one final step left that has to be performed for every user that will login to the system via RADIUS.  Because RADIUS doesn&#8217;t provide a directory service, we have to have UID and GID information pre-populated on our system.  This is accomplished by creating the username and groupname on the local system, which will assign the necessary unique user ID and group ID values (numbers).</p>
<p>For example, a user that needs to authenticate via radius using a login id of johnh (that belongs to an associated group called johnh) needs to have the following performed on the local system:</p>
<pre>
useradd johnh
</pre>
<p>That will do it, the user will now have an entry that is created in /etc/passwd and /etc/group with an automatically created (unique) ID number.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xpresslearn.com/security/two-factor-authentication-for-linux-console-and-ssh-logins/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DIY Checkpoint Firewall Log Analysis</title>
		<link>http://www.xpresslearn.com/security/diy-checkpoint-firewall-log-analysis</link>
		<comments>http://www.xpresslearn.com/security/diy-checkpoint-firewall-log-analysis#comments</comments>
		<pubDate>Fri, 30 Sep 2011 21:29:47 +0000</pubDate>
		<dc:creator>Scott Pilkinton</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.xpresslearn.com/?p=861</guid>
		<description><![CDATA[An example of putting together a solution using simple tools for analyzing log data from a Checkpoint firewall.  In this example, we take a 5Gb logfile and import only data for a single host into a sqlite database.  From there, we run queries to determine what communication goes through the firewall either sourced or destined to this host.]]></description>
			<content:encoded><![CDATA[<p>In the world of firewall administration, one very common problem is a host behind a firewall has more access than what was intended.  This occurs mainly due to &#8216;loosely defined&#8217; rules that happen to &#8216;catch&#8217; unintended traffic and then inadvertently allows it to pass.  I recently was given a task of reducing access from a set of hosts behind a CheckPoint firewall which had a 1000 rule policy installed, with logging turned on for each one (including the cleanup rule).  My point of describing the environment is that it can quickly become overwhelming to fire up Tracker and begin to piece access information together, especially across multiple days.  In order to get started, the first item of business was to find all the rules this group of hosts were using, which had to be known before implementing the required &#8216;bare bones&#8217; access.</p>
<p>Before I go any further, it must be stated that commercial packages exist that can do this type of analysis for you.  These software programs usually import CheckPoint logs into a larger data-source and then run various reports against it.  While those packages are extremely valuable to the firewall administrator, often times it is cost prohibitive to the company they work for.  It will be my attempt to share a Do It Yourself, bare bones, just get it done, alternative approach to buying these costly software packages.</p>
<p></p>
<p><span id="more-861"></span></p>
<p>As far as prerequisites, not much is needed: I&#8217;ll be using a Linux workstation for the utilities, such as cat,grep, and others.  The log data will be imported into a SQLite database for analysis.  Everything I have mentioned thus far is available on a Windows workstation, but will require a little bit of work to find/install it.  My point here is: If you have not taken the plunge to set up a Linux &#8216;utility&#8217; workstation yet &#8211; now would be a great time to knock that out.  Anyway, I will show all my examples and reference the procedure as if it is being performed from a Linux machine.  However, I think it will easily be adaptable to the Windows only administrator.  If not, I will do my best to clarify points as questions are asked.</p>
<p>First, we must get the logs in the format we can work with.  This will require exporting the current CheckPoint log file type to a delimited, plain text type.  The utility required for this will be located in the Firewall1 program directory on the SmartCenter management station.</p>
<p>From a command line on the SmartCenter machine, we want to change to the firewall log directory:</p>
<pre>cd \fw1_install_dir\RXX\fw1\log</pre>
<p>where fw1_install_dir = SmartCenter installation directory and XX = the version of SmartCenter installed (i.e. R75).</p>
<p>running the &#8216;dir&#8217; command in this directory will give you the name of the available logfiles for export.  The file names will follow the format of YYYY-MM-DD_HHMMSS_XX.log, select the file for export and run the following:</p>
<pre>fwm logexport -n -p -m raw -i [YYYY-MM-DD_HHMMSS_XX.log] -o [YYYY-MM-DD_HHMMSS_XX.txt]</pre>
<p>The switches are explained below:</p>
<pre>Usage:
fwm logexport [-d delimiter |-s] [-i filename] [-o filename] [-f|-t] [-x start_p
os] [-y end_pos] [-z] [-n] [-p] [-a] [-u unification_scheme_file] [-m (initial|s
emi|raw)]
Where:
-d  - Set the output delimiter. Default is ';'.
-s  - Set the delimiter to be ASCII character #255.
-i  - Input log file name. Default is the active log file, fw.log.
-o  - Output file name. Default is printing to the screen.
-f  - Only in case of active log file - Upon reaching end of file, wait for new
records and export them as well.
-t  - Same as -f flag, only start at end of file.
-x  - Start exporting at the specified position.
-y  - End exporting at the specified position.
-z  - Continue exporting the next records, in case of an error. Default is to stop exporting.
-n  - No IP resolving. Default is to resolve all IPs.
-p  - No port resolving. Default is to resolve all ports.
-a  - Export account records only. Default is export all records.
-u  - Unification scheme file name. Default is log_unification_scheme.C.
-m  - Unification mode: initial-order, semi-unified, or raw. Default is 'initial'.</pre>
<p>The switches used in the previous example should be self-explanatory after looking them up using the syntax help above.</p>
<p>Here is the command I ran in my environment</p>
<pre>C:\Program Files\CheckPoint\R71\fw1\log&gt;fwm logexport -n -p -m raw -i "2011-09-28_235900_98.log"
 -o "d:\2011-09-28_235900_98.txt"
Starting... There are 20492936 log records in the file
File logexport.ini was opened successfully
Processed 20492936 out of 20492936 records (99%)</pre>
<p>Once I did this in my environment for one log file, which contained access information for a 24 hour period, the result was a 5.2G text file.  This would obviously be impossible to open with any editor, which is where our Unix utilities come into play.</p>
<p></p>
<p><!--more--></p>
<p>At this point, I only want to load the necessary data into the db.  This keeps the database small and makes queries much more responsive.  In order to extract a subset of data from the log output, we will use awk and grep to put the desired results into a separate file.  In this example, I want traffic that was either sourced or destined to 10.16.2.20.</p>
<pre># awk '{q=split($0,a,";");if (NR==1){for (v=1;v&lt;=q;v++) c[a[v]]=v} printf("%s;%s;%s;%s;%s;
%s;%s;%s;%s;%s\n",a[c["date"]],a[c["time"]],a[c["action"]],a[c["rule_uid"]],a[c["rule_name"]],
a[c["src"]],a[c["s_port"]],a[c["dst"]],a[c["service"]],a[c["xlatesrc"]])}' 2011-09-28_235900
_98.txt | grep '\&lt;10.16.2.20\&gt;' &gt; windowsdc01.txt</pre>
<p>The previous command uses &#8216;awk&#8217; to process the file &#8217;2011-09-28_235900_98.txt&#8217; and only print the log fields we are interested in. Awk is being used because for some reason, Checkpoint does not export log files the same way twice.  For example a fwm export one day may contain 51 columns, the next day it might contain only 40.  Obviously this would play havoc on importing the same fields each time into our database.  By extracting just the columns we need, this ensures the same format each time.  This command looks very complex, the only thing you really want to consider is if additional fields are wanted in the output.  If this is the case, just make sure the additional fields are specified in order within the script.  For example, let say you want to add an additional field (i/f_name) to the output.  If you look at the first line of the original exported file, which are the column headers, you will see the &#8220;i/f_name&#8221; column is between &#8220;action&#8221; and &#8220;rule_uid&#8221;.  So hear is what you would add to the existing script <b>(in bold)</b></p>
<p>a[c["action"]],<b>a[c["i/f_name"]],</b>a[c["rule_uid"]],</p>
<p>You will also need to add an additional %s; after the printf statement for each additional field you add</p>
<p>Moving on, note after the grep command the \&lt; and the \&gt; characters with the ip address in between.  What this does it tell grep to only match this character string if it&#8217;s the beginning or end of the word.  If the \&lt; characters were missing from above, then we would also match other hosts like 110.16.2.20 or 210.16.2.20.  Likewise, if the \&gt; were missing off the end, then we would match on 10.16.2.201, 10.16.2.202, and so on.  Finally, the greater than sign followed by a file name, will output the results to a file instead of to the default location of the screen.</p>
<p>Now, I have a separate file that contains only the data I care about at the moment and it is 28Mb vs. the 5Gb source file we started with.  The next thing to do is load it into a sqlite database.  Before we can do that, we have to create the database with a table containing the proper columns to accept the text file import.  We start by invoking sqlite and passing it a variable that will be the name of a new database, which in this example is called data.db.  Once sqlite is invoked, run the SQL script shown below, which is used to create the table.  Obviously this sql statement would need to be modified if you added additional fields over what is shown in the previous example.</p>
<pre># sqlite3 data.db
SQLite version 3.7.5
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite&gt;CREATE TABLE tbl_fwlogs(
f_date varchar(10),
f_time varchar(10),
f_action varchar(10),
f_rule_uid varchar(100),
f_rule_name varchar(15),
f_src varchar(10),
f_srcport varchar(10),
f_dst varchar(15),
f_service varchar(10),
f_xlatesrc varchar(10));
sqlite&gt;</pre>
<p>Define the separator used in the import file</p>
<pre>sqlite&gt; .separator ";"</pre>
<p>Finally, import the text file into the database</p>
<pre>sqlite&gt; .import file.txt tbl_fwlogs</pre>
<p>Now that you have data to query, here is a sample that displays what rules are being used in the rulebase for this particular host.</p>
<pre>sqlite&gt; select DISTINCT(f_rule_uid),f_rule_name from tbl_fwlogs;</pre>
<pre>{3C9A2260-8E75-4488-82C3-A3F279BB72B6};Srv to Srv access
{13385ECB-2S6F-4657-CC20-4DA76F217141};Windows Domain Resources
{3A5A0D9E-1D32-41BD-9795-829ED5CFE366};Time Requests
{5D2726D6-738A-43BA-8B5B-63FA0A7EBF78};Monitoring Servers
{A696790B-2605-46B2-BDA3-8A64A5B98C1A};DNS
{DDDCF882-8121-4E27-8A28-EA17EC5BC47E};Internal ICMP
sqlite&gt;</pre>
<p>In this example we see there are 6 rules in use for this host.  From here additional queries would determine src/dest addresses and protocols used so that we could take that info and build a stricter rule set for this host.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xpresslearn.com/security/diy-checkpoint-firewall-log-analysis/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un-brick a network appliance</title>
		<link>http://www.xpresslearn.com/networking/un-brick-a-network-appliance</link>
		<comments>http://www.xpresslearn.com/networking/un-brick-a-network-appliance#comments</comments>
		<pubDate>Tue, 23 Aug 2011 21:53:58 +0000</pubDate>
		<dc:creator>Scott Pilkinton</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[bricked]]></category>
		<category><![CDATA[network appliance]]></category>
		<category><![CDATA[tftp]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://www.xpresslearn.com/?p=832</guid>
		<description><![CDATA[It is not uncommon to be performing a software upgrade on a network appliance type of device and the operation fails.  Hopefully, the failure doesn't render the hardware useless and allows for a retry of the operation.  However, there are times where an upgrade will fail and the device will no longer function.  This article uses a specific example to carry you through steps that can be applied to any appliance like device.]]></description>
			<content:encoded><![CDATA[<p>It is not uncommon to be performing a software upgrade on a network appliance type of device and the operation fails. Hopefully, the failure doesn&#8217;t render the hardware useless and allows for a retry of the operation. However, there are times where an upgrade will fail and the device will no longer function. This article uses a specific example to carry you through steps that can be applied to any appliance like device.</p>
<p>First, a few details regarding the example scenario:</p>
<p>A previous upgrade to an IP enabled KVM switch was causing issues with it&#8217;s normal operation. There were issues with local use using a directly attached keyboard/monitor/mouse and also when using the viewer plugin remotely. After my co-workers had complained enough, I decided it was time to downgrade the software to the previously running code, which did not have all the issues that was currently happening. Using the management software for the KVM, I downgraded 7 of 8 devices successfully. One device failed during the procedure and subsequently stopped responding on the network.</p>
<p style="text-align: center;"><span id="more-832"></span><br />
</p>
<p>After giving sufficient time for possible self-recovery with no results, I decided it was time to investigate further. Upon inspecting the device visually, it was determined that the equipment was in recovery mode (The power light was blinking steady with no other lights on the device). This determination was made by going to the hardware manufacturers website and downloading the manual for my particular model, then looking up the device states in the troubleshooting section of the documentation.</p>
<p>The first thing attempted was an obvious one: Try and power cycle the hardware. After turning off and back on, the same result happened &#8211; a steadily flashing power light.</p>
<p>The documentation stated that when the device was in recovery mode, it would automatically attempt to download the system image via tftp from the management server. After inspecting the machine running the KVM management software, I was able to determine there was no traffic between it and the failed device. There are several ways to troubleshoot this, my particular method was to run a packet sniffer (Wireshark) from the management server to see if any requests were coming from the KVM&#8217;s IP address. If installing Wireshark (or similar program) is not an option on the machine, a portable version is available from the website that can be run out of a directory that either resides on a hard or flash drive.</p>
<p>At this point, a support call would have been the next course of action. However, a current maintenance contract did not exist on this equipment, so tech support was not an option. Truthfully, even if it was an option, I most likely wouldn&#8217;t be using it. I would rather be hung upside down (by my toenails), 30 feet in the air, with a pack of flesh eating Hyenas waiting underneath, for me to plummet to my death so they could consume me. Not that there is anything wrong with calling tech support, never mind &#8211; I digress&#8230;</p>
<p>The device is now officially &#8216;bricked&#8217; (hence the title of this article). The urban dictionary defines the term as follows:</p>
<p>Bricked refers to ANY hardware that is unable to start up due to bad software; Usually because of a bad software flash, a modification done improperly, loss of necessary files, etc.</p>
<p>Thankfully, the majority of the time a device can be recovered after being in this state.</p>
<p>The next step in my process was to determine if a console was available. After looking at the documentation once again, I found that a serial port was available on this device for management purposes. After recording the applicable serial port settings and grabbing a null modem (serial) cable, it was off to the data center where the device was located.</p>
<p>My thought was to connect the serial cable between a laptop and the KVM device to see if I could get any output using a terminal program. Putty is my terminal program of choice, which has support for serial connections. I configured Putty to connect to COM1 at 9600 baud with 8 bits, No parity, and 1 stop bit (better known as eight, &#8216;n&#8217;, and one). The hope here was maybe the device used a bootloader which is a small piece of software that loads initially (like a BIOS) and in turn loads the full software image for the device. Many times when a bootloader can&#8217;t load the main software image, there is a very basic command line structure available to perform recovery functions such as transferring an image, re-issuing boot commands, etc.</p>
<p style="text-align: center;"></p>
<p>After starting Putty and pressing the Enter key several times (which usually prompts the connected device to respond), there was no response. I&#8217;m still not sure what was going on with why the console wasn&#8217;t working, because I moved on from that very quickly. (My assumption here was the command line via serial port was only available after the firmware was correctly loaded and running on the device)</p>
<p>As I previously mentioned, by reading the documentation, I knew the device was supposed to request a boot image via TFTP. So, I took my laptop and connected it to an isolated switch along with the KVM device&#8217;s network interface. After starting Wireshark on the laptop and starting a capture, the KVM was powered on.</p>
<p>AH, progress!</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/avocent.png"><img class="size-medium wp-image-844 aligncenter" title="Wireshark displaying trace from bricked KVM device" src="http://www.xpresslearn.com/wp-content/uploads/avocent-300x187.png" alt="" width="300" height="187" /></a></p>
<p>The above image displays a WireShark window running on my laptop.  When this photo was taken, there was a display filter set &#8211; so that only traffic from the KVM src mac-address was shown.  (A mac filter was used, since that was the only known information).  The mac-address is always shown, usually via a sticker on the device.  Notice it has an IP of 10.0.0.2, which obviously is hard coded in the firmware &#8211; since I didn&#8217;t have a DHCP server running on the laptop. The next thing you see is the appliance making a request via TFTP to 10.0.0.3 (again another hard coded entry in the firmware) and is requesting a file with the name DSRxx20.fl.</p>
<p>With this information, the laptop&#8217;s network interface can now be set statically to 10.0.0.3. The next thing I needed was a TFTP server loaded on my laptop. This is an easy task, with several available freely on the Internet, download your favorite (my recommendation is tftpd32) TFTP server and run it.</p>
<p>The final step is to put the firmware for the device into the TFTP server &#8216;home&#8217; directory and make sure the filename matches what is being requested (in this case it was DSRxx20.fl). After the file was in place with the TFTP server running, I power cycled the appliance once again:</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/avocent2.png"><img class="size-medium wp-image-845 aligncenter" title="Transferring firmware to appliance" src="http://www.xpresslearn.com/wp-content/uploads/avocent2-300x187.png" alt="" width="300" height="187" /></a></p>
<p>As you can see from above, the transfer took place, which then the device proceeded to boot up perfectly! SUCCESS! Although this is not a universal step by step instruction on how to save any &#8216;bricked&#8217; device &#8211; it should help outline the steps required to discover what is needed to bring something you are working on back to life.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xpresslearn.com/networking/un-brick-a-network-appliance/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reset Windows Server Administrator password</title>
		<link>http://www.xpresslearn.com/windows/windows-admin/reset-windows-server-administrator-password</link>
		<comments>http://www.xpresslearn.com/windows/windows-admin/reset-windows-server-administrator-password#comments</comments>
		<pubDate>Thu, 30 Jun 2011 17:06:39 +0000</pubDate>
		<dc:creator>Scott Pilkinton</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[lost Windows password]]></category>
		<category><![CDATA[reset Windows password]]></category>
		<category><![CDATA[Windows Server Password Recovery]]></category>

		<guid isPermaLink="false">http://www.xpresslearn.com/?p=801</guid>
		<description><![CDATA[This article describes how to reset an Administrator password on a Windows 2008 Server using only the installation media.  Using this procedure on a domain controller will also allow the reset of a domain administrator account.]]></description>
			<content:encoded><![CDATA[<p>I have a lab setup with a few Windows machines, including a domain controller, which I can never seem to remember the password for.  After reading over some different options, this is by far the most easiest method to reset the Administrator password and does not require any third party software &#8211; outside of a Windows Server 2008 install disk.</p>
<p>First shut the running machine down, luckily my lab was running in a virtual environment and had the vmware tools installed on the guest machine that needed the password reset on.  I opened a console window to the vm and in the viewer selected VM from the menu bar, Power, then Restart Guest (Ctrl+R).  Obviously if this is a physical machine or a virtual without the tools installed, you may have to shut it down / power off not so gracefully.  However, at this point &#8211; if you can&#8217;t login to the machine &#8211; what else can you do? <img src='http://www.xpresslearn.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Make sure your boot order is setup properly in the BIOS, so that the machine will attempt to boot from CD/DVD first, before the hard drive.  Once this is correctly set, be sure to press a key for booting to the DVD, while the message is shown telling you to do so.</p>
<p></p>
<p><span id="more-801"></span></p>
<p></p>
<p>Once booted to the DVD, the following screenshot will be the first thing you see.  Select the desired language and click on Next.</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/win-pass-1.png"><img class="aligncenter size-full wp-image-803" title="Language window displayed after booting from Windows Server install DVD" src="http://www.xpresslearn.com/wp-content/uploads/win-pass-1.png" alt="" width="617" height="454" /></a></p>
<p>The following screen will appear next, which typically you would use the Install now on.  However, there are a couple more options on this screen.  In the lower left hand corner, click on the Repair your computer.</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/win-pass-1.png"></a><a href="http://www.xpresslearn.com/wp-content/uploads/win-pass-2.png"><img class="aligncenter size-full wp-image-804" title="Repair your computer link after booting to Windows 2008 Server installation DVD" src="http://www.xpresslearn.com/wp-content/uploads/win-pass-2.png" alt="" width="618" height="455" /></a></p>
<p>The following screen reflects the next window you will see, which is a question regarding the Windows installation to be repaired.  As you can see below, I have the Windows installation location selected (note it tells you what drive letter will be used during this repair session &#8211; D: in this/most cases).  Click on Next.</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/win-pass-3.png"><img src="http://www.xpresslearn.com/wp-content/uploads/win-pass-3.png" alt="" title="Selecting Windows installation" width="384" height="293" class="aligncenter size-full wp-image-805" /></a></p>
<p>The following window will then appear, select the Command Prompt link.</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/win-pass-4.png"><img src="http://www.xpresslearn.com/wp-content/uploads/win-pass-4.png" alt="" title="Clicking on the Command Prompt link from the Recovery menu" width="484" height="265" class="aligncenter size-full wp-image-806" /></a></p>
<p>After selecting a command prompt link, a cmd window will open like the one below:</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/win-pass-5.png"><img src="http://www.xpresslearn.com/wp-content/uploads/win-pass-5.png" alt="" title="Command Prompt window as it appears after clicking on link" width="689" height="430" class="aligncenter size-full wp-image-807" /></a></p>
<p>Perform the following steps:</p>
<p>- Change to the assigned drive letter Windows is installed on.</p>
<p>- Change to the \Windows\System32 directory.</p>
<p>- Move the existing file utilman.exe to a temporary name, such as utilman.exe.bak</p>
<p>- Copy the command interpretor cmd.exe to utilman.exe</p>
<p>The previously described operations are reflected in the following screenshot:</p>
<p>Exit the command Window and click on the Restart button</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/win-pass-6.png"><img src="http://www.xpresslearn.com/wp-content/uploads/win-pass-6.png" alt="" title="Commands needed to copy cmd.exe over utilman.exe" width="690" height="447" class="aligncenter size-full wp-image-808" /></a></p>
<p>After restarting, allow the machine to boot normally from the hard drive.  The following screenshot is the normal Windows login screen you will see.  Press the key combination <strong>Windows key + U</strong></p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/win-pass-7.png"><img src="http://www.xpresslearn.com/wp-content/uploads/win-pass-7.png" alt="" title="Initial screen after normal Windows boot" width="803" height="602" class="aligncenter size-full wp-image-809" /></a></p>
<p>After pressing the <strong>Windows+U</strong> keys, a command window will appear like what is in the following screenshot:</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/win-pass-8.png"><img src="http://www.xpresslearn.com/wp-content/uploads/win-pass-8.png" alt="" title="Command Prompt window that appears in place of utilman" width="802" height="602" class="aligncenter size-full wp-image-810" /></a></p>
<p>The next step is your normal command line password change commands.  If your not aware of which username you should be changing, use <strong>net group &#8220;Domain Admins&#8221;</strong> to determine the userid that needs resetting.</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/win-pass-9.png"><img src="http://www.xpresslearn.com/wp-content/uploads/win-pass-9.png" alt="" title="Resetting Windows Administrator Password" width="801" height="601" class="aligncenter size-full wp-image-811" /></a></p>
<p>The user Administrator is what I need reset, so use the following command <strong>net user Administrator </strong><em>&lt;A secure password&gt; </em> like what is shown in the following screenshot:</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/win-pass-10.png"><img src="http://www.xpresslearn.com/wp-content/uploads/win-pass-10.png" alt="" title="Reset Windows Administrator password via command line" width="698" height="388" class="aligncenter size-full wp-image-812" /></a></p>
<p>At this point, you have successfully reset the Administrator password!  However, there is one more task that needs to be performed.  Shut the machine down and repeat the steps with the Windows 2008 Server install DVD up to the point where you have a command window opened.  Copy the backup file utilman.exe.bak over the existing utilman.exe file (which at this point is a renamed copy of cmd.exe).  Reboot the machine back to the OS installed on the hard drive.</p>
<p>Note:  Failure to perform this step will keep the what is now a potential security hole open on your machine.  So it is important to return the utilman.exe file back to it&#8217;s original state.</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/win-pass-11.png"><img src="http://www.xpresslearn.com/wp-content/uploads/win-pass-11.png" alt="" title="Booting back to recovery and changing utilman.exe back to original state" width="695" height="439" class="aligncenter size-full wp-image-813" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xpresslearn.com/windows/windows-admin/reset-windows-server-administrator-password/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Closing an open file handle</title>
		<link>http://www.xpresslearn.com/windows/windows-admin/closing-an-open-file-handle</link>
		<comments>http://www.xpresslearn.com/windows/windows-admin/closing-an-open-file-handle#comments</comments>
		<pubDate>Wed, 29 Jun 2011 16:25:58 +0000</pubDate>
		<dc:creator>Scott Pilkinton</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[close file handle]]></category>
		<category><![CDATA[handle.exe]]></category>
		<category><![CDATA[sysinternals]]></category>

		<guid isPermaLink="false">http://www.xpresslearn.com/?p=783</guid>
		<description><![CDATA[Use case of how using Sysinternals handle.exe to close a file opened over the network saved a local copy process from having to be restarted.]]></description>
			<content:encoded><![CDATA[<p>Recently, I needed to close a file that was open via a network share on a server containing user home directories.  This particular file was a temporary excel file opened from a user workstation.  These files are easily identifiable, in this case the name was ~$Weekly Sales Report.xlsx.  The Office suite of programs creates a temporary file that is prepended with the &#8216;~$&#8217; characters, of the same file name which contains the logon name of the person who opened the file first.  This temporary file is called the &#8220;owner file&#8221; and is used to prevent more than one network user from opening the same file in read/write mode at the same time.  When this file exists and the second user goes to open the same file, they will see a similar message to the following:</p>
<p><em>This file is already opened by (user name). Would you like to make a copy of this file for your use?﻿</em></p>
<p>The reason I needed to close this file, was because I was running <a href="http://technet.microsoft.com/en-us/library/cc733145(WS.10).aspx">robocopy</a> to mirror a directory from one drive to another.  Robocopy detected the file in use and would stall for 30 seconds then retry to copy the file.  Since I didn&#8217;t specify how many times to retry, the default was one million times.  How&#8217;s that for bringing a 450GB copy operation to a standing halt!  Since this job was over 50 percent complete, I didn&#8217;t want to start it over &#8211; so the question was: How do I close this file in use?</p>
<p><span id="more-783"></span></p>
<p style="text-align: center;"></p>
<p>The answer was a <a href="http://technet.microsoft.com/en-us/sysinternals/default">Sysinternals</a> program called <a href="http://technet.microsoft.com/en-us/sysinternals/bb896655">handle.exe</a>.  When running handle with no switches, it will print out every process and the files opened by it to the screen.  This will typically be more information than the default cmd window buffer will handle, thus part of the information will scroll off the window.  The easist way to deal with this issue is to pipe the output to a file and then search the text file.  Here is an example:</p>
<pre>C:\temp&gt;handle &gt; handle.txt</pre>
<p>Now open handle.txt in notepad and search for (in my case): ~$Weekly Sales Report.xlsx.</p>
<p>The search yielded the following (edited for brevity):</p>
<pre>------------------------------------------------------------------------------
System pid: 4 NT AUTHORITY\SYSTEM
395C: File  (R--)   E:\Personals\Joe.Didley\Reports\~$Weekly Sales Report.xlsx</pre>
<p>So now I know that the process id &#8217;4&#8242; had the file open with an assigned id of &#8217;395C&#8217;.</p>
<p>The command to close this particular file handle is:</p>
<pre>C:\temp&gt;handle -c 395C -p 4

Handle v3.45
Copyright (C) 1997-2011 Mark Russinovich
Sysinternals - www.sysinternals.com

395C: File  (R--)   E:\Personals\Joe.Didley\Reports\~$Weekly Sales Report.xlsx
Close handle 395C in System (PID 4)? (y/n) y

Handle closed.</pre>
<p>Success!  After the file handle was closed, robocopy automatically continued since the file was no longer in use.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xpresslearn.com/windows/windows-admin/closing-an-open-file-handle/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backup network configurations with free tools</title>
		<link>http://www.xpresslearn.com/networking/networkmanagement/backup-network-configurations-with-free-tools</link>
		<comments>http://www.xpresslearn.com/networking/networkmanagement/backup-network-configurations-with-free-tools#comments</comments>
		<pubDate>Wed, 01 Jun 2011 17:17:09 +0000</pubDate>
		<dc:creator>Scott Pilkinton</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[Cisco]]></category>
		<category><![CDATA[config backup]]></category>
		<category><![CDATA[expect]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[TCL]]></category>

		<guid isPermaLink="false">http://www.xpresslearn.com/?p=681</guid>
		<description><![CDATA[Use a simple Linux virtual machine running in a player on your Windows desktop in order to use the awesome Unix program called expect.  This will article will show you how to get started automating the login of Cisco devices by using expect.]]></description>
			<content:encoded><![CDATA[<p>Anyone who manages a network will benefit from having a plan in place to backup network device configurations. Switches, Routers, Load Balancers, Firewalls, and VPN devices all contain configurations that should have copies stored off the device itself.  By doing this, it provides a backup in case the device fails and needs to be replaced, or more commonly, a mis-configuration is performed on a device and you need to go back to where you started from.</p>
<p>In this example, we will use a very nice tool called Expect.  Expect has traditionally been run on Unix variants, but has also been ported to Windows.  Activestate, the company known for Perl on the Windows platform, also offers TCL for Windows &#8211; which includes Expect.  This particular article will cover the program running on the Linux platform, with the possibility of revisiting at a later date to explore whether we can run the same processes in Windows.</p>
<p><span id="more-681"></span></p>
<p style="text-align: center;"></p>
<p>In today&#8217;s times, even if your a full blown Windows user, there are very easy ways to add Linux into your engineering toolbox.  This is most commonly done using Virtual technology, which is offered by multiple vendors.  The more common scenarios are to download a free &#8216;player&#8217;, such as the one provided by vmWare. Once you have an installed VM player, you can proceed by building a basic Linux machine from scratch (which will run on top of your Windows platform), or just download a pre-built &#8216;appliance&#8217; from the vmWare website. You can easily download the latest and greatest versions of Linux, ready to run, by copying an image to your workstation, hit play on the vmPlayer, login and your ready to work!  It really is that easy!</p>
<p>First, let&#8217;s start with a simple expect script and then gradually move into something a little more flexible. For an Operating System, I am using Ubuntu 10.10 Server Edition. The Server Edition just installs the minimum requirements to run a linux machine with basic tools. There is no GUI in the installation, so everything is done at a command line. This keeps the footprint small, which is especially good for running inside a virtual machine like I am doing.</p>
<p>Ok, I am logged into the Linux machine and at a command prompt. In this example, we are going to create a very simple expect script to log into a Cisco router, that is pre-configured to allow a username and password only. After a sucessful login, we will immediately be in priviledged mode. If this is not the way your test device is setup, don&#8217;t worry &#8211; I will show you how to modify the script, following this example. The script itself contains many comments (lines preceded with the &#8216;#&#8217; character), which explains what the following line accomplishes.</p>
<p>First, let&#8217;s create the script by typing the following command:</p>
<pre>root@ubuntu:~/util# vi 1.exp</pre>
<p>Once in the vi editor, press &#8216;<strong>i</strong>&#8216; to insert characters and type or paste the following commands: Note: To try this on an actual device, replace the IP address shown below (192.168.1.1) with a valid device address in your network. Also adjust the username and password (admin/cisco) as necessary for your environment.</p>
<pre>
#!/usr/bin/expect -f
#Tells interpreter where the expect program is located.  This may need adjusting according to
#your specific environment.  Type ' which expect ' (without quotes) at a command prompt
#to find where it is located on your system and adjust the following line accordingly.
#
#
#Use the built in telnet program to connect to an IP and port number
spawn telnet 192.168.1.1 23
#
#The first thing we should see is a User Name prompt
expect "User Name:"
#
#Send a valid username to the device
send "admin\n"
#
#The next thing we should see is a Password prompt
expect "Password:"
#
#Send a vaild password to the device
send "cisco\n"
#
#If the device automatically assigns us to a priviledged level after successful logon,
#then we should be at an enable prompt
expect "#"
#
#Tell the device to turn off paging
send "term length 0\n"
#
#After each command issued at the enable prompt, we expect the enable prompt again to tell us the
#command has executed and is ready for another command
expect "#"
#
#Show us the running configuration on the screen
send "show run\n"
#
#The interact command is part of the expect script, which tells the script to hand off control to the user.
#This will allow you to continue to stay in the device for issuing future commands, instead of just closing
#the session after finishing running all the commands.
interact</pre>
<p>Once these commands have been typed, press ESC key to exit out of insert mode. Then press &#8216;<strong>:wq</strong>&#8216; to write to the file 1.exp and exit the vi editor.</p>
<p style="text-align: center;"></p>
<p>If you test device requires an enable password, use this script instead (with the previous mentioned modifications):</p>
<pre>
#!/usr/bin/expect -f
#Tells interpreter where the expect program is located.  This may need adjusting according to
#your specific environment.  Type ' which expect ' (without quotes) at a command prompt
#to find where it is located on your system and adjust the following line accordingly.
#
#
#Use the built in telnet program to connect to an IP and port number
spawn telnet 192.168.1.1 23
#
#The first thing we should see is a User Name prompt
expect "User Name:"
#
#Send a valid username to the device
send "admin\n"
#
#The next thing we should see is a Password prompt
expect "Password:"
#
#Send a vaild password to the device
send "cisco\n"
#
#If the device requires us to enter an enable password, then we should currently be at a
#non-privileged prompt
expect "&gt;"
#
#Send the command to enter enable mode
send "enable\n"
#
#We should see a prompt asking for the enable password
expect "Password:"
#
#Send the enable password
send "supercisco\n"
#We should be in privileged mode now reflected by a hash prompt
expect "#"
#
#Tell the device to turn off paging
send "term length 0\n"
#
#After each command issued at the enable prompt, we expect the enable prompt again to tell us the
#command has executed and is ready for another command
expect "#"
#
#Show us the running configuration on the screen
send "show run\n"
#
#The interact command is part of the expect script, which tells the script to hand off control to the user.
#This will allow you to continue to stay in the device for issuing future commands, instead of just closing
#the session after finishing running all the commands.
interact</pre>
<p>Now, it is time to run our test script:</p>
<pre>root@ubuntu:~/util# expect 1.exp</pre>
<p>Here is a sample output:</p>
<pre>root@ubuntu:~/util# expect 1.exp
spawn telnet 192.168.1.1 23
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.

User Name:admin
Password:*****

Router#term length 0
Router#show run
Building configuration...

Current configuration : 3832 bytes
!
version 12.3
service timestamps debug uptime
service timestamps log uptime
service password-encryption
!
hostname Router
!
boot-start-marker
boot-end-marker
!
!
ip subnet-zero
!
!
ip cef
no ip domain lookup
!
!
!
!
!
!
!
!
!
!
!
!
!
username admin privilege 15 secret ****
!
!
!
!
!
!
!
interface FastEthernet0/0
 ip address 192.168.1.1 255.255.255.0
 duplex auto
 speed auto
!
interface Serial0/0
 no ip address
 shutdown
!
interface FastEthernet0/1
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface Serial0/1
 no ip address
 shutdown
!
no ip http server
no ip http secure-server
ip classless
!
!
!
!
!
!
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
!
!
end

Router#</pre>
<p>At the end of the script, we are left at the command prompt, so that we may continue interacting with the router.</p>
<p>In the next article, we will take the script to Version 2 (and beyond). Future enhancements include creating a separate file for all the devices and credentials, ability to use telnet or ssh for the connection, copy configurations from different vendors hardware.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xpresslearn.com/networking/networkmanagement/backup-network-configurations-with-free-tools/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Unidentified network</title>
		<link>http://www.xpresslearn.com/networking/networkgeneral/windows-unidentified-network</link>
		<comments>http://www.xpresslearn.com/networking/networkgeneral/windows-unidentified-network#comments</comments>
		<pubDate>Fri, 25 Feb 2011 22:23:18 +0000</pubDate>
		<dc:creator>Scott Pilkinton</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Windows Unidentified network]]></category>

		<guid isPermaLink="false">http://www.xpresslearn.com/?p=660</guid>
		<description><![CDATA[The article will explain why interfaces show up in the Network and Sharing Center of Windows Vista/7/2008 as an Unidentified network and how to turn off the discovery function, so that they no longer are automatically classified.  By turning off discover for each interface (as needed), you can eliminate the Unidentified Network all together.]]></description>
			<content:encoded><![CDATA[<p>There are things that will bug me from time to time when setting up a new system in regards to how software is implemented.  I&#8217;m sure this is common for other people in similar situations, most of the time it is just easier to ignore whatever the issue is &#8211; especially if it is just &#8216;cosmetic&#8217;.  This particular issue falls somewhere in the middle of cosmetic and possibly problematic, but I would prefer it to be gone, nonetheless&#8230;</p>
<p>The issue I&#8217;m speaking about is one regarding Windows Vista/7/2008 Server and the &#8216;Unidentified network&#8217;.  Before we dive into fixing the unidentified network categorization, a little explanation on how the process works:  The Windows Operating System wants to classify each active network interface, in order to determine what category to place the adapter in.  Inside the Control Panel, click on Network and Internet, then click View network status and tasks.  In the default view, this should bring you to the &#8216;Network and Sharing Center&#8217;.  Inside the section &#8216;View your active networks&#8217;, each connected network interface will be displayed.</p>
<p>Each network interface is then categorized as either Public, Private, or Domain.  Once the interface is automatically assigned to one of these categories, certain rules are applied.  The rules are related to the Windows Firewall, Network Discovery, and Network Sharing.</p>
<p><span id="more-660"></span></p>
<p>Let&#8217;s exclude the Domain category for a moment and talk about Public and Private networks.  Usually when a new network interface is activated (this includes Wireless networks) a window will appear asking you if the network is part of a public or private network.  The Public option is intended to be just that: public areas, which would typically be locations outside of your &#8216;trust zone&#8217;.  With Public networks, you get the most secure settings applied to that interface, which include Firewall, Network Discovery and Sharing settings.  Private networks will get less secure options applied, but usually allow more plug and play functionality like: Windows Firewall being less restrictive, Sharing allowed by default, etc.</p>
<p>Quite honestly, in a company network &#8211; most of the time you don&#8217;t necessarily want all this automatic stuff to happen.  Us network people like to think we are smart enough to know what is best for our systems and don&#8217;t want Windows (or anything else for that matter) to try and figure it out for us.  Nonetheless, most all default software installations and factory hardware configurations are geared toward the automatic, I know what is best for you configuration.</p>
<p>In this specific example, I have a crossover connection between two Windows 2008 servers that will be used with Microsoft Clustering Services.  With this connection, I have the least amount of properties assigned to the interface.  All I need is and IP address and subnet mask.  There won&#8217;t be any default gateway, DNS servers, etc &#8211; just enough to communicate over a point to point connection with another host.  Another common example of when you would have this same type configuration is when you have a secondary adapter in a machine that is communicating to device on the same subnet and no routing is involved, such as an interface being used for iSCSI storage connection.  Even though this is a common enough configuration in the business world, Windows can&#8217;t seem to figure out what to do with it.  So, what happens is the interface becomes part of an &#8216;Unidentified Network&#8217; and takes on the properties of the Public network settings (strict firewall, no sharing, etc.).</p>
<p>The fix to this is to tell Windows not to try and automatically determine what type of connection it is, but that it is an endpoint device and is not a connection to a true external network.  Consequently, Windows will then ignore the endpoint device when Windows identifies networks. The Network Awareness APIs indicate that the device does not connect the computer to a network. For end users in this situation, the Network and Sharing Center and the network icon in the notification area do not show the NDIS endpoint device as connected. However, the connection is shown in the Network Connections Folder.</p>
<p>So, for every interface that you don&#8217;t want showing up as an &#8216;Unidentified network&#8217; like the example below:</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/01.jpg"><img class="aligncenter size-full wp-image-662" title="Windows Unidentified network" src="http://www.xpresslearn.com/wp-content/uploads/01.jpg" alt="" width="501" height="91" /></a></p>
<p>all you have to do is the following:</p>
<p>At a command prompt, run: <strong><em>ipconfig /all</em></strong></p>
<p>Find the interface that is showing up as Unidentifed, which in this case has been renamed to Crossover:</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/2.jpg"><img class="aligncenter size-full wp-image-663" title="IPconfig output" src="http://www.xpresslearn.com/wp-content/uploads/2.jpg" alt="" width="635" height="159" /></a></p>
<p>and make note of the Physical Address (The image above has the mac address erased).</p>
<p>Next, invoke powershell at the command line.  Once that the PS command prompt, issue the command: <strong><em>get-wmiobject win32_networkadapter</em></strong> as shown below:</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/3.jpg"><img class="aligncenter size-full wp-image-664" title="Powershell Get Network adapter properties" src="http://www.xpresslearn.com/wp-content/uploads/3.jpg" alt="" width="512" height="70" /></a></p>
<p>Once the powershell output is displayed, match up the Physical Address obtained from the previous ipconfig output with the MACAddress field of the Powershell output.  The value that needs to be obtained is the DeviceID.  In our example, the DeviceID is: 10 (shown below)</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/4.jpg"><img class="aligncenter size-full wp-image-666" title="Powershell Network Adapter output" src="http://www.xpresslearn.com/wp-content/uploads/4.jpg" alt="" width="625" height="100" /></a></p>
<p>Now that the proper DeviceID has been obtained, open regedit and browse to the following key:</p>
<p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}</p>
<p>Underneath the above key, there are numbers listed for each interface on the system.  Click on the number that matches the previously obtained DeviceID.</p>
<p>Add the following new DWORD Key:</p>
<p><strong>*NdisDeviceType</strong> (be sure to include the * at the begininng)</p>
<p>Then edit the newly created key *NdisDeviceType and set the value to <strong>1</strong></p>
<p>Close regedit and reboot the machine.</p>
<p>After the machine comes back up, the adapter will no longer appear in the Network and Sharing Center.  However, if you click the Adapter settings link which lists all the network connections, you will see the interface.  Only this time, there will be no mention of an Identified network!</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/6.jpg"><img class="aligncenter size-full wp-image-667" title="Adapter displayed in Network Connections" src="http://www.xpresslearn.com/wp-content/uploads/6.jpg" alt="" width="435" height="149" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xpresslearn.com/networking/networkgeneral/windows-unidentified-network/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Deploy syslog agent for centralized Windows logging</title>
		<link>http://www.xpresslearn.com/tools/windows-tools/deploy-syslog-agent-for-centralized-windows-logging</link>
		<comments>http://www.xpresslearn.com/tools/windows-tools/deploy-syslog-agent-for-centralized-windows-logging#comments</comments>
		<pubDate>Wed, 26 Jan 2011 15:47:05 +0000</pubDate>
		<dc:creator>Scott Pilkinton</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Eventlog]]></category>
		<category><![CDATA[Eventlog to Syslog]]></category>
		<category><![CDATA[syslog]]></category>

		<guid isPermaLink="false">http://www.xpresslearn.com/?p=612</guid>
		<description><![CDATA[An option for centralizing Windows logs is to install an agent on each machine that will forward Windows event logs to a centralized syslog server as they happen.  Evtsys is a very small and efficient client that will perform this task.  This article contains the necessary steps to deploy this client from a centralized location.]]></description>
			<content:encoded><![CDATA[<p>Eventlog to Syslog, originally developed by Curtis Smith at <a href="https://engineering.purdue.edu/ECN/Resources/Documents/UNIX/evtsys/" target="_blank">Purdue University</a>, is a very small and efficient program to take Windows event logs and forward them as syslog messages to a syslog server.  It&#8217;s last modification was done by Sherwin Faria of Rochester Institute of Technology.  The current version at the time of this writing is 4.4 which was revised November 29, 2010.  The project is now available to all and is hosted at <a href="http://code.google.com/p/eventlog-to-syslog/">code.google.com</a>.</p>
<p>Since there is both a 32-bit and a 64-bit version of this service, I have put together a little deployment script that determines the target architecture and then deploys the appropriate client.</p>
<p><span id="more-612"></span></p>
<p></p>
<p>In it&#8217;s current form, the deployment script depends on the following components to accomplish this task:</p>
<ul>
<li>Eventlog to Syslog executable and library</li>
<li>systeminfo which is a command line program that is installed on Windows XP/2003 machines and above.  Note: The systeminfo exe only has to be run from the central computer you are deploying from.</li>
<li>psexec which is a Sysinternals utility and is obtainable through Microsoft&#8217;s website</li>
</ul>
<p>There are three scripts: one to deploy the 32bit agent, one for the 64bit agent, and the other is to determine if the target is 32 or 64 bit.</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/evtsysdir.jpg"><img class="aligncenter size-full wp-image-634" title="Evtsys deployment directory listing" src="http://www.xpresslearn.com/wp-content/uploads/evtsysdir.jpg" alt="" width="384" height="167" /></a></p>
<p>The instEvtsys.cmd is executed from the source machine that is performing the deployment.  The following is the contents of the instEvtsys script:</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/evtsys01.jpg"><img class="aligncenter size-full wp-image-635" title="Evtsys deployment script" src="http://www.xpresslearn.com/wp-content/uploads/evtsys01.jpg" alt="" width="445" height="238" /></a></p>
<p>Once the determination has been made for the destination platform architecture, the appropriate deployment script is called.  Here is a look at the inst64bit.cmd script:</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/evtsys02.jpg"><img class="aligncenter size-full wp-image-641" title="Deployment script for evtsys.exe" src="http://www.xpresslearn.com/wp-content/uploads/evtsys02.jpg" alt="" width="578" height="77" /></a></p>
<p>The previous script copies the two needed files, evtsys.exe and evtsys.dll to the destination System32 directory.  The evtsys executable is then run on the target machine via psexec using the switch to register it as a service and configure the IP address of the syslog server, where the messages will be sent.  The final command will again use psexec and issue the &#8216;net start&#8217; command for starting the evtsys service.</p>
<p>The following zip file contains all the scripts needed for deployment.  In addition to the contents of this file, you will need to download the evtsys executables and drop them in the appropriate deployment directories.</p>
<p><a href="http://www.xpresslearn.com/wp-content/uploads/Evtsys.zip">Evtsys deployment scripts</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xpresslearn.com/tools/windows-tools/deploy-syslog-agent-for-centralized-windows-logging/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Network Design Series I</title>
		<link>http://www.xpresslearn.com/networking/design/network-design-series-i</link>
		<comments>http://www.xpresslearn.com/networking/design/network-design-series-i#comments</comments>
		<pubDate>Tue, 07 Dec 2010 03:35:10 +0000</pubDate>
		<dc:creator>Scott Pilkinton</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[network design]]></category>

		<guid isPermaLink="false">http://www.xpresslearn.com/?p=544</guid>
		<description><![CDATA[Part I of the network design series for the fictitious company qwikPolicy, an insurance company that is being built from the ground up.]]></description>
			<content:encoded><![CDATA[<p>The intent of this series is to carry you through an entire network design.  By creating a scenario and documenting the process of designing a network for the fictitious company, my hope is to share some knowledge in the process.</p>
<h3>Let&#8217;s get started:</h3>
<p>An insurance company in TN named qwikPolicy has decided to open their doors for business and has secured the services to design a network for their business.  They have provided a business plan that includes where and how the business will be operated.</p>
<p><span id="more-544"></span></p>
<p style="text-align: center;"></p>
<p><strong>Below are key points of information needed for designing the network.</strong></p>
<ul>
<li>qwikPolicy will operate in all 95 counties in Tennessee, with a physical office located in each county.</li>
<li>Three of the county offices will function as a claims center with one in east, middle, and west Tennessee.</li>
<li>Each county office will average 5 employees, except for the offices that also have a claims center.</li>
<li>The claims center offices will have an average of 30 employees each and another 10 employees each serving as claims agents, who will all work out of home based offices.</li>
<li>The company will provide services via the internet for consumers to create quotes, report claims, and to communicate with insurance agents.</li>
<li>The Engineer is responsible for designing all networking and phone needs.</li>
<li>Data Center space will be allocated in Nashville and Knoxville</li>
<li>The I.T. Infrastructure budget has been pre-allocated and is set at $1,000,000.00</li>
</ul>
<p><strong>The internal services needed for day to day operations are:</strong></p>
<ul>
<li>File and Print Services.  Centralized shared directories are needed for different working groups and each person will have a home directory that will provide storage space for automated user profile backups.</li>
<li>The main suite of insurance applications are web based and will be accessed internally using a browser.</li>
<li>Email will be provided using a standard email client</li>
<li>Internet access from each workstation</li>
</ul>
<p>In the next article we will start laying out the WAN and the two data center areas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xpresslearn.com/networking/design/network-design-series-i/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Network Design Series II</title>
		<link>http://www.xpresslearn.com/networking/design/network-design-series-ii</link>
		<comments>http://www.xpresslearn.com/networking/design/network-design-series-ii#comments</comments>
		<pubDate>Thu, 01 Jul 2010 18:52:51 +0000</pubDate>
		<dc:creator>Scott Pilkinton</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://www.xpresslearn.com/?p=571</guid>
		<description><![CDATA[Part II of the network design series for the fictitious company qwikPolicy, an insurance company that is being built from the ground up.]]></description>
			<content:encoded><![CDATA[<p>In the previous article, we had some general parameters defined, which will be used to design the network around.  The first thing we will do is figure out our WAN connectivity.</p>
<p><strong>WAN</strong></p>
<p>After reviewing multiple telecom provider offerings, the determination is made to enter into an agreement with bellX.   bellX will provide a private MPLS cloud for the wide area network requirements.  Ninety two offices will have T1 access into the bellX MPLS cloud with a 512kb port speed.  Memphis, which is the only claims combination office without datacenter space, will have a full 1.5mb port speed.  The other two combination office/datacenters will have T3 access, with the full 45mb port speed.</p>
<p>With a decision made on how the offices will be connected together, now we can start working on the overall design.  Here are a few points that need to be considered during the design phase.</p>
<ul>
<li>Redundant internet connections</li>
<li>Redundant wide area connectivity between the two datacenters</li>
<li>Centralized phone system, so there is minimal phone infrastructure to manage in each office</li>
<li>Redundancy in the Phone Switch &amp; Call Center infrastructure</li>
<li>Redundant internet DMZ for highly available public web sites</li>
</ul>
<p>The first thing needed is to sketch out a high level design drawing.  Visio can be used to quickly sketch out a high level drawing.  It can also be used later to expand a high level drawing into a detailed design drawing.  The following is a high level diagram of the datacenter networking:</p>
<p style="text-align: center;"><a href="http://www.xpresslearn.com/wp-content/uploads/qwikPolicy.png"><img class="size-large wp-image-586 alignnone" title="qwikPolicy Data Center networks" src="http://www.xpresslearn.com/wp-content/uploads/qwikPolicy-1024x439.png" alt="" width="754" height="323" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xpresslearn.com/networking/design/network-design-series-ii/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

