<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Just Nudge</title>
	<atom:link href="http://www.justnudge.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.justnudge.com</link>
	<description>Making technology easier</description>
	<lastBuildDate>Wed, 20 Feb 2013 03:15:37 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Setting up a PXE boot server with Centos and Dnsmasq</title>
		<link>http://www.justnudge.com/2013/02/setting-up-a-pxe-boot-server-with-centos-and-dnsmasq/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=setting-up-a-pxe-boot-server-with-centos-and-dnsmasq</link>
		<comments>http://www.justnudge.com/2013/02/setting-up-a-pxe-boot-server-with-centos-and-dnsmasq/#comments</comments>
		<pubDate>Wed, 20 Feb 2013 03:14:32 +0000</pubDate>
		<dc:creator>Michael Ransley</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.justnudge.com/?p=251</guid>
		<description><![CDATA[I am building a lot of temporary hosts at the moment and being able to install them as quickly as possible is always good.  So I have decided to install a PXE server that will allow my installations to install without human intervention. To setup this you need an existing host that contains a mirror [...]]]></description>
				<content:encoded><![CDATA[<p>I am building a lot of temporary hosts at the moment and being able to install them as quickly as possible is always good.  So I have decided to install a PXE server that will allow my installations to install without human intervention.</p>
<p>To setup this you need an existing host that contains a mirror of Centos (you can get away without a mirror but syncing a mirror is so much faster than going out onto the internet to download all the necessary patches that may be required).  If you do setup a mirror allocate about 150Gb of Diskspace to the mirror and sync it every evening using rsync.</p>
<p>On the host execute the following command:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">yum install</span> syslinux tftp tftp-server <span style="color: #660033;">-y</span></pre></td></tr></table></div>

<p>Once the server is installed execute the following command:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">chkconfig xinetd on
service xinetd restart</pre></td></tr></table></div>

<p>To copy the files to enable the clients to boot execute the following commands:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>tftpboot
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>syslinux<span style="color: #000000; font-weight: bold;">/</span>menu.c32 .
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>syslinux<span style="color: #000000; font-weight: bold;">/</span>pxelinux.0 .
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>mirror<span style="color: #000000; font-weight: bold;">/</span>centos<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">6.3</span><span style="color: #000000; font-weight: bold;">/</span>os<span style="color: #000000; font-weight: bold;">/</span>x86_64<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>pxeboot<span style="color: #000000; font-weight: bold;">/</span>initrd.img .
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>mirror<span style="color: #000000; font-weight: bold;">/</span>centos<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">6.3</span><span style="color: #000000; font-weight: bold;">/</span>os<span style="color: #000000; font-weight: bold;">/</span>x86_64<span style="color: #000000; font-weight: bold;">/</span>images<span style="color: #000000; font-weight: bold;">/</span>pxeboot<span style="color: #000000; font-weight: bold;">/</span>vmlinuz .</pre></td></tr></table></div>

<p><b>NOTE:</b> TFTP does not seem to work with symlinks so the files need to be copied.</p>
<p>When the server boots it will attempt to use it&#8217;s MAC address to determine what boot configuration it would use and will fall back onto a configration called &#8220;default&#8221;:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>tftpboot<span style="color: #000000; font-weight: bold;">/</span>pxelinux.cfg
<span style="color: #c20cb9; font-weight: bold;">vi</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>tftpboot<span style="color: #000000; font-weight: bold;">/</span>pxelinux.cfg<span style="color: #000000; font-weight: bold;">/</span>default</pre></td></tr></table></div>

<p>Enter the following information into the file and save it:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">timeout <span style="color: #000000;">100</span>
default menu.c32
&nbsp;
menu title <span style="color: #666666; font-style: italic;">########## JustNudge Boot Menu ##########</span>
label <span style="color: #000000;">1</span>
   menu label ^<span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> Install CentOS <span style="color: #000000;">6</span>
   kernel vmlinuz
   append <span style="color: #007800;">initrd</span>=initrd.img <span style="color: #007800;">devfs</span>=nomount <span style="color: #007800;">ks</span>=http:<span style="color: #000000; font-weight: bold;">//</span>nas.justnudge.com<span style="color: #000000; font-weight: bold;">/</span>centos6.ks
&nbsp;
label <span style="color: #000000;">2</span>
   menu label ^<span style="color: #000000;">2</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> Boot from <span style="color: #7a0874; font-weight: bold;">local</span> drive
   localboot</pre></td></tr></table></div>

<p>The above example will automatically install Centos using a kickstart file that configures it as per our build standards.</p>
<p>To ensure that the above is picked up, add the following line to your dnsmasq configuration file:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">dhcp-boot=pxelinux.0,nas.justnudge.com,192.168.1.50</pre></td></tr></table></div>

<p>Where the PXE server is nas.justnudge.com with an IP address of 192.168.1.50.</p>
<p>When started the VM will look like the following:</p>
<p><a href="http://www.justnudge.com/wp-content/uploads/2013/02/pxe.png" rel="lightbox[251]"><img src="http://www.justnudge.com/wp-content/uploads/2013/02/pxe-300x209.png" alt="pxe" width="300" height="209" class="alignnone size-medium wp-image-256" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.justnudge.com/2013/02/setting-up-a-pxe-boot-server-with-centos-and-dnsmasq/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using the Google authenticator with Centos 6</title>
		<link>http://www.justnudge.com/2013/02/using-the-google-authenticator-with-centos-6/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=using-the-google-authenticator-with-centos-6</link>
		<comments>http://www.justnudge.com/2013/02/using-the-google-authenticator-with-centos-6/#comments</comments>
		<pubDate>Tue, 19 Feb 2013 22:42:19 +0000</pubDate>
		<dc:creator>Michael Ransley</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.justnudge.com/?p=223</guid>
		<description><![CDATA[We have been doing some work recently with Amazon Web Services and noticed that it now supports using Google Authenticator for two factor authentication.  For those that don&#8217;t know, the Google Authenticator is an application that you install onto your Android or iPhone which acts like an RSA token, providing a random number that changes [...]]]></description>
				<content:encoded><![CDATA[<p>We have been doing some work recently with Amazon Web Services and noticed that it now supports using <a title="Google Authenticator" href="http://support.google.com/accounts/bin/answer.py?hl=en&amp;answer=1066447">Google Authenticator</a> for two factor authentication.  For those that don&#8217;t know, the Google Authenticator is an application that you install onto your Android or iPhone which acts like an RSA token, providing a random number that changes every 30 seconds.</p>
<p>When I saw that Amazon had integrated it into AWS it got me thinking that we could use it to secure some of our perimeter Centos hosts using an SSH PAM module.  A little bit of searching showed that this was possible and this post details how it was done.</p>
<h3>Installation</h3>
<p>Install Centos 6.2.</p>
<p>Run &#8220;yum install make pam-devel -y&#8221;</p>
<p>Download the source for the PAM module <a href="https://code.google.com/p/google-authenticator/downloads/list">here</a>.</p>
<p>Unpack the installation running the following command:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>JNC6NET0004 <span style="color: #c20cb9; font-weight: bold;">install</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># tar xfvj libpam-google-authenticator-1.0-source.tar.bz2</span>
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>base32.c
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>demo.c
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>google-authenticator.c
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>hmac.c
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>pam_google_authenticator.c
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>pam_google_authenticator_unittest.c
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>sha1.c
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>base32.h
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>hmac.h
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>sha1.h
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>totp.html
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>Makefile
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>FILEFORMAT
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>README
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>utc-time<span style="color: #000000; font-weight: bold;">/</span>
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>utc-time<span style="color: #000000; font-weight: bold;">/</span>app.yaml
libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #000000; font-weight: bold;">/</span>utc-time<span style="color: #000000; font-weight: bold;">/</span>utc-time.py</pre></td></tr></table></div>

<p>Change to the extracted directory and execute the command &#8220;make install&#8221;:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>JNC6NET0004 libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># make install</span>
<span style="color: #c20cb9; font-weight: bold;">gcc</span> <span style="color: #660033;">--std</span>=gnu99 <span style="color: #660033;">-Wall</span> <span style="color: #660033;">-O2</span> <span style="color: #660033;">-g</span> <span style="color: #660033;">-fPIC</span> <span style="color: #660033;">-c</span>  <span style="color: #660033;">-fvisibility</span>=hidden  <span style="color: #660033;">-o</span> pam_google_authenticator.o pam_google_authenticator.c
<span style="color: #c20cb9; font-weight: bold;">gcc</span> <span style="color: #660033;">-shared</span> <span style="color: #660033;">-g</span>   <span style="color: #660033;">-o</span> pam_google_authenticator.so pam_google_authenticator.o base32.o hmac.o sha1.o <span style="color: #660033;">-lpam</span>
<span style="color: #c20cb9; font-weight: bold;">gcc</span> <span style="color: #660033;">--std</span>=gnu99 <span style="color: #660033;">-Wall</span> <span style="color: #660033;">-O2</span> <span style="color: #660033;">-g</span> <span style="color: #660033;">-fPIC</span> <span style="color: #660033;">-c</span>  <span style="color: #660033;">-fvisibility</span>=hidden  <span style="color: #660033;">-o</span> demo.o demo.c
<span style="color: #c20cb9; font-weight: bold;">gcc</span> <span style="color: #660033;">-DDEMO</span> <span style="color: #660033;">--std</span>=gnu99 <span style="color: #660033;">-Wall</span> <span style="color: #660033;">-O2</span> <span style="color: #660033;">-g</span> <span style="color: #660033;">-fPIC</span> <span style="color: #660033;">-c</span>  <span style="color: #660033;">-fvisibility</span>=hidden  <span style="color: #660033;">-o</span> pam_google_authenticator_demo.o pam_google_authenticator.c
<span style="color: #c20cb9; font-weight: bold;">gcc</span> <span style="color: #660033;">-g</span>   <span style="color: #660033;">-rdynamic</span> <span style="color: #660033;">-o</span> demo demo.o pam_google_authenticator_demo.o base32.o hmac.o sha1.o  <span style="color: #660033;">-ldl</span>
<span style="color: #c20cb9; font-weight: bold;">gcc</span> <span style="color: #660033;">-DTESTING</span> <span style="color: #660033;">--std</span>=gnu99 <span style="color: #660033;">-Wall</span> <span style="color: #660033;">-O2</span> <span style="color: #660033;">-g</span> <span style="color: #660033;">-fPIC</span> <span style="color: #660033;">-c</span>  <span style="color: #660033;">-fvisibility</span>=hidden        \
              <span style="color: #660033;">-o</span> pam_google_authenticator_testing.o pam_google_authenticator.c
<span style="color: #c20cb9; font-weight: bold;">gcc</span> <span style="color: #660033;">-shared</span> <span style="color: #660033;">-g</span>   <span style="color: #660033;">-o</span> pam_google_authenticator_testing.so pam_google_authenticator_testing.o base32.o hmac.o sha1.o <span style="color: #660033;">-lpam</span>
<span style="color: #c20cb9; font-weight: bold;">gcc</span> <span style="color: #660033;">--std</span>=gnu99 <span style="color: #660033;">-Wall</span> <span style="color: #660033;">-O2</span> <span style="color: #660033;">-g</span> <span style="color: #660033;">-fPIC</span> <span style="color: #660033;">-c</span>  <span style="color: #660033;">-fvisibility</span>=hidden  <span style="color: #660033;">-o</span> pam_google_authenticator_unittest.o pam_google_authenticator_unittest.c
<span style="color: #c20cb9; font-weight: bold;">gcc</span> <span style="color: #660033;">-g</span>   <span style="color: #660033;">-rdynamic</span> <span style="color: #660033;">-o</span> pam_google_authenticator_unittest pam_google_authenticator_unittest.o base32.o hmac.o sha1.o <span style="color: #660033;">-lc</span>  <span style="color: #660033;">-ldl</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> pam_google_authenticator.so <span style="color: #000000; font-weight: bold;">/</span>lib64<span style="color: #000000; font-weight: bold;">/</span>security
<span style="color: #c20cb9; font-weight: bold;">cp</span> google-authenticator <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>JNC6NET0004 libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;">#</span></pre></td></tr></table></div>

<h3>Installing the PAM module</h3>
<p>Backup the file &#8220;/etc/pam.d/sshd&#8221; and add the following lines to it:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">auth required pam_google_authenticator.so</pre></td></tr></table></div>

<p>Backup the file &#8220;/etc/ssh/sshd_config&#8221; and ensure the following lines are present:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">PermitRootLogin no
ChallengeResponseAuthentication <span style="color: #c20cb9; font-weight: bold;">yes</span></pre></td></tr></table></div>

<p>Once these changes have been made restart SSH by executing the following command:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">service sshd restart</pre></td></tr></table></div>

<h3>Setting up the key for a user</h3>
<p>su to the user that you want generate the token for:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>JNC6NET0004 libpam-google-authenticator-<span style="color: #000000;">1.0</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># su - mransley</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>mransley<span style="color: #000000; font-weight: bold;">@</span>JNC6NET0004 ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$</pre></td></tr></table></div>

<p>Execute the following commands:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>mransley<span style="color: #000000; font-weight: bold;">@</span>JNC6NET0004 ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ google-authenticator
&nbsp;
Do you want authentication tokens to be time-based <span style="color: #7a0874; font-weight: bold;">&#40;</span>y<span style="color: #000000; font-weight: bold;">/</span>n<span style="color: #7a0874; font-weight: bold;">&#41;</span> y
https:<span style="color: #000000; font-weight: bold;">//</span>www.google.com<span style="color: #000000; font-weight: bold;">/</span>chart?<span style="color: #007800;">chs</span>=200x200<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">chld</span>=M<span style="color: #000000; font-weight: bold;">|</span><span style="color: #000000;">0</span><span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">cht</span>=qr<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #007800;">chl</span>=otpauth:<span style="color: #000000; font-weight: bold;">//</span>totp<span style="color: #000000; font-weight: bold;">/</span>mransley<span style="color: #000000; font-weight: bold;">@</span>JNC6NET0004<span style="color: #000000; font-weight: bold;">%</span>3Fsecret<span style="color: #000000; font-weight: bold;">%</span>3DXXXXXX
Your new secret key is: XXXXXXXXXXX
Your verification code is XXXXXXX
Your emergency scratch codes are:
  XXXXXXXX
  XXXXXXXX
  XXXXXXXX
  XXXXXXXX
  XXXXXXXX
&nbsp;
Do you want me to update your <span style="color: #ff0000;">&quot;/home/mransley/.google_authenticator&quot;</span> <span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>y<span style="color: #000000; font-weight: bold;">/</span>n<span style="color: #7a0874; font-weight: bold;">&#41;</span> y
&nbsp;
Do you want to disallow multiple uses of the same authentication
token? This restricts you to one <span style="color: #c20cb9; font-weight: bold;">login</span> about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks <span style="color: #7a0874; font-weight: bold;">&#40;</span>y<span style="color: #000000; font-weight: bold;">/</span>n<span style="color: #7a0874; font-weight: bold;">&#41;</span> y
&nbsp;
By default, tokens are good <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #000000;">30</span> seconds and <span style="color: #000000; font-weight: bold;">in</span> order to compensate <span style="color: #000000; font-weight: bold;">for</span>
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
<span style="color: #000000; font-weight: bold;">time</span> synchronization, you can increase the window from its default
<span style="color: #c20cb9; font-weight: bold;">size</span> of <span style="color: #000000;">1</span>:30min to about 4min. Do you want to <span style="color: #000000; font-weight: bold;">do</span> so <span style="color: #7a0874; font-weight: bold;">&#40;</span>y<span style="color: #000000; font-weight: bold;">/</span>n<span style="color: #7a0874; font-weight: bold;">&#41;</span> y
&nbsp;
If the computer that you are logging into is not hardened against brute-force
<span style="color: #c20cb9; font-weight: bold;">login</span> attempts, you can <span style="color: #7a0874; font-weight: bold;">enable</span> rate-limiting <span style="color: #000000; font-weight: bold;">for</span> the authentication module.
By default, this limits attackers to no <span style="color: #c20cb9; font-weight: bold;">more</span> than <span style="color: #000000;">3</span> <span style="color: #c20cb9; font-weight: bold;">login</span> attempts every 30s.
Do you want to <span style="color: #7a0874; font-weight: bold;">enable</span> rate-limiting <span style="color: #7a0874; font-weight: bold;">&#40;</span>y<span style="color: #000000; font-weight: bold;">/</span>n<span style="color: #7a0874; font-weight: bold;">&#41;</span> y
<span style="color: #7a0874; font-weight: bold;">&#91;</span>mransley<span style="color: #000000; font-weight: bold;">@</span>JNC6NET0004 ~<span style="color: #7a0874; font-weight: bold;">&#93;</span>$</pre></td></tr></table></div>

<p>You will notice above that it displayed a secret key and a URL, open the URL and it will show you 3D barcode.</p>
<p>Open the authenticator application and click the &#8220;Scan Barcode&#8221; button and scan the barcode from your screen.</p>
<p><a href="http://www.justnudge.com/wp-content/uploads/2013/02/photo-1.png" rel="lightbox[223]"><img class="alignnone size-medium wp-image-241" alt="GoogleAuthenticator1" src="http://www.justnudge.com/wp-content/uploads/2013/02/photo-1-169x300.png" width="169" height="300" /></a></p>
<p>You should then see the counter for the application.</p>
<p><a href="http://www.justnudge.com/wp-content/uploads/2013/02/GoogleAuthenticator.png" rel="lightbox[223]"><img class="alignnone size-medium wp-image-245" alt="GoogleAuthenticator" src="http://www.justnudge.com/wp-content/uploads/2013/02/GoogleAuthenticator-169x300.png" width="169" height="300" /></a></p>
<h3>Testing</h3>
<p>Open up a new SSH terminal (such as Putty) to the host and login as the user that created the token above.</p>
<p><span style="font-size: 13px; line-height: 19px;">Enter the verification code from the Google authenticator.</span></p>
<p>Enter the user&#8217;s password.</p>
<p>All being well you should be able to login as shown below:</p>
<p><a href="http://www.justnudge.com/wp-content/uploads/2013/02/putty.png" rel="lightbox[223]"><img class="alignnone size-medium wp-image-239" alt="putty" src="http://www.justnudge.com/wp-content/uploads/2013/02/putty-300x188.png" width="300" height="188" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.justnudge.com/2013/02/using-the-google-authenticator-with-centos-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My twitter was hacked!</title>
		<link>http://www.justnudge.com/2012/10/my-twitter-was-hacked/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=my-twitter-was-hacked</link>
		<comments>http://www.justnudge.com/2012/10/my-twitter-was-hacked/#comments</comments>
		<pubDate>Thu, 11 Oct 2012 13:03:59 +0000</pubDate>
		<dc:creator>Michael Ransley</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://www.justnudge.com/?p=218</guid>
		<description><![CDATA[A rather embarrassing incident happened about 2 hours ago where my twitter account sent a cryptic message to each of my followers directing them to view a video with them in it.  Given that most of my follows are on the other side of the planet I don&#8217;t believe that this harvested too many hits, but if [...]]]></description>
				<content:encoded><![CDATA[<p>A rather embarrassing incident happened about 2 hours ago where my twitter account sent a cryptic message to each of my followers directing them to view a video with them in it.  Given that most of my follows are on the other side of the planet I don&#8217;t believe that this harvested too many hits, but if you did respond to it then I recommend that you change your password.</p>
<p>Looking at this from a technical point of view, the link directs users to the following on facebook:</p>
<p><a href="http://www.justnudge.com/wp-content/uploads/2012/10/Capture.png" rel="lightbox[218]"><img class="alignnone size-medium wp-image-219" title="Facebook Hack" src="http://www.justnudge.com/wp-content/uploads/2012/10/Capture-300x186.png" alt="" width="300" height="186" /></a></p>
<p>Now unfortunately, this looks pretty legitimate except that if this was real the login would be an oauth login rather than prompting me for a username and password.  Also, the fact that is wrapped around facebook makes it look even more legitimate (the URL is a facebook URL).  When you submit the information into the page it sends the information to a server in France, although the hostname is owned by a lady in LA.</p>
<p>I have informed facebook that the application is inappropriate and hopefully it will be taken down shortly.  My suggestion is that facebook need to start looking at a vetting applications that are put onto their infrastructure to ensure that they are appropriate because this application clearly does things that are not nice (take a lesson from Apple here).</p>
<p>If you happened to receive a message from me, I do apologise &#8211; if you responded to it then please change your password as soon as possible or the same thing will happen to you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.justnudge.com/2012/10/my-twitter-was-hacked/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts on Android and iPhones</title>
		<link>http://www.justnudge.com/2012/09/thoughts-on-android-and-iphones/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=thoughts-on-android-and-iphones</link>
		<comments>http://www.justnudge.com/2012/09/thoughts-on-android-and-iphones/#comments</comments>
		<pubDate>Fri, 21 Sep 2012 04:22:18 +0000</pubDate>
		<dc:creator>Michael Ransley</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.justnudge.com/?p=213</guid>
		<description><![CDATA[Our company is in the process of changing phones as the contracts all expire at the same time. We currently use an iPhone 4 and a HTC Desire HD, which cost the same amount on contract as each other and both phones are about 2 years old. My thoughts after 2 years of use are: [...]]]></description>
				<content:encoded><![CDATA[<p>Our company is in the process of changing phones as the contracts all expire at the same time. We currently use an iPhone 4 and a HTC Desire HD, which cost the same amount on contract as each other and both phones are about 2 years old.</p>
<p>My thoughts after 2 years of use are:</p>
<ul>
<li>I like the home screen and the ability to drop widgets onto the home screen.  This would be a great addition to the iPhone but given all the patent issues that have been happening between Android and iPhone this may not happen.</li>
<li>The iPhone was a nicer device physically and appeared more durable, over time this has proven to be the case.  While both phones are showing signs of wear the Android is definitely suffering the most.</li>
<li>The Android store is not as good as the iTunes store, in two years I never purchased an application on Android, although I used a number of free ones and the kids showed no interest in using the phone.</li>
</ul>
<p>My main complaint with the Android is that the ecosystem is too fragmented.  This leads to the following problems:</p>
<ul>
<li>Applications sometimes don&#8217;t work on some phones.</li>
<li>Because there are so many devices the vendors are less likely to update previously released phones.  My Android phone is telling me that I have no patches available for it and it is running Gingerbread so I have missed out on both Ice cream sandwich and Jelly Bean.  I could patch the iPhone to iOS 6 right now if I wanted to.  Strangely, if they supported my previous phone better I would be more likely to have purchased another one.  But my experience with Android is that when you buy it then that is pretty much it, you won&#8217;t get many changes over the contract.</li>
<li>My Android came installed with a whole lot of junk applications that the phone company installed and I couldn&#8217;t get rid of, I could have rooted the device but I couldn&#8217;t really be bothered, but it was annoying none the less.</li>
</ul>
<p>The outcome of this is that I am going to upgrade both phones to be iPhone 5&#8242;s.  My feeling is that Apple is interested in me keeping a iPhone for a long time and releases their phones in such a way that I miss an upgrade each time but will still be able to use the latest software.  I shall probably not get an iPhone 5S (released this time next year) but will probably be in the market for an iPhone 6 (or whatever) in two years.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.justnudge.com/2012/09/thoughts-on-android-and-iphones/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Creating a self signed certificate for IBM HTTP Server</title>
		<link>http://www.justnudge.com/2012/09/creating-a-self-signed-certificate-for-ibm-http-server/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creating-a-self-signed-certificate-for-ibm-http-server</link>
		<comments>http://www.justnudge.com/2012/09/creating-a-self-signed-certificate-for-ibm-http-server/#comments</comments>
		<pubDate>Fri, 14 Sep 2012 12:24:15 +0000</pubDate>
		<dc:creator>Michael Ransley</dc:creator>
				<category><![CDATA[WebSphere Application Server]]></category>
		<category><![CDATA[ibm http server]]></category>
		<category><![CDATA[ikeyman]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[websphere application server]]></category>

		<guid isPermaLink="false">http://www.justnudge.com/?p=177</guid>
		<description><![CDATA[When building test environments it is often required that the server needs HTTPS configured (for example with Connections 4). Some organizations will use internal signers to create certificates that are trusted by corporate browsers, for those that don&#8217;t you can easily create a self signed certificate. This is how it is done. Log into the [...]]]></description>
				<content:encoded><![CDATA[<p>When building test environments it is often required that the server needs HTTPS configured (for example with Connections 4). Some organizations will use internal signers to create certificates that are trusted by corporate browsers, for those that don&#8217;t you can easily create a self signed certificate. This is how it is done.</p>
<p>Log into the machine and execute the following command:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>IBM<span style="color: #000000; font-weight: bold;">/</span>HTTPServer<span style="color: #000000; font-weight: bold;">/</span>bin
.<span style="color: #000000; font-weight: bold;">/</span>ikeyman</pre></td></tr></table></div>

<p>This displays the iKeyman utility:</p>
<p><a href="http://www.justnudge.com/wp-content/uploads/2012/09/ikeyman1.png" rel="lightbox[177]"><img class="wp-image-179 alignnone" title="iKeyman Screen" src="http://www.justnudge.com/wp-content/uploads/2012/09/ikeyman1-300x256.png" alt="" width="300" height="256" /></a></p>
<h3>Create the keystore</h3>
<p>Select &#8220;Key Database File&#8221; and then choose the &#8220;New&#8221; option and enter the details for the new keystore that you are creating.  I tend to save the keystores in the same directory as the httpd.conf file but the choice is yours:</p>
<p><a href="http://www.justnudge.com/wp-content/uploads/2012/09/ikeyman2.png" rel="lightbox[177]"><img class="alignnone size-medium wp-image-182" title="iKeyman save new keystore" src="http://www.justnudge.com/wp-content/uploads/2012/09/ikeyman2-300x86.png" alt="" width="300" height="86" /></a></p>
<p>When you click OK, you will be prompted for a password for the keystore.  Also, ensure that you save the stash of the keystore as we will use this configuration later.</p>
<h3>Create the key</h3>
<p>Once you have created the keystore, we can create our key to go into it.  This is done by selecting the &#8220;New Self Signed&#8221; button in the bottom right hand corner of the iKeyman window.  Click on this window displays the following information:</p>
<p><a href="http://www.justnudge.com/wp-content/uploads/2012/09/ikeyman3.png" rel="lightbox[177]"><img class="alignnone size-medium wp-image-184" title="Creating self signed certificate" src="http://www.justnudge.com/wp-content/uploads/2012/09/ikeyman3-300x290.png" alt="" width="300" height="290" /></a></p>
<p>You will note in the above image that only three fields have been filled out (the drop box values are defaults).  This is the common name (which defaults to the hostname of the machine), the key label (which I always make the same as the common name) and the validity (which I always make 10 years).  Clicking OK will create the certificate.  Once this is done you can exit iKeyman.</p>
<h3>Modify IBM HTTP Server</h3>
<p>We have created our keystore, now we need to add it into the IBM HTTP Server configuration.  This is done by adding the following information to the bottom of the httpd.conf file:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="xml" style="font-family:monospace;">LoadModule ibm_ssl_module modules/mod_ibm_ssl.so
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;IfModule</span> mod_ibm_ssl.c<span style="color: #000000; font-weight: bold;">&gt;</span></span>
  Listen 0.0.0.0:443
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;VirtualHost</span> *:443<span style="color: #000000; font-weight: bold;">&gt;</span></span>
    ServerName connection4.justnudge.com
    SSLEnable
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/VirtualHost<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/IfModule<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
SSLDisable
Keyfile &quot;/opt/IBM/HTTPServer/conf/key.kdb&quot;
SSLStashFile &quot;/opt/IBM/HTTPServer/conf/key.sth&quot;</pre></td></tr></table></div>

<p>&nbsp;</p>
<h3>Test</h3>
<p>Once this has been done, restart your HTTP Server and then test it in a browser.  In chrome you will get the red screen indicating that the certificate is untrusted:</p>
<p><a href="http://www.justnudge.com/wp-content/uploads/2012/09/ikeyman4.png" rel="lightbox[177]"><img class="alignnone size-medium wp-image-186" title="Untrusted certificate" src="http://www.justnudge.com/wp-content/uploads/2012/09/ikeyman4-300x209.png" alt="" width="300" height="209" /></a></p>
<p>And on examination of the certificate you can see it is the certificate that we created earlier:</p>
<p><a href="http://www.justnudge.com/wp-content/uploads/2012/09/ikeyman5.png" rel="lightbox[177]"><img class="alignnone size-medium wp-image-187" title="Certificate Information" src="http://www.justnudge.com/wp-content/uploads/2012/09/ikeyman5-241x300.png" alt="" width="241" height="300" /></a></p>
<p>Your IBM HTTP Server will now server &#8220;secure&#8221; content.  <strong>NOTE: </strong>You should not use this certificate for an external facing website.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.justnudge.com/2012/09/creating-a-self-signed-certificate-for-ibm-http-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding users to admin roles in IBM Connections 4</title>
		<link>http://www.justnudge.com/2012/09/adding-admin-roles-to-ibm-connections-4/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adding-admin-roles-to-ibm-connections-4</link>
		<comments>http://www.justnudge.com/2012/09/adding-admin-roles-to-ibm-connections-4/#comments</comments>
		<pubDate>Fri, 14 Sep 2012 11:29:09 +0000</pubDate>
		<dc:creator>Michael Ransley</dc:creator>
				<category><![CDATA[IBM Connections]]></category>
		<category><![CDATA[jython]]></category>
		<category><![CDATA[Lotus Connections]]></category>

		<guid isPermaLink="false">http://www.justnudge.com/?p=167</guid>
		<description><![CDATA[When setting up a new connections environment, one of the more mundane tasks is adding the administration roles in the various applications to your administration user.  By default in Connections 4 the adminstration user is added to a lot of the roles, for those that aren&#8217;t I have included the script below which will add [...]]]></description>
				<content:encoded><![CDATA[<p>When setting up a new connections environment, one of the more mundane tasks is adding the administration roles in the various applications to your administration user.  By default in Connections 4 the adminstration user is added to a lot of the roles, for those that aren&#8217;t I have included the script below which will add the admin user to the various roles:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="python" style="font-family:monospace;">AdminApp.<span style="color: black;">edit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Activities'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'[ -MapRolesToUsers [[ admin AppDeploymentOption.No AppDeploymentOption.No wadmin &quot;&quot; AppDeploymentOption.No user:jnRealm/uid=wadmin,ou=users,o=justnudge &quot;&quot; ]]]'</span> <span style="color: black;">&#41;</span>
AdminApp.<span style="color: black;">edit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Blogs'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'[ -MapRolesToUsers [[ admin AppDeploymentOption.No AppDeploymentOption.No wadmin &quot;&quot; AppDeploymentOption.No user:jnRealm/uid=wadmin,ou=users,o=justnudge &quot;&quot; ]]]'</span> <span style="color: black;">&#41;</span>
AdminApp.<span style="color: black;">edit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Communities'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'[ -MapRolesToUsers [[ admin AppDeploymentOption.No AppDeploymentOption.No wadmin &quot;&quot; AppDeploymentOption.No user:jnRealm/uid=wadmin,ou=users,o=justnudge &quot;&quot; ]]]'</span> <span style="color: black;">&#41;</span>
AdminApp.<span style="color: black;">edit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Files'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'[ -MapRolesToUsers [[ org-admin AppDeploymentOption.No AppDeploymentOption.No wadmin &quot;&quot; AppDeploymentOption.No user:jnRealm/uid=wadmin,ou=users,o=justnudge &quot;&quot; ]]]'</span> <span style="color: black;">&#41;</span>
AdminApp.<span style="color: black;">edit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Forums'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'[ -MapRolesToUsers [[ admin AppDeploymentOption.No AppDeploymentOption.No wadmin &quot;&quot; AppDeploymentOption.No user:jnRealm/uid=wadmin,ou=users,o=justnudge &quot;&quot; ]]]'</span> <span style="color: black;">&#41;</span>
AdminApp.<span style="color: black;">edit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Forums'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'[ -MapRolesToUsers [[ search-public-admin AppDeploymentOption.No AppDeploymentOption.No wadmin &quot;&quot; AppDeploymentOption.No user:jnRealm/uid=wadmin,ou=users,o=justnudge &quot;&quot; ]]]'</span> <span style="color: black;">&#41;</span>
AdminApp.<span style="color: black;">edit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Homepage'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'[ -MapRolesToUsers [[ admin AppDeploymentOption.No AppDeploymentOption.No wadmin &quot;&quot; AppDeploymentOption.No user:jnRealm/uid=wadmin,ou=users,o=justnudge &quot;&quot; ]]]'</span> <span style="color: black;">&#41;</span>
AdminApp.<span style="color: black;">edit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Mobile Administration'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'[ -MapRolesToUsers [[ administrator AppDeploymentOption.No AppDeploymentOption.No wadmin &quot;&quot; AppDeploymentOption.No user:jnRealm/uid=wadmin,ou=users,o=justnudge &quot;&quot; ]]]'</span> <span style="color: black;">&#41;</span>
AdminApp.<span style="color: black;">edit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'News'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'[ -MapRolesToUsers [[ admin AppDeploymentOption.No AppDeploymentOption.No wadmin &quot;&quot; AppDeploymentOption.No user:jnRealm/uid=wadmin,ou=users,o=justnudge &quot;&quot; ]]]'</span> <span style="color: black;">&#41;</span>
AdminApp.<span style="color: black;">edit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'News'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'[ -MapRolesToUsers [[ widget-admin AppDeploymentOption.No AppDeploymentOption.No wadmin &quot;&quot; AppDeploymentOption.No user:jnRealm/uid=wadmin,ou=users,o=justnudge &quot;&quot; ]]]'</span> <span style="color: black;">&#41;</span>
AdminApp.<span style="color: black;">edit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Search'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'[ -MapRolesToUsers [[ search-admin AppDeploymentOption.No AppDeploymentOption.No wadmin &quot;&quot; AppDeploymentOption.No user:jnRealm/uid=wadmin,ou=users,o=justnudge &quot;&quot; ]]]'</span> <span style="color: black;">&#41;</span>
AdminApp.<span style="color: black;">edit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'WidgetContainer'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'[ -MapRolesToUsers [[ admin AppDeploymentOption.No AppDeploymentOption.No wadmin &quot;&quot; AppDeploymentOption.No user:jnRealm/uid=wadmin,ou=users,o=justnudge &quot;&quot; ]]]'</span> <span style="color: black;">&#41;</span>
AdminApp.<span style="color: black;">edit</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Wikis'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'[ -MapRolesToUsers [[ admin AppDeploymentOption.No AppDeploymentOption.No wadmin &quot;&quot; AppDeploymentOption.No user:jnRealm/uid=wadmin,ou=users,o=justnudge &quot;&quot; ]]]'</span> <span style="color: black;">&#41;</span>
AdminConfig.<span style="color: black;">save</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>You will need to adjust the script for your administration username, my administration user is called wadmin and has a distinguished name in LDAP of uid=wadmin,ou=users,o=justnudge.  Running the script can be done by executing the following command from your WebSphere bin directory:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>IBM<span style="color: #000000; font-weight: bold;">/</span>WebSphere<span style="color: #000000; font-weight: bold;">/</span>AppServer<span style="color: #000000; font-weight: bold;">/</span>profiles<span style="color: #000000; font-weight: bold;">/</span>Dmgr01<span style="color: #000000; font-weight: bold;">/</span>bin
.<span style="color: #000000; font-weight: bold;">/</span>wsadmin.sh <span style="color: #660033;">-lang</span> jython <span style="color: #660033;">-f</span> connections-security.py</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.justnudge.com/2012/09/adding-admin-roles-to-ibm-connections-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud Storage Options</title>
		<link>http://www.justnudge.com/2012/09/cloud-storage-options/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cloud-storage-options</link>
		<comments>http://www.justnudge.com/2012/09/cloud-storage-options/#comments</comments>
		<pubDate>Sun, 09 Sep 2012 11:17:28 +0000</pubDate>
		<dc:creator>Michael Ransley</dc:creator>
				<category><![CDATA[cloud]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://www.justnudge.com/?p=154</guid>
		<description><![CDATA[As a small business owner and one that works in technology, I decided that I should really sort my backup situation out, I tell my clients to do it all the time. The reality of today is that storage is really cheap &#8211; a 2 TB SATA disk costs about AUD 100 and that is [...]]]></description>
				<content:encoded><![CDATA[<p>As a small business owner and one that works in technology, I decided that I should really sort my backup situation out, I tell my clients to do it all the time. The reality of today is that storage is really cheap &#8211; a 2 TB SATA disk costs about AUD 100 and that is about my current storage requirements. The type of information that create is as follows:</p>
<ul>
<li>Source control &#8211; I currently use a hosted subversion repository so don&#8217;t need to back that up.</li>
<li>Virtual Machine Templates &#8211; I have templates for different operating systems to support my clients.</li>
<li>Software &#8211; I store all my software on disks, I dislike DVD&#8217;s.</li>
<li>Documents</li>
<li>Virtual Machines</li>
<li>Mail and Calendar &#8211; I use a cloud service for this so don&#8217;t need to back this up</li>
</ul>
<p>Now breaking this down, each virtual machine template is about 6Gb, while a configured virtual machine can be up to 50Gb (IBM Connections for instance).  My software is about 140 Gb (various installers) and sits on a NAS VM running Centos 5.  Most of my virtual machines are Centos &#8211; I can build them very quickly (about 15 minutes) using kickstart files.</p>
<p>I have decided that none of the virtual machines require a complete backup.  Instead what I do is perform backups of core components (such as database backups) and in the event that I need to restore I will instead rebuild as I have detailed information on rebuilding each of my VM&#8217;s.  That said, I do have the ESX disks mirrored onto a separate machine incase of hardware failure.</p>
<p>This brings me to the point of the entire post, I believe that I am now OK in terms of a failure in relation to a single hardware failure.  The real problem is that what happens if I have a disaster (i.e. my primary and backup machines are destroyed/stolen).  Obviously using cloud storage is the best option, but there are a number of options out there.  I did some research on the best options and have come up with the following table:</p>
<table width="100%">
<tr>
<th>Service</th>
<th>Storage</th>
<th>Cost Gb/Month</th>
<th>Comments</th>
</tr>
<tr>
<td><a href="https://www.dropbox.com/" title="Dropbox">Dropbox</a></td>
<td>100</td>
<td>$0.0825</td>
<td></td>
</tr>
<tr>
<td><a href="https://www.dropbox.com/" title="Dropbox">Dropbox</a></td>
<td>200</td>
<td>$0.0829</td>
<td></td>
</tr>
<tr>
<td><a href="http://aws.amazon.com/s3/">Amazon S3</a></td>
<td>Unlimited</td>
<td>$0.125</td>
<td>Additional Transfer Charges</td>
</tr>
<tr>
<td><a href="http://aws.amazon.com/glacier/" title="Amazon Glacier">Amazon Glacier</a></td>
<td>Unlimited</td>
<td>$0.01</td>
<td>Huge transfer charges for restore.</td>
</tr>
<tr>
<td><a href="https://www.box.com/" title="Box">Box</a></td>
<td>50</td>
<td>$0.3998</td>
<td></td>
</tr>
<tr>
<td><a href="https://www.box.com/" title="Box">Box</a></td>
<td>1000</td>
<td>$0.045</td>
<td></td>
</tr>
<tr>
<td><a href="https://drive.google.com" title="Google Drive">Google Drive</a></td>
<td>Unlimited</td>
<td>$0.0499</td>
<td></td>
</tr>
</table>
<p>Now, the service that initially sparked my interest in this was the announcement of Amazon Glacier.  The service sounded like it was designed for my requirement, largely static data and in large files (my average file size is at least 1Gb).  The service has two problems as far as I can see:</p>
<ul>
<li>There are very few clients for it, but this is a new service so not surprised here and in six months this point will be mute.</li>
<li>Transfers in are free but transfers need to be factored in and make the $0.01 per GB per month charge look slightly <a href="http://www.innerexception.com/2012/08/is-amazon-glacier-really-as-cheap-as-it.html" title="Amazon Glacier Transfer Pricing">less appealing</a>.  According to some calculations restoring 1 TB could cost you $1800</li>
</ul>
<p>So after my disappointment with Glacier &#8211; I can see that Glacier has its great points (i.e. being a log retention service), but I believe that for me the best service is Google Drive.  Would be keen to hear from anyone else about other online backup services that they use.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.justnudge.com/2012/09/cloud-storage-options/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What are we doing with our time?</title>
		<link>http://www.justnudge.com/2011/11/what-are-we-doing-with-our-time/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-are-we-doing-with-our-time</link>
		<comments>http://www.justnudge.com/2011/11/what-are-we-doing-with-our-time/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 05:42:19 +0000</pubDate>
		<dc:creator>Michael Ransley</dc:creator>
				<category><![CDATA[mobile applications]]></category>
		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://www.justnudge.com/?p=107</guid>
		<description><![CDATA[My mind has been thinking on this topic for a little while now and the first public mention that I made on it was via my little followed twitter account: While all congratulations should go to the makers of the game, but not much mention has been made in the press as to what that figure [...]]]></description>
				<content:encoded><![CDATA[<p>My mind has been thinking on this topic for a little while now and the first public mention that I made on it was via my little followed <a href="http://twitter.com/#!/michaelransley">twitter</a> account:</p>
<!-- tweet id : 126432506454093824 --><style type='text/css'>#bbpBox_126432506454093824 a { text-decoration:none; color:#0084B4; }#bbpBox_126432506454093824 a:hover { text-decoration:underline; }</style><div id='bbpBox_126432506454093824' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#C0DEED; background-image:url(http://a0.twimg.com/images/themes/theme1/bg.png); background-repeat:no-repeat'><div style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span style='width:100%; font-size:18px; line-height:22px;'>RT @<a href="http://twitter.com/intent/user?screen_name=mashable" class="twitter-action">mashable</a> Angry Birds: 30 Million Daily Active Users and 300 Million Minutes of Gameplay Per Day - good for them, sad for society.</span><div class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img align='middle' src='http://www.justnudge.com/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a title='tweeted on October 18, 2011 23:00' href='http://twitter.com/#!/michaelransley/status/126432506454093824' target='_blank'>October 18, 2011 23:00</a> via <a href="http://www.htc.com" rel="nofollow" target="blank">  HTC Peep</a><a href='https://twitter.com/intent/tweet?in_reply_to=126432506454093824' class='bbp-action bbp-reply-action' title='Reply'><span><em style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a href='https://twitter.com/intent/retweet?tweet_id=126432506454093824' class='bbp-action bbp-retweet-action' title='Retweet'><span><em style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a href='https://twitter.com/intent/favorite?tweet_id=126432506454093824' class='bbp-action bbp-favorite-action' title='Favorite'><span><em style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div style='float:left; padding:0; margin:0'><a href='http://twitter.com/intent/user?screen_name=michaelransley'><img style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a2.twimg.com/profile_images/1599130969/IMG_2164-small_normal.jpg' /></a></div><div style='float:left; padding:0; margin:0'><a style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=michaelransley'>@michaelransley</a><div style='margin:0; padding-top:2px'>Michael Ransley</div></div><div style='clear:both'></div></div></div><!-- end of tweet -->
<p>While all congratulations should go to the <a href="http://rovio.com/">makers</a> of the game, but not much mention has been made in the press as to what that figure 300 million minutes worth of gameplay actually means globally or more important to our society.  To break it down, this is:</p>
<ul>
<li>5,000,000 hours &#8211; to put this figure into perspective, the average Australian&#8217;s life expectancy is <a href="http://www.google.com.au/search?gcx=w&amp;sourceid=chrome&amp;ie=UTF-8&amp;q=average+life+expectancy+australia">81.7</a> years (US and UK are slightly lower) or 711,984 hours.  This means that the equivalent of 7 lives every day are spent playing angry birds.</li>
<li>If we assume time is money and instead of playing the game we gave money to charity at the rate of $10 per hour we would raise $50,000,000 per day, that&#8217;s $18.2 billion per year.  If we use the <a href="http://www.washingtonpost.com/blogs/blogpost/post/kim-kardashian-nick-kristof-and-a-cambodian-school/2011/11/01/gIQAdWa6cM_blog.html?tid=sm_twitter_washingtonpost">calculations</a> that were used for Kim Kardashian’s wedding (which reportedly cost $17 million), the annual play time from angry birds could buy:</li>
<ul>
<li>2 Billion new born child kits.</li>
<li>275 million girl&#8217;s educations.</li>
<li>481 million mosquito nets.</li>
</ul>
</ul>
<p>Now, you may read this and say ‘So what is your point?’  My point is that today we have access to tools and resources like never before in history and what are we doing with them?  Are we using it to better our community, nation or world – or are using these tools to&#8230;. well&#8230; waste time?</p>
<p>If we instead, all collectively, decided to spend just 10 minutes of our ‘game’ time each day to:</p>
<ul>
<li>Give someone a compliment</li>
<li>Help someone we know in need</li>
<li>Spend 10 minutes of quality time with loved ones</li>
<li>Educated ourselves on some of the needs happening in the world</li>
</ul>
<p>Suddenly we could be using 300 million minutes to impact our world.  Spending our time doing things that have greater significance or influence which has a higher sense of value.  It puts more bounce in your step and day.</p>
<p>We choose each day who we want to be and what kind of world we want to create.</p>
<p>As a husband and wife team, we decided we wanted to bring a different perspective to the Apple app store and we created an app called <a href="http://itunes.apple.com/app/id462806273">Abundantly</a>.</p>
<p>Our goal with Abundantly is simply to help people from all walks of life to remember to live life each day abundantly. Our dream is to use social media to mobilise people all over the world, and joining together we can make our world a better place.</p>
<p>Aside from helping users enrich their own lives, we wanted to help charities. 10% of all the app’s profits are donated to selected charities monthly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.justnudge.com/2011/11/what-are-we-doing-with-our-time/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Twitter Widget for IBM Connections</title>
		<link>http://www.justnudge.com/2011/11/twitter-widget-for-ibm-connections/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=twitter-widget-for-ibm-connections</link>
		<comments>http://www.justnudge.com/2011/11/twitter-widget-for-ibm-connections/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 11:00:56 +0000</pubDate>
		<dc:creator>Michael Ransley</dc:creator>
				<category><![CDATA[IBM Connections]]></category>
		<category><![CDATA[Lotus Connections]]></category>

		<guid isPermaLink="false">http://www.justnudge.com/?p=89</guid>
		<description><![CDATA[Today we are proud to release our latest widget for IBM Connections. This widget allows an IBM Connections user to associate their profile with their twitter feed and have the feed displayed when someone views their profile. &#160; This widget uses a profile extension to allow the user to populate their twitter username using the [...]]]></description>
				<content:encoded><![CDATA[<p>Today we are proud to release our latest widget for IBM Connections. This widget allows an IBM Connections user to associate their profile with their twitter feed and have the feed displayed when someone views their profile.</p>
<p>&nbsp;</p>
<p><a href="http://www.justnudge.com/products/lotus-connections/twitter-widget-for-ibm-connections/twitter-widget/" rel="attachment wp-att-93"><img class="aligncenter size-large wp-image-93" title="Twitter Widget" src="http://www.justnudge.com/wp-content/uploads/2011/11/twitter-widget-500x153.jpg" alt="" width="500" height="153" /></a></p>
<p>This widget uses a profile extension to allow the user to populate their twitter username using the edit profile functionality of IBM Connections.</p>
<p>For a limited time, Just Nudge is releasing this widget to the IBM Connections community free of charge.  To get the widget see our <a title="Twitter Widget for IBM Connections" href="http://www.justnudge.com/products/lotus-connections/twitter-widget-for-ibm-connections/">Twitter widget</a> product page.  If you require any further information please contact us via email at <a href="mailto:sales@justnudge.com">sales@justnudge.com</a>.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.justnudge.com/2011/11/twitter-widget-for-ibm-connections/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Checking out IBM Connections config files</title>
		<link>http://www.justnudge.com/2011/11/checking-out-connections-config-files/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=checking-out-connections-config-files</link>
		<comments>http://www.justnudge.com/2011/11/checking-out-connections-config-files/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 04:02:14 +0000</pubDate>
		<dc:creator>Michael Ransley</dc:creator>
				<category><![CDATA[IBM Connections]]></category>
		<category><![CDATA[jython]]></category>
		<category><![CDATA[Lotus Connections]]></category>
		<category><![CDATA[WebSphere Application Server]]></category>

		<guid isPermaLink="false">http://www.justnudge.com/?p=91</guid>
		<description><![CDATA[The IBM Connections wiki mentions checking out the configuration files to perform administrative changes to IBM Connections.  The method shown in the wiki is similar to the following: 1 LCConfigService.checkOutConfig&#40;&#34;/temp&#34;, &#34;foo01Cell01&#34;&#41; The cell name is often hard to remember and differs between environments.  To run the command without having to specify the cell name, run the command [...]]]></description>
				<content:encoded><![CDATA[<p>The IBM Connections wiki <a href=" http://www-10.lotus.com/ldd/lcwiki.nsf/dx/Adding_custom_strings_for_widgets_and_other_specified_scenarios_ic301">mentions</a> checking out the configuration files to perform administrative changes to IBM Connections.  The method shown in the wiki is similar to the following:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">LCConfigService.<span style="color: #006633;">checkOutConfig</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/temp&quot;</span>, <span style="color: #0000ff;">&quot;foo01Cell01&quot;</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p>The cell name is often hard to remember and differs between environments.  To run the command without having to specify the cell name, run the command as follows:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">LCConfigService.<span style="color: #006633;">checkOutConfig</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/temp&quot;</span>, AdminControl.<span style="color: #006633;">getCell</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.justnudge.com/2011/11/checking-out-connections-config-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
