<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Well-Rounded</title>
	<atom:link href="http://wellrounded.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://wellrounded.wordpress.com</link>
	<description>around technology</description>
	<lastBuildDate>Fri, 27 Jan 2012 23:46:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='wellrounded.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Well-Rounded</title>
		<link>http://wellrounded.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://wellrounded.wordpress.com/osd.xml" title="Well-Rounded" />
	<atom:link rel='hub' href='http://wellrounded.wordpress.com/?pushpress=hub'/>
		<item>
		<title>[Puppet] Adding The Schema for Storing Node Definitions In LDAP</title>
		<link>http://wellrounded.wordpress.com/2012/01/21/puppet-adding-the-schema-for-storing-node-definitions-in-ldap/</link>
		<comments>http://wellrounded.wordpress.com/2012/01/21/puppet-adding-the-schema-for-storing-node-definitions-in-ldap/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 04:19:58 +0000</pubDate>
		<dc:creator>swinful</dc:creator>
				<category><![CDATA[*Nix]]></category>

		<guid isPermaLink="false">http://wellrounded.wordpress.com/?p=1022</guid>
		<description><![CDATA[Puppet allows the storage of node information in LDAP. For this write-up I will detail how to configure an Oracle Directory Server to store node information that can later be used by a puppet server for the retrieval of node &#8230; <a href="http://wellrounded.wordpress.com/2012/01/21/puppet-adding-the-schema-for-storing-node-definitions-in-ldap/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=1022&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://wellrounded.files.wordpress.com/2012/01/picture-1.png"><img src="http://wellrounded.files.wordpress.com/2012/01/picture-1.png?w=150&#038;h=33" alt="" title="Puppet Labs" width="150" height="33" class="alignleft size-thumbnail wp-image-1024" /></a>Puppet allows the storage of node information in LDAP. For this write-up I will detail how to configure an <strong>Oracle Directory Server</strong> to store node information that can later be used by a puppet server for the retrieval of node classification information. The use of LDAP eliminates the need of having to use the flat file node.pp for node definitions.</p>
<p>On the server acting as the &#8220;puppet master&#8221;, ruby ldap client libraries are required. In the example below our &#8220;puppet master&#8221; server has already been configured on a ubuntu linux server. </p>
<p><strong>Ensure ruby client libraries are installed</strong>: </p>
<p>After verifying the absence of the ruby client libraries we install them below:</p>
<p><pre class="brush: bash;">
--&gt; aptitude search ruby | grep -i ldap
...edited...
p   libldap-ruby1.8                 - OpenLDAP library binding for Ruby 1.8
...edited...

--&gt; aptitude install libldap-ruby1.8
...edited...
Fetched 66.8 kB in 0s (109 kB/s)
Selecting previously deselected package libldap-ruby1.8.
(Reading database ... 63468 files and directories currently installed.)
Unpacking libldap-ruby1.8 (from .../libldap-ruby1.8_0.9.7-1.1_amd64.deb) ...
Setting up libldap-ruby1.8 (0.9.7-1.1) ...

`--&gt; ruby -rldap -e &quot;puts :installed&quot;
installed
</pre></p>
<p><strong>Update /etc/puppet/puppet.conf to use LDAP</strong></p>
<p>Change your &#8220;/etc/puppet/puppet.conf&#8221; [master] section to use ldap for node lookups on the master server. For example, the following should be placed in the /etc/puppet/puppet.conf file underneath the section [master]:</p>
<p><pre class="brush: plain;">
[master]
node_terminus = ldap
ldapserver = odsee.goldcoast.com
ldapbase = ou=hosts,dc=goldcoast,dc=com
</pre></p>
<p>Were &#8216;node_terminus&#8217; was originally using <strong>file</strong>, but will now use <strong>ldap</strong>. &#8216;ldapserver&#8217; should point to a valid ldap server that can be accessed on port 389. &#8216;ldapbase&#8217; is where the puppet master server will look for node information. We will populate this organizational unit (ou) later on. Once the changes have been saved restart the &#8220;puppet master&#8221;. The &#8216;nope.pp&#8217; file should no longer be referenced by the master server. But before discarding the file entirely we need to configure LDAP to add the custom puppet schema for our node definitions.</p>
<p><strong>Adding the Puppet Schema to LDAP Directory Server</strong></p>
<p>Next we need to populate our LDAP server to contain the puppet.schema definitions. I recommend visiting the following url for the latest puppet schema:</p>
<p>https://github.com/puppetlabs/puppet/blob/master/ext/ldap/puppet.schema</p>
<p>Login into your directory server. Copy the contents of &#8216;puppet.schema&#8217; to a temporary file, for example to: <strong>/tmp/98puppet.ldif.tmp</strong>. The file as is, as of this writing, cannot be imported into Oracle Directory Server Enterprise (ODSEE) without modification.</p>
<p><strong>The original &#8216;puppet.schema&#8217; looks like:</strong></p>
<p><pre class="brush: plain;">
bash-3.00# cat &gt; /tmp/98puppet.ldif.tmp
attributetype ( 1.3.6.1.4.1.34380.1.1.3.10 NAME 'puppetClass'
DESC 'Puppet Node Class'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

attributetype ( 1.3.6.1.4.1.34380.1.1.3.9 NAME 'parentNode'
DESC 'Puppet Parent Node'
EQUALITY caseIgnoreIA5Match
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
        SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.34380.1.1.3.11 NAME 'environment'
DESC 'Puppet Node Environment'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

attributetype ( 1.3.6.1.4.1.34380.1.1.3.12 NAME 'puppetVar'
DESC 'A variable setting for puppet'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

objectclass ( 1.3.6.1.4.1.34380.1.1.1.2 NAME 'puppetClient' SUP top AUXILIARY
DESC 'Puppet Client objectclass'
MAY ( puppetclass $ parentnode $ environment $ puppetvar ))
</pre></p>
<p>It can be easily converted with the following script, located at:</p>
<p>http://directory.fedoraproject.org/wiki/Howto:OpenLDAPMigration.</p>
<p>in order to work with ODSEE. For example:</p>
<p><pre class="brush: plain;">
bash-3.00# cd /tmp/

bash-3.00# perl ldif2dsee.pl 98puppet.ldif.tmp &gt; 98puppet.ldif
</pre></p>
<p><strong>After Conversion, the puppet schema will look like:</strong><br />
<pre class="brush: plain;">
bash-3.00# cat 98puppet.ldif

dn: cn=schema
attributeTypes: ( 1.3.6.1.4.1.34380.1.1.3.10 NAME 'puppetClass' DESC 'Puppet Node Class' EQUALITY cas
eIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'PUPPET')
attributeTypes: ( 1.3.6.1.4.1.34380.1.1.3.9 NAME 'parentNode' DESC 'Puppet Parent Node' EQUALITY case
IgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE X-ORIGIN 'PUPPET')
attributeTypes: ( 1.3.6.1.4.1.34380.1.1.3.11 NAME 'environment' DESC 'Puppet Node Environment' EQUALI
TY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'PUPPET')
attributeTypes: ( 1.3.6.1.4.1.34380.1.1.3.12 NAME 'puppetVar' DESC 'A variable setting for puppet' EQ
UALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'PUPPET')
objectClasses: ( 1.3.6.1.4.1.34380.1.1.1.2 NAME 'puppetClient' SUP top AUXILIARY DESC 'Puppet Client 
objectclass' MAY ( puppetClass $ parentNode $ environment $ puppetVar ) X-ORIGIN 'PUPPET')
</pre></p>
<p>Copy the resulting file, /tmp/98puppet.ldif, under the ODSEE schema/ path. This is usually under <strong>instance-path/config/schema/</strong> :</p>
<p><pre class="brush: plain;">
bash-3.00# cp /tmp/98puppet.ldif /odsee/config/schema/
</pre></p>
<p><strong>Restart the LDAP Instance</strong></p>
<p>Before restarting the instance, tail the errors log file, <strong>instance-path/logs/errors</strong> in one window and in another restart the ldap instance ensuring there were no errors. For example, after restarting the instance:</p>
<p><pre class="brush: plain;">
bash-3.00# dsadm restart /odsee
Directory Server instance '/odsee' stopped
</pre></p>
<p><strong>Note:</strong> Notice after the restart, the message says &#8220;&#8230; &#8216;/odsee&#8217; stopped&#8221;. It should have said &#8220;&#8230; &#8216;/odsee&#8217; <strong>restarted</strong></p>
<p>The errors window should have displayed something similiar to: </p>
<p><pre class="brush: plain;">
[21/Jan/2012:22:25:43 -0500] - slapd shutting down - waiting for 0 threads to terminate
[21/Jan/2012:22:25:43 -0500] - libumem_dummy_thread started.
[21/Jan/2012:22:25:43 -0500] - Waiting for 6 database threads to stop
[21/Jan/2012:22:25:44 -0500] - All database threads now stopped
[21/Jan/2012:22:25:44 -0500] - slapd stopped.
[21/Jan/2012:22:25:47 -0500] - Sun-Directory-Server/11.1.1.3.0 B2010.0630.2254 (64-bit) starting up
[21/Jan/2012:22:25:49 -0500] - Listening on all interfaces port 389 for LDAP requests
[21/Jan/2012:22:25:49 -0500] - Listening on all interfaces port 636 for LDAPS requests
[21/Jan/2012:22:25:49 -0500] - slapd started. 
[21/Jan/2012:22:25:49 -0500] - INFO: 97 entries in the directory database.
...edited...
</pre></p>
<p><strong>Verify The Puppet Schema is in LDAP</strong></p>
<p>While still logged into the LDAP server, perform a basic search which should return the schema that was just imported.</p>
<p><pre class="brush: plain;">
bash-3.00# ldapsearch -T -b cn=schema &quot;(objectclass=*)&quot; | grep -i puppet

attributeTypes: ( 1.3.6.1.4.1.34380.1.1.3.11 NAME 'environment' DESC 'Puppet Node Environment' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'PUPPET' )
attributeTypes: ( 1.3.6.1.4.1.34380.1.1.3.10 NAME 'puppetClass' DESC 'Puppet Node Class' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'PUPPET' )
attributeTypes: ( 1.3.6.1.4.1.34380.1.1.3.9 NAME 'parentNode' DESC 'Puppet Parent Node' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE X-ORIGIN 'PUPPET' )
attributeTypes: ( 1.3.6.1.4.1.34380.1.1.3.12 NAME 'puppetVar' DESC 'A variable setting for puppet' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'PUPPET' )
objectClasses: ( 1.3.6.1.4.1.34380.1.1.1.2 NAME 'puppetClient' DESC 'Puppet Client objectclass' STRUCTURAL MAY ( puppetClass $ parentNode $ environment $ puppetVar ) X-ORIGIN 'PUPPET' )
</pre></p>
<p>Now you should be able to add node information within LDAP.</p>
<p><strong>Add a base node to LDAP</strong></p>
<p>I like to use the command line tool <strong>ldapvi</strong> for manipulating my ldap entries. I will not go into detail on how to configure <strong>ldapvi</strong>, but additional information may be found online. Let&#8217;s add a <strong>base</strong> node and assign the &#8220;base class&#8221; to it. We will place &#8220;cn=base&#8221;, under the &#8220;search base&#8221; ou=hosts,cn=goldcoast,dc=com:</p>
<p><pre class="brush: plain;">
--&gt; ldapvi --add -o top -o device -o puppetClient -b cn=base,ou=hosts,cn=goldcoast,cn=com
</pre></p>
<p>After invocation, your default editor will open up with a screen similar to this:</p>
<p><pre class="brush: plain;">
# -*- coding: utf-8 -*- vim:encoding=utf-8:
# http://www.lichteblau.com/ldapvi/manual#syntax

### NOTE: objectclass is abstract: top
# structural object class: device
### WARNING: extra structural object class: puppetClient
add cn=base,ou=hosts,cn=goldcoast,cn=com
objectClass: top
objectClass: device
objectClass: puppetClient
cn:
#description:
#l:
#o:
#ou:
#owner:
#seeAlso:
#serialNumber:
puppetClass: base
#parentNode:
#environment:
#puppetVar:
</pre></p>
<p>My default editor is &#8220;vim&#8221; and I uncommented &#8220;puppetClass:&#8221; in order to use the &#8220;base&#8221; class for the &#8220;base node&#8221;. Once done, save and quit the file and you should be presented with authentication to commit the change to ldap &#8212; something similiar to:</p>
<p><pre class="brush: plain;">
...edited...
~
/tmp/ldapvi-usdGC1/data: 22 lines, 457 characters.
add: 1, rename: 0, modify: 0, delete: 0
Action? [yYqQvVebB*rsf+?] b

--- Login
Type M-h for help on key bindings.

Filter or DN: 
    Password: 

</pre></p>
<p>Cheers,<br />
-swinful</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/wellrounded.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/wellrounded.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/wellrounded.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/wellrounded.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/wellrounded.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/wellrounded.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/wellrounded.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/wellrounded.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/wellrounded.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/wellrounded.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/wellrounded.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/wellrounded.wordpress.com/1022/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/wellrounded.wordpress.com/1022/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/wellrounded.wordpress.com/1022/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=1022&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://wellrounded.wordpress.com/2012/01/21/puppet-adding-the-schema-for-storing-node-definitions-in-ldap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b0fedde4aaff436470ed98df59746af?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">swinful</media:title>
		</media:content>

		<media:content url="http://wellrounded.files.wordpress.com/2012/01/picture-1.png?w=150" medium="image">
			<media:title type="html">Puppet Labs</media:title>
		</media:content>
	</item>
		<item>
		<title>[Solaris 11 Express] Configuring Samba via ZFS for use in ActiveDirectory</title>
		<link>http://wellrounded.wordpress.com/2012/01/11/solaris-11-express-configuring-samba-via-zfs-for-use-in-activedirectory/</link>
		<comments>http://wellrounded.wordpress.com/2012/01/11/solaris-11-express-configuring-samba-via-zfs-for-use-in-activedirectory/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 16:44:58 +0000</pubDate>
		<dc:creator>swinful</dc:creator>
				<category><![CDATA[*Nix]]></category>

		<guid isPermaLink="false">http://wellrounded.wordpress.com/?p=766</guid>
		<description><![CDATA[&#8220;Eh, I checked everywhere! I cannot find that smb.conf. Where could it have gone!?&#8221; And I thought he was lying when a colleague of mine mentioned this, trying to enable samba. Well, I checked and could not find any trace &#8230; <a href="http://wellrounded.wordpress.com/2012/01/11/solaris-11-express-configuring-samba-via-zfs-for-use-in-activedirectory/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=766&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8220;Eh, I checked everywhere! I cannot find that smb.conf. Where could it have gone!?&#8221; And I thought he was lying when a colleague of mine mentioned this, trying to enable samba. Well, I checked and could not find any trace of the smb.conf file either. Although samba was enabled via ZFS and we could see the windows shares, we could not access them. Sure enabling samba via zfs was fairly simple and I enabled samba as follows. Considering <b>tank</b> is our dataset on a system called <b>army</b>) with the domain <b>goldcoast.com</b> I performed:</p>
<p><pre class="brush: bash;">
# zfs sharesmb=on tank
</pre></p>
<p>which should implicitly enable the SMF: <b>svc:/network/smb/server:default</b></p>
<p>What was actually missing, since we are in an Active Directory environment was joining our Solaris host to the domain and mapping corresponding Windows users to Unix users &#8212; provided the Windows and Unix usernames are the same and in this case they were.</p>
<p><b>Join Solaris to the Active Directory domain:</b></p>
<p><pre class="brush: bash;">
# smbadm join -u administrator goldcoast.com
</pre></p>
<p>At his point the Windows shares were now accessible, but you may have noticed the file mappings were wrong. For example, on the Windows side of things if you created a new file the owner and group would appear differently on the Unix side, similiar to the below listing:</p>
<p><pre class="brush: bash;">
# ls -ltr
   -rwx------+ 1 2147540993 2147483653          0 May 10 16:24 New Text Document.txt                    
</pre></p>
<p>And with permissions like that, in a shared environment there are sure to be a lot of complaints.</p>
<p>To map all AD users that are part of domain goldcoast.com, considering the local unix accounts have the same name we performed:</p>
<p><pre class="brush: bash;">
# idmap add &quot;winuser:*@goldcoast.com&quot; unixuser:*
</pre></p>
<p>And samba is enabled. Try it, try to  access the share from Windows using </p>
<p><b>Start</b> -&gt; <b>Run:</b> <i>\\army\tank </p>
<p>If your Windows machine is connected to an ActiveDirectory Controller you should be prompted for a username/password dialog.</p>
<hr />
<strong>References:</strong></p>
<ol>
<li><a href="http://www.aspdeveloper.net/tiki-index.php?page=SolarisCIFSPermissions#comments">Solaris CIFS Permissions</a></li>
<li><a href="http://download.oracle.com/docs/cd/E19963-01/html/821-1449/toc.html">Oracle Solaris SMB and Windows Interoperability Administration Guide</a></li>
</ol>
<p></i></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/wellrounded.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/wellrounded.wordpress.com/766/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/wellrounded.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/wellrounded.wordpress.com/766/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/wellrounded.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/wellrounded.wordpress.com/766/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/wellrounded.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/wellrounded.wordpress.com/766/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/wellrounded.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/wellrounded.wordpress.com/766/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/wellrounded.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/wellrounded.wordpress.com/766/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/wellrounded.wordpress.com/766/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/wellrounded.wordpress.com/766/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=766&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://wellrounded.wordpress.com/2012/01/11/solaris-11-express-configuring-samba-via-zfs-for-use-in-activedirectory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b0fedde4aaff436470ed98df59746af?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">swinful</media:title>
		</media:content>
	</item>
		<item>
		<title>[Perl] It is never too late to learn!</title>
		<link>http://wellrounded.wordpress.com/2012/01/11/perl-it-is-never-too-late-to-learn/</link>
		<comments>http://wellrounded.wordpress.com/2012/01/11/perl-it-is-never-too-late-to-learn/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 16:35:54 +0000</pubDate>
		<dc:creator>swinful</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://wellrounded.wordpress.com/?p=877</guid>
		<description><![CDATA[All these years and I have never had the need to seriously learn perl until now. While searching for a good beginners guide I was particularly interested in a decent Computer Based Training (CBT), but that was hard to come &#8230; <a href="http://wellrounded.wordpress.com/2012/01/11/perl-it-is-never-too-late-to-learn/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=877&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>All these years and I have never had the need to seriously learn perl until now. While searching for a good beginners guide I was particularly interested in a decent Computer Based Training (CBT), but that was hard to come by &#8212; at least trying to find a free one worth my while. I wanted something similar to the old DOS Unix CBT I once used when I was learning UNIX or even something to the extent of the Tcl CBT. Well, I did did not quite find what I was looking for, so instead I checked what was already available on my BSD box for learning perl:</p>
<p><pre class="brush: bash;">
`--&gt; apropos perl | grep doc
perlapi(1)               - autogenerated documentation for the perl public API
perldoc(1)               - Look up Perl documentation in Pod format
perlintern(1)            - autogenerated documentation of purely internal Perl functions
perlplan9(1)             - Plan 9-specific documentation for Perl
perlpod(1)               - the Plain Old Documentation format Xref &quot;POD plain old documentation&quot;
perltoc(1)               - perl documentation table of contents
perlvms(1)               - VMS-specific documentation for Perl
</pre></p>
<p>What stood out to me was <strong>perltoc(1)</strong>. And, it is what I used for the basis of starting to learn perl. For example <strong>perltoc(1)</strong> &#8212; like its&#8217; name suggest will provide a brief table of contents for the rest of the perl documentation set. I used it to scan for areas that interested me about perl.</p>
<p><pre class="brush: bash;">
`--&gt; man perltoc | col -bx | egrep &quot;perl.+ -+ .*&quot; | sed 's/^ *//' | more
perltoc - perl documentation table of contents
perlintro -- a brief introduction and overview of Perl
perlreftut - Mark's very short tutorial about references
perldsc - Perl Data Structures Cookbook
perllol - Manipulating Arrays of Arrays in Perl
perlrequick - Perl regular expressions quick start
perlretut - Perl regular expressions tutorial
perlboot - Beginner's Object-Oriented Tutorial
perltoot - Tom's object-oriented tutorial for perl
perltooc - Tom's OO Tutorial for Class Data in Perl
perlbot - Bag'o Object Tricks (the BOT)
perlperf - Perl Performance and Optimization Techniques
perlstyle - Perl style guide
perlcheat - Perl 5 Cheat Sheet
perltrap - Perl traps for the unwary
perldebtut - Perl debugging tutorial
perlfaq - frequently asked questions about Perl
perlfaq  - this document, perlfaq1 - General Questions About Perl,
perlfaq2 - Obtaining and Learning about Perl, perlfaq3 -
</pre></p>
<p>Once I got feet wet I decided to purchase one of the O&#8217; Reilly Books: Programming Perl 4th Edition.And, I also found the following sites useful: http://learn.perl.org and http://perldoc.perl.org.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/wellrounded.wordpress.com/877/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/wellrounded.wordpress.com/877/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/wellrounded.wordpress.com/877/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/wellrounded.wordpress.com/877/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/wellrounded.wordpress.com/877/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/wellrounded.wordpress.com/877/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/wellrounded.wordpress.com/877/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/wellrounded.wordpress.com/877/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/wellrounded.wordpress.com/877/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/wellrounded.wordpress.com/877/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/wellrounded.wordpress.com/877/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/wellrounded.wordpress.com/877/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/wellrounded.wordpress.com/877/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/wellrounded.wordpress.com/877/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=877&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://wellrounded.wordpress.com/2012/01/11/perl-it-is-never-too-late-to-learn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b0fedde4aaff436470ed98df59746af?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">swinful</media:title>
		</media:content>
	</item>
		<item>
		<title>[GnuCash] MacPorts Compile</title>
		<link>http://wellrounded.wordpress.com/2012/01/11/gnucash-macports-compile/</link>
		<comments>http://wellrounded.wordpress.com/2012/01/11/gnucash-macports-compile/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 16:31:16 +0000</pubDate>
		<dc:creator>swinful</dc:creator>
				<category><![CDATA[*Nix]]></category>

		<guid isPermaLink="false">http://wellrounded.wordpress.com/?p=881</guid>
		<description><![CDATA[Finally! Just finished with the compilation and installation of GnuCash using macports on my PowerBook Pro running Mac OS X 10.5.8: Now, that took long enough &#8212; one hour and forty five minutes! Thought I would share. -;)<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=881&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Finally! Just finished with the compilation and installation of GnuCash using macports on my PowerBook Pro running Mac OS X 10.5.8:</p>
<p><pre class="brush: bash;">
...edited...
---&gt;  Configuring gnucash
---&gt;  Building gnucash
---&gt;  Staging gnucash into destroot
---&gt;  Installing gnucash @2.4.7_1
---&gt;  Activating gnucash @2.4.7_1
---&gt;  Cleaning gnucash
5150.53s user 1790.23s system 109% cpu 1:45:58.98s total
</pre></p>
<p>Now, that took long enough &#8212; <strong>one hour and forty five minutes</strong>! Thought I would share. -;)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/wellrounded.wordpress.com/881/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/wellrounded.wordpress.com/881/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/wellrounded.wordpress.com/881/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/wellrounded.wordpress.com/881/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/wellrounded.wordpress.com/881/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/wellrounded.wordpress.com/881/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/wellrounded.wordpress.com/881/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/wellrounded.wordpress.com/881/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/wellrounded.wordpress.com/881/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/wellrounded.wordpress.com/881/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/wellrounded.wordpress.com/881/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/wellrounded.wordpress.com/881/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/wellrounded.wordpress.com/881/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/wellrounded.wordpress.com/881/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=881&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://wellrounded.wordpress.com/2012/01/11/gnucash-macports-compile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b0fedde4aaff436470ed98df59746af?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">swinful</media:title>
		</media:content>
	</item>
		<item>
		<title>[AIX] DBX Installation</title>
		<link>http://wellrounded.wordpress.com/2012/01/11/aix-dbx-installation/</link>
		<comments>http://wellrounded.wordpress.com/2012/01/11/aix-dbx-installation/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 16:29:06 +0000</pubDate>
		<dc:creator>swinful</dc:creator>
				<category><![CDATA[*Nix]]></category>

		<guid isPermaLink="false">http://wellrounded.wordpress.com/?p=873</guid>
		<description><![CDATA[&#8216;Free&#8217; online packages of the AIX debugging tool, dbx, are hard to find. In fact, I do not believe it is freely available unless someone copies it from their installation medium and places it online. My searches turned up nothing. &#8230; <a href="http://wellrounded.wordpress.com/2012/01/11/aix-dbx-installation/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=873&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8216;Free&#8217; online packages of the AIX debugging tool, dbx, are hard to find. In fact, I do not believe it is freely available unless someone copies it from their installation medium and places it online. My searches turned up nothing. Eventually, I just installed it from the local install media using &#8220;<strong>smitty install</strong>&#8220;. </p>
<p><strong>dbx</strong> on AIX is part of the bos.adt.debug (Base Application Development) software bundle. If you have the installation media inserted (usually the first CD/DVD), typically accessible via the device &#8216;cd0&#8242; you can install dbx by performing the following:</p>
<p><pre class="brush: bash;">
# smitty install
</pre></p>
<p>References: </p>
<p>http://www-01.ibm.com/support/docview.wss?uid=swg21222456</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/wellrounded.wordpress.com/873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/wellrounded.wordpress.com/873/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/wellrounded.wordpress.com/873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/wellrounded.wordpress.com/873/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/wellrounded.wordpress.com/873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/wellrounded.wordpress.com/873/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/wellrounded.wordpress.com/873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/wellrounded.wordpress.com/873/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/wellrounded.wordpress.com/873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/wellrounded.wordpress.com/873/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/wellrounded.wordpress.com/873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/wellrounded.wordpress.com/873/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/wellrounded.wordpress.com/873/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/wellrounded.wordpress.com/873/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=873&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://wellrounded.wordpress.com/2012/01/11/aix-dbx-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b0fedde4aaff436470ed98df59746af?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">swinful</media:title>
		</media:content>
	</item>
		<item>
		<title>[TR-069] Verizon FiOS Uses It &#8212; But So What?</title>
		<link>http://wellrounded.wordpress.com/2012/01/11/tr-069-verizon-fios-uses-it-but-so-what/</link>
		<comments>http://wellrounded.wordpress.com/2012/01/11/tr-069-verizon-fios-uses-it-but-so-what/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 16:20:40 +0000</pubDate>
		<dc:creator>swinful</dc:creator>
				<category><![CDATA[*Nix]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wellrounded.wordpress.com/?p=994</guid>
		<description><![CDATA[I became interested in TR-069 after figuring out my Verizon FiOS router had the capability to be remotely managed by it, allowing my mind to wonder about a couple of &#8220;what-if&#8221; situations. However, I can see the benefits of this &#8230; <a href="http://wellrounded.wordpress.com/2012/01/11/tr-069-verizon-fios-uses-it-but-so-what/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=994&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I became interested in TR-069 after figuring out my Verizon FiOS router had the capability to be remotely managed by it, allowing my mind to wonder about a couple of &#8220;what-if&#8221; situations. However, I can see the benefits of this feature from the perspective of the provider. For example, with Tr-069 the provider or manufacture of the device can swiftly deal with problematic issues that would have otherwise allowed for a technician to be dispatched to a customers home, which can be costly. With the ability to perform such tasks as remote firmware upgrade/patching or even the initial configuration of the device for the customer, providers can definitely save a lot of money. Imagine millions of customers needing a technician to be dispatched to their homes due to a major security flaw in the device software?</p>
<p>But what if the provider uses the full capabilities of TR-069 for profit and gain? That I would not be the least bit surprised. After all they do technically own the device while the customer has service with them. But what if a mid-night shift engineer used the capabilities of TR-069 to gain entry into a customers home network to snoop around? Would the customer know? Could the customer even prevent remote access into their leased modem or router and ultimately their private home network? First, what exactly is TR-069?</p>
<p>According to Wikipedia: </p>
<blockquote><p>TR-069 (Technical Report 069) is a DSL Forum (which was later renamed as Broadband Forum) technical specification entitled CPE WAN Management Protocol (CWMP). It defines an application layer protocol for remote management of end-user devices.</p></blockquote>
<p>In other words, TR-069 is a WAN Management Protocal implemented in client devices such as home routers, set-top boxes and similar equipment leased from ISP&#8217;s or cable providers. These client devices are also referred to as CPE&#8217;s or a Customer Premise Equipment. TR-069 is the technology that allows vendors to remotely interact with their CPE for such purposes as initial device configuration, troubleshooting and basic management of the device such as performing remote backups or firmware upgrades. This allows vendors to cut costs on field technicians that would have otherwise been dispatched to a customer&#8217;s home or office. The protocol allows for communication to take place via SOAP/HTTP, between the CPE and the vendors Auto Configuration Servers (ACS). With TR-069, communication can either be initiated from the vendor side or the customer side without the customer&#8217;s knowledge. An ACS can be thought of as a single point of management for all customer devices [2].                                         </p>
<p>So, would the customer know if &#8220;someone&#8221; was snooping around? Possibly, but they would definitely have to be proactive and check the logs from time to time. Could the customer even prevent remote access into their leased modem or router and ultimately their private home network? This is a big NO! At least not with the equipment provided to them by the manufacturer or their ISP. Trying to disable the abilities of Tr-069 once implemented in a device is damn near impossible, especially when attempted using the FiOS router itself. Check out this screenshot:</p>
<p><a href="http://wellrounded.files.wordpress.com/2012/01/picture-2.png"><img src="http://wellrounded.files.wordpress.com/2012/01/picture-2.png?w=600&#038;h=344" alt="" title="Picture 2" width="600" height="344" class="aligncenter size-medium wp-image-995" /></a></p>
<p>You will notice under the &#8220;Delete&#8221; column, what would have been an option to delete this rule from the outside has been removed. Another example to show the &#8220;Verizon FiOS Service&#8221; cannot be blocked is something you can test yourself. For example, if you have Internet with FiOS and know your <a href="http://whatismyip.com" title="See you public IP address">public-ip</a> port &#8220;4567&#8243; will be open. Attempting to connect to it via a web-browser should present you with a login prompt. However, not just anyone can connect and I would be surprised if you could get that Login/Password pair. But, what if someone figured out the pair? Or what is an employee at the ISP wanted to snoop around?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/wellrounded.wordpress.com/994/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/wellrounded.wordpress.com/994/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/wellrounded.wordpress.com/994/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/wellrounded.wordpress.com/994/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/wellrounded.wordpress.com/994/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/wellrounded.wordpress.com/994/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/wellrounded.wordpress.com/994/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/wellrounded.wordpress.com/994/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/wellrounded.wordpress.com/994/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/wellrounded.wordpress.com/994/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/wellrounded.wordpress.com/994/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/wellrounded.wordpress.com/994/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/wellrounded.wordpress.com/994/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/wellrounded.wordpress.com/994/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=994&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://wellrounded.wordpress.com/2012/01/11/tr-069-verizon-fios-uses-it-but-so-what/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b0fedde4aaff436470ed98df59746af?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">swinful</media:title>
		</media:content>

		<media:content url="http://wellrounded.files.wordpress.com/2012/01/picture-2.png?w=300" medium="image">
			<media:title type="html">Picture 2</media:title>
		</media:content>
	</item>
		<item>
		<title>[Verizon FiOS] Using Juniper&#8217;s SSG 5 As The Main Router</title>
		<link>http://wellrounded.wordpress.com/2011/12/29/verizon-fios-using-junipers-ssg-5-as-the-main-router/</link>
		<comments>http://wellrounded.wordpress.com/2011/12/29/verizon-fios-using-junipers-ssg-5-as-the-main-router/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 03:44:07 +0000</pubDate>
		<dc:creator>swinful</dc:creator>
				<category><![CDATA[*Nix]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[coaxial connection]]></category>
		<category><![CDATA[Verizon FiOS]]></category>
		<category><![CDATA[wan connectivity]]></category>

		<guid isPermaLink="false">http://wellrounded.wordpress.com/?p=949</guid>
		<description><![CDATA[Using a Juniper SSG5 w/ ScreenOS as the main router for the Verizon FiOS service provides a number of features and benefits over using Verizon&#8217;s own wireless router. Some of which are: Built-in antivirus, antispam and web filtering, allowing for &#8230; <a href="http://wellrounded.wordpress.com/2011/12/29/verizon-fios-using-junipers-ssg-5-as-the-main-router/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=949&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_968" class="wp-caption alignleft" style="width: 160px"><a href="http://wellrounded.files.wordpress.com/2011/12/screen-shot-2011-12-29-at-12-06-57-pm.png"><img class="size-thumbnail wp-image-968" title="Juniper SSG 5 Wireless" src="http://wellrounded.files.wordpress.com/2011/12/screen-shot-2011-12-29-at-12-06-57-pm.png?w=150&#038;h=67" alt="Juniper SSG 5 Wireless" width="150" height="67" /></a><p class="wp-caption-text">Juniper SSG 5 Wireless</p></div>
<p>Using a Juniper SSG5 w/ ScreenOS as the main router for the Verizon FiOS service provides a number of features and benefits over using Verizon&#8217;s own wireless router. Some of which are:</p>
<ol>
<li>Built-in antivirus, antispam and web filtering, allowing for the possibility of stopping all viruses and malware before they damage your network.</li>
<li>Deep (packet) Inspection that has the potential to prevent application-level attacks from flooding the network.</li>
<li>Seven fixed 10/100 interfaces that can each operate individually or as a group in layer 2 and or layer 3 mode, while providing high-speed LAN connectivity and redundant WAN connectivity if so desired.</li>
<li>And much, much more. Here is the full list of <a href="www.juniper.net/us/en/local/pdf/datasheets/1000176-en.pdf">features and benefits for the Secure Services Gateways by Juniper Networks</a> (PDF).</li>
</ol>
<p><em>Also, worth nothing the is the fact that Verizon&#8217;s ActionTec routers use <a href="http://www.workssys.com/tr069brief">TR-069</a>, a WAN management protocol, that allows the device, also known as the Customer Premises Equipment (CPE), to get and send data to authorized parties or servers. By now having the Verizon ActionTec router behind our SSG we can effectively control this type of communication and even possibly capture the traffic it sends back and forth. There has been chatter on slashdot.org namely the article, <a href="http://tech.slashdot.org/story/10/08/01/1845234/verizon-changing-users-router-passwords">Verizon Changing Users Router Passwords</a>, in the past indirectly about this and the infamous open port 4567 on public facing ActionTec routers. My personal experience with TR-069 is later in this post.</em></p>
<p><a href="http://wellrounded.files.wordpress.com/2011/12/screen-shot-2011-12-29-at-10-32-59-am.png"><img class="alignleft size-thumbnail wp-image-953" title="Verizon MI424WR_front" src="http://wellrounded.files.wordpress.com/2011/12/screen-shot-2011-12-29-at-10-32-59-am.png?w=50&#038;h=150" alt="Verizon MI424WR" width="50" height="150" /></a>We have the Verizon wireless ActionTec, model MI424WR at home and it sits behind our SSG5 with an additional coaxial connection at the back of it. This coaxial is use for connecting one or more set-top boxes (STB) to receive video or provide data in the case of a MoCa setup. When using the SSG5 router from Juniper, we do not completely eliminate the use Verizon&#8217;s wireless router as it is needed for TV/Cable service via the coax cable, something the SSG5 cannot provide.  I have found, though your mileage might vary, when FiOS is first setup. By default, I am told, technicians perform a MoCA setup, unless a non-MoCA is requested by the customer (what I requested).</p>
<p>MoCA stands for <a title="Multimedia over Coax Alliance" href="http://en.wikipedia.org/wiki/Multimedia_over_Coax_Alliance">Multimedia over Coax Alliance</a>(MoCA) protocol, which allows for both data and video over a single coaxial cable. Hence, with a MoCA setup, there is no need to run an ethernet cable directly from the Optical Network Terminal (OTN) usually on the side of the home to the FiOS router inside the home. Instead a single coaxial cable is ran that allows both data and video and sometimes voice. So, if you are to use an SSG firewall or similar device with Verizon FiOS you will most likely want the non-MoCA setup, which is what I have for my SSG and it works great! Once working, the SSG needs to be configured in order to allow Verizon&#8217;s router to sit behind it using its WAN port. The WAN port of the ActionTec router needs access to the Internet for NAT of the of LAN and Wireless devices that sit behind it. This includes the STB as they need access to the Internet for retrieving channel listing. I will explain this setup via this rough diagram:</p>
<div id="attachment_965" class="wp-caption aligncenter" style="width: 632px"><a href="http://wellrounded.files.wordpress.com/2011/12/screen-shot-2011-12-29-at-11-59-21-am.png"><img class="size-full wp-image-965" title="FiOS SSG Setup" src="http://wellrounded.files.wordpress.com/2011/12/screen-shot-2011-12-29-at-11-59-21-am.png?w=640" alt="FiOS SSG Setup"   /></a><p class="wp-caption-text">FiOS SSG Setup</p></div>
<p>The setup is pretty straight forward. Again, this setup requires that:</p>
<ol>
<li>A Verizon tech provision a Non-MoCA setup.</li>
<li>An Ethernet cable is ran from the Optical Network Terminal (ONT), a Non-MoCA configuration, directly to a port of the SSG router (eth0/0) instead of the WAN port of the Verizon router.</li>
<li>The WAN port of the Verizon ActionTec router will connect to a physical port of the SSG to obtain an IP address via DHCP.</li>
</ol>
<p>The initial configuration to setup the SSG 5 will not be discussed in detail, but I assume the reader knows how to access the SSG device via the serial-console and or one of the network ports. In this setup of the SSG we:</p>
<ol>
<li>Configure eth0/0 as the WAN interface in the Untrust security zone allow it to act as a DHCP client.</li>
<li>Configure eth0/4 &#8212; eth0/6 to bind to bgroup0 on network: 192.168.2.0/24, in the Trust security zone (the WAN port of the Verizon ActionTec connects to once of these ports.)</li>
<li>Configure bgroup0 as a DHCP server to distribute IPs in the range: 192.168.2.30 &#8212; 192.168.2.60..</li>
</ol>
<p><strong>Configure eth0/0 as the WAN interface in the Untrust security zone allowing it to act as a DHCP client.</strong></p>
<p><pre class="brush: bash; gutter: false;">
set interface &quot;ethernet0/0&quot; zone &quot;Untrust&quot;
set interface ethernet0/0 route
set interface ethernet0/0 ip manageable
set interface ethernet0/0 manage ping
set interface ethernet0/0 manage ssl
set interface ethernet0/0 dhcp client enable
set interface ethernet0/0 route-deny
</pre></p>
<p>Afterwards verify that ethernet0/0 on the SSG has a public verizon IP address. You may have to wait a bit up to five minutes for the new IP to come in. Worst case, you may have to call Verizon to break the IP lease. There really is no need to restart the SSG. It will actively request an IP until it is satisfied.</p>
<p><strong>Configure eth0/4 &#8212; eth0/6 to bind to bgroup0 on network: 192.168.2.0/24, in the Trust security zone.</strong></p>
<p><pre class="brush: bash; gutter: false;">
set interface &quot;bgroup0&quot; zone &quot;Trust&quot;
set interface bgroup0 port ethernet0/4
set interface bgroup0 port ethernet0/5
set interface bgroup0 port ethernet0/6
set interface bgroup0 ip 192.168.1.1/24
set interface bgroup0 ip manageable
</pre></p>
<p><strong>Configure bgroup0 as a DHCP server to distribute IPs in the range: 192.168.2.30 &#8212; 192.168.2.60.</strong></p>
<p><pre class="brush: bash; gutter: false;">
set interface bgroup0 dhcp server service
set interface bgroup0 dhcp server auto
set interface bgroup0 dhcp server ip 192.168.1.30 to 192.168.1.60
</pre></p>
<p>Afterwards, plug-in the Verizon ActionTec router to one of these ports, ethernet0/4, and it should receive an IP in the defined range. At this point, any communication that is to take place originating from the ActionTec must pass through the SSG.</p>
<p>All of the above command-line can be configured via the SSG&#8217;s web interface as well. I don&#8217;t show that here as it is pretty much self-explanatory.</p>
<p>Once steps 1 &#8212; 3 are complete. The WAN port of the Verizon ActionTec router may be plugged into bgroup0 to receive an IP via DHCP. Next, the policy &#8220;Trust&#8221; to &#8220;UnTrust&#8221; should be configured to allow traffic for all devices in the Trust network out to the Untrust. It is left up to the reader to allow or deny specific traffic.</p>
<p><strong>Configure DefaultAllow Policy from Trust to Untrust for devices part of bgroup0</strong></p>
<p><pre class="brush: bash; gutter: false;">
set policy name &quot;DefaultAllow&quot; from &quot;Trust&quot; to &quot;Untrust&quot; &quot;Any&quot; &quot;Any&quot; &quot;ANY&quot; permit log
</pre></p>
<p><strong>My personal experience with TR-069</strong></p>
<p>Since the switch to have Verizon&#8217;s router &#8220;piggy back&#8221; my SSG I have noticed periodic communication between our Verizon ActionTec router and at least two public IP addresses. Communication is initiated from the Verizon ActionTec router or CPE device about every 10 to 15 minutes to the following two IP addresses: <strong>72.76.255.44</strong> and <strong>72.76.255.36</strong>. Active communication takes place on tcp port 80 and UDP port 6794.</p>
<p>From a <strong>whois</strong> query and reverse lookup both IPs belong to Verizon and not some third party &#8212; at least not by first glance:</p>
<blockquote><p>OrgName:        Verizon Online LLC<br />
OrgId:          VRIS<br />
Address:        22001 Loudoun County Parkway<br />
City:           Ashburn<br />
StateProv:      VA<br />
PostalCode:     20147<br />
Country:        US<br />
RegDate:<br />
Updated:        2010-08-17<br />
Ref:            http://whois.arin.net/rest/org/VRIS
</p></blockquote>
<p>A reverse lookup shows one (72.76.255.36) IP as a DNS server and the other (72.76.255.44) as something else, probably used for channel listing update by the looks of the hostname:</p>
<p><pre class="brush: plain;">

$ dig -x 72.76.255.36 | egrep &quot;SOA|PTR&quot;
255.76.72.in-addr.arpa.	834	IN	SOA	ns5.verizon.net. dns.verizon.com. 2010073001 86400 3600 604800 86400

$ dig -x 72.76.255.44 | egrep &quot;SOA|PTR&quot; 
44.255.76.72.in-addr.arpa. 86309 IN	PTR	mercuryipg.frhdnjbbh09.fiostv.verizon.net.

</pre></p>
<p>In another post, I plan on snooping the traffic initiated by the Verizon ActionTec router to the named IPs above. Stay tuned!</p>
<p>Cheers,<br />
-swinful</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/wellrounded.wordpress.com/949/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/wellrounded.wordpress.com/949/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/wellrounded.wordpress.com/949/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/wellrounded.wordpress.com/949/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/wellrounded.wordpress.com/949/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/wellrounded.wordpress.com/949/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/wellrounded.wordpress.com/949/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/wellrounded.wordpress.com/949/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/wellrounded.wordpress.com/949/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/wellrounded.wordpress.com/949/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/wellrounded.wordpress.com/949/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/wellrounded.wordpress.com/949/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/wellrounded.wordpress.com/949/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/wellrounded.wordpress.com/949/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=949&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://wellrounded.wordpress.com/2011/12/29/verizon-fios-using-junipers-ssg-5-as-the-main-router/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b0fedde4aaff436470ed98df59746af?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">swinful</media:title>
		</media:content>

		<media:content url="http://wellrounded.files.wordpress.com/2011/12/screen-shot-2011-12-29-at-12-06-57-pm.png?w=150" medium="image">
			<media:title type="html">Juniper SSG 5 Wireless</media:title>
		</media:content>

		<media:content url="http://wellrounded.files.wordpress.com/2011/12/screen-shot-2011-12-29-at-10-32-59-am.png?w=50" medium="image">
			<media:title type="html">Verizon MI424WR_front</media:title>
		</media:content>

		<media:content url="http://wellrounded.files.wordpress.com/2011/12/screen-shot-2011-12-29-at-11-59-21-am.png" medium="image">
			<media:title type="html">FiOS SSG Setup</media:title>
		</media:content>
	</item>
		<item>
		<title>[Puppet] Using &#8216;macports&#8217; as a provider instead of &#8216;darwinport&#8217;</title>
		<link>http://wellrounded.wordpress.com/2011/11/14/puppet-using-macports-as-a-provider-instead-of-darwinport/</link>
		<comments>http://wellrounded.wordpress.com/2011/11/14/puppet-using-macports-as-a-provider-instead-of-darwinport/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 22:33:41 +0000</pubDate>
		<dc:creator>swinful</dc:creator>
				<category><![CDATA[*Nix]]></category>

		<guid isPermaLink="false">http://wellrounded.wordpress.com/?p=931</guid>
		<description><![CDATA[I ran into an issue recently testing puppet on my Mac. Trying to &#8220;ensure&#8221; the package (ipcalc) was installed on my test system resulted in the error: The site manifest, &#8216;site.pp&#8217;, had the following definitions: stating that the packaging system &#8230; <a href="http://wellrounded.wordpress.com/2011/11/14/puppet-using-macports-as-a-provider-instead-of-darwinport/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=931&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://wellrounded.files.wordpress.com/2011/11/png.png"><img src="http://wellrounded.files.wordpress.com/2011/11/png.png?w=640" alt="" title="MacPorts"   class="alignleft size-full wp-image-942" /></a>I ran into an issue recently testing puppet on my Mac. Trying to &#8220;ensure&#8221; the package (ipcalc) was installed on my test system resulted in the error:</p>
<p><pre class="brush: plain; gutter: false;">
`--&gt; sudo puppet agent --no-daemonize --test
info: Retrieving plugin
err: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve information from source(s) puppet://&lt;server-name&gt;/plugins
info: Caching catalog for &lt;fqdn&gt;
info: Applying configuration version '1321291410'
err: /Stage[main]//Package[ipcalc]/ensure: change from absent to present failed: Execution of '/opt/local/bin/port upgrade ipcalc' returned 1: Error: ipcalc is not installed
To report a bug, see &lt;http://guide.macports.org/#project.tickets&gt;

notice: Finished catalog run in 61.49 seconds
Changes:
            Total: 1
Events:
          Failure: 1
            Total: 1
Resources:
          Changed: 1
           Failed: 1
      Out of sync: 1
            Total: 8
Time:
   Config retrieval: 0.38
       Filebucket: 0.00
          Package: 30.99
         Schedule: 0.00
60.51s user 2.53s system 99% cpu 1:03.12s total
</pre></p>
<p>The site manifest, &#8216;site.pp&#8217;, had the following definitions:</p>
<p><pre class="brush: plain;">
Package {
  provider =&gt; $operatingsystem ? {
    darwin =&gt; darwinport,
  }
}

package {'ipcalc':
  ensure =&gt; installed,
}
</pre></p>
<p>stating that the packaging system to use on a Mac (darwin) is the &#8216;darwinport&#8217; port system. I use &#8216;Mac Ports&#8217;, but the only provider I could find close enough was &#8216;darwinport&#8217; from the output of &#8220;<strong>puppet describe -s package</strong>&#8220;:</p>
<p><pre class="brush: bash; gutter: false;">
&gt; puppet describe -s package
...edited...
Providers
---------
    aix, appdmg, apple, apt, aptitude, aptrpm, blastwave, darwinport, dpkg,
    fink, freebsd, gem, hpux, macports, nim, openbsd, pkg, pkgdmg, portage,
    ports, portupgrade, rpm, rug, sun, sunfreeware, up2date, urpmi, yum,
    zypper
</pre></p>
<p>Looking at the initial error, </p>
<p>&#8220;<strong>&#8216;/opt/local/bin/port upgrade ipcalc&#8217; returned 1: Error: ipcalc is not installed&#8230;</strong>&#8220;, </p>
<p>lead me to the realization that on the command-line &#8220;<strong>port installed</strong>&#8221; and not &#8220;<strong>port upgrade</strong>&#8221; should have been executed by puppet. But, with &#8216;Mac Ports&#8217; as the package management system using &#8220;<strong>port upgrade </strong>&#8221; to install a non-existent port will indeed fail. Apparently this was not the case with the original darwinport packaging system. This was confirmed by inspecting the puppet provider source file: &#8220;/opt/local/lib/ruby/site_ruby/1.8/puppet/provider/package/darwinport.rb&#8221; on the local system. It can be found with the command:</p>
<p><pre class="brush: bash; gutter: false;">
--&gt; port contents puppet | grep darwin                                  
 /opt/local/lib/ruby/site_ruby/1.8/puppet/provider/package/darwinport.rb
</pre></p>
<p>Looking at the file confirmed the &#8220;install&#8221; function definition was relying on &#8220;port upgrade&#8221; to ensure that even non-existent packages should be installed:</p>
<p><pre class="brush: ruby; gutter: false;"> 
45 
46   def install
47     should = @resource.should(:ensure)
48 
49     # Seems like you can always say 'upgrade'
50     output = port &quot;upgrade&quot;, @resource[:name]
51     if output =~ /^Error: No port/
52       raise Puppet::ExecutionFailure, &quot;Could not find package #{@resource[:name]}&quot;
53     end
54   end
55 
</pre></p>
<p>I changed the code on line number 50 to instead read &#8220;<strong>output = port &#8220;install&#8221;, @resource[:name]</strong>&#8221; and that fixed the problem. However, since my current system is using &#8220;Mac Ports&#8221; I would like to specify &#8220;macports&#8221; as a provider instead of &#8216;darwinport&#8217; in my site manifest. To accomplish that I simply copied the provider file for &#8220;darwinport.rb to macports.rb&#8221;:</p>
<p><pre class="brush: bash;">
--&gt; sudo cp /opt/local/lib/ruby/site_ruby/1.8/puppet/provider/package/darwinport.rb /opt/local/lib/ruby/site_ruby/1.8/puppet/provider/package/macports.rb
</pre></p>
<p>and made the below changes specified in the diff output below:</p>
<p><pre class="brush: diff; gutter: false;">
--- /opt/local/lib/ruby/site_ruby/1.8/puppet/provider/package/darwinport.rb	2011-10-31 11:12:17.000000000 -0400
+++ /opt/local/lib/ruby/site_ruby/1.8/puppet/provider/package/macports.rb	2011-11-14 12:00:02.000000000 -0500
@@ -1,7 +1,7 @@
 require 'puppet/provider/package'
 
-Puppet::Type.type(:package).provide :darwinport, :parent =&gt; Puppet::Provider::Package do
-  desc &quot;Package management using DarwinPorts on OS X.&quot;
+Puppet::Type.type(:package).provide :macports, :parent =&gt; Puppet::Provider::Package do
+  desc &quot;Package management using Mac Ports on OS X.&quot;
 
   confine :operatingsystem =&gt; :darwin
   commands :port =&gt; &quot;/opt/local/bin/port&quot;
@@ -47,6 +47,16 @@
     should = @resource.should(:ensure)
 
     # Seems like you can always say 'upgrade'
+    output = port &quot;install&quot;, @resource[:name]
+    if output =~ /^Error: No port/
+      raise Puppet::ExecutionFailure, &quot;Could not find package #{@resource[:name]}&quot;
+    end
+  end
+
+  def upgrade
+    should = @resource.should(:ensure)
+
+    # Seems like you can always say 'upgrade'
     output = port &quot;upgrade&quot;, @resource[:name]
     if output =~ /^Error: No port/
       raise Puppet::ExecutionFailure, &quot;Could not find package #{@resource[:name]}&quot;
</pre></p>
<p>Now I am able to change my site manifest, site.pp, to read:</p>
<p><pre class="brush: plain;">
Package {
  provider =&gt; $operatingsystem ? {
    darwin =&gt; macports,
  }
}

package {'ipcalc':
  ensure =&gt; installed,
}
</pre></p>
<p>and it executes without issues when installing a new port:</p>
<p><pre class="brush: plain; gutter: false;">
`--&gt; sudo puppet agent --no-daemonize --test
Password:
info: Retrieving plugin
err: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve information from source(s) puppet://&lt;server-name&gt;/plugins
info: Caching catalog for &lt;fqdn&gt;
info: Applying configuration version '1321293994'
notice: /Stage[main]//Package[ipcalc]/ensure: created
notice: Finished catalog run in 63.30 seconds
Changes:
            Total: 1
Events:
          Success: 1
            Total: 1
Resources:
          Changed: 1
      Out of sync: 1
            Total: 8
Time:
   Config retrieval: 0.44
       Filebucket: 0.00
          Package: 32.58
         Schedule: 0.00
60.94s user 2.84s system 92% cpu 1:09.09s total

`--&gt; port installed ipcalc
The following ports are currently installed:
  ipcalc @0.41_0 (active)
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/wellrounded.wordpress.com/931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/wellrounded.wordpress.com/931/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/wellrounded.wordpress.com/931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/wellrounded.wordpress.com/931/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/wellrounded.wordpress.com/931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/wellrounded.wordpress.com/931/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/wellrounded.wordpress.com/931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/wellrounded.wordpress.com/931/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/wellrounded.wordpress.com/931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/wellrounded.wordpress.com/931/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/wellrounded.wordpress.com/931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/wellrounded.wordpress.com/931/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/wellrounded.wordpress.com/931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/wellrounded.wordpress.com/931/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=931&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://wellrounded.wordpress.com/2011/11/14/puppet-using-macports-as-a-provider-instead-of-darwinport/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b0fedde4aaff436470ed98df59746af?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">swinful</media:title>
		</media:content>

		<media:content url="http://wellrounded.files.wordpress.com/2011/11/png.png" medium="image">
			<media:title type="html">MacPorts</media:title>
		</media:content>
	</item>
		<item>
		<title>[Solaris 11] The #1 Enterprise OS!!</title>
		<link>http://wellrounded.wordpress.com/2011/11/08/solaris-11-the-1-enterprise-os/</link>
		<comments>http://wellrounded.wordpress.com/2011/11/08/solaris-11-the-1-enterprise-os/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 20:28:20 +0000</pubDate>
		<dc:creator>swinful</dc:creator>
				<category><![CDATA[*Nix]]></category>

		<guid isPermaLink="false">http://wellrounded.wordpress.com/?p=922</guid>
		<description><![CDATA[Just received my reminder to attend the the Oracle Solaris 11 Launch, on Wednesday, November 9, 2011. This event will be at: Gotham Hall 1356 Broadway at 36th Street New York, NY 10018 and I am definitely looking forward to &#8230; <a href="http://wellrounded.wordpress.com/2011/11/08/solaris-11-the-1-enterprise-os/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=922&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<a href="http://wellrounded.files.wordpress.com/2011/11/508119.jpg"><img src="http://wellrounded.files.wordpress.com/2011/11/508119.jpg?w=300&#038;h=79" alt="" title="Solaris 11 Launch Event" width="300" height="79" class="size-medium wp-image-923" /></a>
<p>Just received my reminder to attend the the <a href="http://www.oracle.com/us/products/servers-storage/solaris/solaris11/overview/index.html">Oracle Solaris 11 Launch</a>, on Wednesday, November 9, 2011. This event will be at:</p>
<blockquote><p>Gotham Hall<br />
1356 Broadway at 36th Street<br />
New York, NY 10018</p></blockquote>
<p>and I am definitely looking forward to it. This release is geared towards Cloud computing, but as of now there has not been much on what new stunning innovations we will see out of this release of Solaris. Stay tuned!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/wellrounded.wordpress.com/922/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/wellrounded.wordpress.com/922/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/wellrounded.wordpress.com/922/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/wellrounded.wordpress.com/922/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/wellrounded.wordpress.com/922/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/wellrounded.wordpress.com/922/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/wellrounded.wordpress.com/922/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/wellrounded.wordpress.com/922/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/wellrounded.wordpress.com/922/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/wellrounded.wordpress.com/922/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/wellrounded.wordpress.com/922/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/wellrounded.wordpress.com/922/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/wellrounded.wordpress.com/922/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/wellrounded.wordpress.com/922/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=922&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://wellrounded.wordpress.com/2011/11/08/solaris-11-the-1-enterprise-os/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b0fedde4aaff436470ed98df59746af?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">swinful</media:title>
		</media:content>

		<media:content url="http://wellrounded.files.wordpress.com/2011/11/508119.jpg?w=300" medium="image">
			<media:title type="html">Solaris 11 Launch Event</media:title>
		</media:content>
	</item>
		<item>
		<title>[SUDO] Add Custom Schema to Oracle Directory Server Enterprise (ODSEE)</title>
		<link>http://wellrounded.wordpress.com/2011/11/07/sudo-add-custom-schema-to-oracle-directory-server-enterprise-odsee/</link>
		<comments>http://wellrounded.wordpress.com/2011/11/07/sudo-add-custom-schema-to-oracle-directory-server-enterprise-odsee/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 04:43:03 +0000</pubDate>
		<dc:creator>swinful</dc:creator>
				<category><![CDATA[*Nix]]></category>

		<guid isPermaLink="false">http://wellrounded.wordpress.com/?p=911</guid>
		<description><![CDATA[By default Oracle Directory Server Enterprise (ODSEE) LDAP does not include any schemas for sudo during or after the install. This is something that must be done manually after installation if one plans on using sudoers with LDAP. It is &#8230; <a href="http://wellrounded.wordpress.com/2011/11/07/sudo-add-custom-schema-to-oracle-directory-server-enterprise-odsee/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=911&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://wellrounded.files.wordpress.com/2011/11/oralogo-small.gif"><img src="http://wellrounded.files.wordpress.com/2011/11/oralogo-small.gif?w=640" alt="" title="oralogo-small"   class="alignleft size-full wp-image-916" /></a>By default Oracle Directory Server Enterprise (ODSEE) LDAP does not include any schemas for sudo during or after the install. This is something that must be done manually after installation if one plans on using sudoers with LDAP. It is pretty straight forward to get it working properly. Hopefully this will help get the ball rolling for those who may be considering using SUDO with ODSEE.</p>
<p>Below I describe how to properly use the OpenLDAP Sudoer&#8217;s LDAP schema, which is commonly found with sudo source and binary distributions as schema.OpenLDAP. We will take this schema and make it functional with our instance of Oracle Directory Server Enterprise Edition (ODSEE). Unfortunately, one cannot just use the schama.OpenLDAP without prior modification when using ODSEE. The original schema.OpenLDAP has to be changed, slightly, to work well with ODSEE.</p>
<p>As the example below illustrates our custom schema file should be named accordingly, prefixed with a number. The number should be higher than any of the default ldif&#8217;s in the &#8216;instance schema folder&#8217;, but less than or equal to 99. For example, here are the default listings of the ldif&#8217;s in my <strong>/config/schema/</strong> folder:</p>
<p><pre class="brush: bash;">
bash-3.00# ls | pr -3
00core.ldif             50ns-calendar.ldif      50ns-media.ldif
00ds6pwp.ldif           50ns-certificate.ldif   50ns-mlm.ldif
05rfc2247.ldif          50ns-compass.ldif       50ns-msg.ldif
05rfc2927.ldif          50ns-delegated-admin.ld 50ns-netshare.ldif
11rfc2307.ldif          50ns-directory.ldif     50ns-news.ldif
20subscriber.ldif       50ns-legacy.ldif        50ns-proxy.ldif
25java-object.ldif      50ns-mail.ldif          50ns-value.ldif
28pilot.ldif            50ns-mcd-browser.ldif   50ns-wcal.ldif
30ns-common.ldif        50ns-mcd-config.ldif    50ns-web.ldif
50iplanet-servicemgt.ld 50ns-mcd-li.ldif        98sudo.ldif
50ns-admin.ldif         50ns-mcd-mail.ldif      99user.ldif

</pre></p>
<p>Nothing will prevent you from prefixing your custom schema file with &#8217;00&#8242;, but doing so means the custom schema may be loaded before more important system schemas. And, this could lead to stability issues down the road. While the contents of our below custom schema.OpenLDAP file may be appended to the ODSEE &#8216;<strong>99user.ldif</strong>&#8216; file we will create our own seperate file, <strong>98sudo.ldif</strong> and modify it. Again, one may not just copy the sudoers schema.OpenLDAP file as-is without modifying its contents and expect it to work with Oracle Directory Server. Here is the creation of the schema:</p>
<p><pre class="brush: bash;">
# cat &gt; 98sudo.ldif &lt;&lt;HERE 
# The following schema, in OpenLDAP format, is included with sudo source and
# binary distributions as schema.OpenLDAP.
#
#
dn: cn=schema
objectclass: top
objectclass: ldapSubentry
objectclass: subschema
cn: schema
#
# aci to ensure that the standard schema attributes are visible to
# all LDAP clients (anonymous access).
#
aci: (target=&quot;ldap:///cn=schema&quot;)(targetattr !=&quot;aci&quot;)(version 3.0;acl &quot;anonymous, no acis&quot;; 
  allow (read, search, compare) userdn = &quot;ldap:///anyone&quot;;) 
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s) who may run sudo' 
  EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch 
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO')
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s) who may run sudo' 
  EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch 
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO')
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Command(s) to be executed by sudo' 
  EQUALITY caseExactIA5Match 
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO')
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(s) impersonated by sudo' 
  EQUALITY caseExactIA5Match 
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO')
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Options(s) followed by sudo' 
  EQUALITY caseExactIA5Match 
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO')
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'User(s) impersonated by sudo' 
  EQUALITY caseExactIA5Match 
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO')
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC 'Group(s) impersonated by sudo' 
  EQUALITY caseExactIA5Match 
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO')
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.8 NAME 'sudoNotBefore' DESC 'Start of time interval for which the entry is valid' 
  EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch 
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 X-ORIGIN 'SUDO')
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.9 NAME 'sudoNotAfter' DESC 'End of time interval for which the entry is valid' 
  EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch 
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 X-ORIGIN 'SUDO')
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.10 NAME 'sudoOrder' DESC 'an integer to order the sudoRole entries' 
  EQUALITY integerMatch ORDERING integerOrderingMatch 
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 X-ORIGIN 'SUDO')
objectClasses: ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL DESC 'Sudoer Entries' MUST ( cn ) 
  MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ sudoNotBefore 
  $ sudoNotAfter $ sudoOrder $ description ) X-ORIGIN 'SUDO')
HERE
</pre></p>
<p><strong>Note</strong>: Depending on how your copy &amp; paste worked, you may want to consider having all &#8216;attribute*&#8217; entry lines above on just one line to avoid issues with slapd loading the custom file.</p>
<p>Once done, restart the instance while tailing the error log residing under &#8220;<strong>//logs/error</strong>&#8220;. This allows you to know right away if something went wrong!</p>
<p>So in one window tail the error log:</p>
<p><pre class="brush: bash;">
# tail -f /&lt;instance-path&gt;/logs/errors
...edited...
[07/Nov/2011:16:42:19 -0500] - Closing all interfaces port 389 for LDAP requests
[07/Nov/2011:16:42:19 -0500] - Closing all interfaces port 636 for LDAPS requests
[07/Nov/2011:16:42:19 -0500] - DEBUG - conn=-1 op=-1 msgId=-1 -  slapd shutting down - signaling operation threads
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 27 threads to terminate
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 22 threads to terminate
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 19 threads to terminate
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 18 threads to terminate
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 17 threads to terminate
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 16 threads to terminate
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 15 threads to terminate
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 12 threads to terminate
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 11 threads to terminate
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 8 threads to terminate
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 6 threads to terminate
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 4 threads to terminate
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 2 threads to terminate
[07/Nov/2011:16:42:19 -0500] - slapd shutting down - waiting for 0 threads to terminate
[07/Nov/2011:16:42:19 -0500] - libumem_dummy_thread started.
[07/Nov/2011:16:42:19 -0500] - Waiting for 6 database threads to stop
[07/Nov/2011:16:42:20 -0500] - All database threads now stopped
[07/Nov/2011:16:42:20 -0500] - slapd stopped.
[07/Nov/2011:16:42:22 -0500] - Sun-Directory-Server/11.1.1.3.0 B2010.0630.2254 (64-bit) starting up
[07/Nov/2011:16:42:23 -0500] - Listening on all interfaces port 389 for LDAP requests
[07/Nov/2011:16:42:23 -0500] - Listening on all interfaces port 636 for LDAPS requests
[07/Nov/2011:16:42:23 -0500] - slapd started.
[07/Nov/2011:16:42:23 -0500] - INFO: 88 entries in the directory database.
[07/Nov/2011:16:42:23 -0500] - INFO: add:0, modify:0, modrdn:0, search:0, delete:0, compare:0, bind:0 since startup.
</pre></p>
<p>While in the other window restart the instance:</p>
<p><pre class="brush: bash;">
# dsadm stop /&lt;instance-path&gt;
# dsadm start /&lt;instance-path&gt;
</pre></p>
<p>Or, you could have restarted in one command with:</p>
<p><pre class="brush: bash;">
# dsadm restart /&lt;instance-path&gt;
</pre></p>
<p>Verify that the new attributes exist within the LDAP database by performing a basic ldap search against the directory server:</p>
<p><pre class="brush: bash;">
bash-3.00# ldapsearch -T -b cn=schema &quot;(objectclass=*)&quot; | grep -i sudo
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO' )
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.9 NAME 'sudoNotAfter' DESC 'End of time interval for which the entry is valid' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 X-ORIGIN 'SUDO' )
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO' )
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Command(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO' )
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'User(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO' )
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Options(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO' )
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.10 NAME 'sudoOrder' DESC 'an integer to order the sudoRole entries' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 X-ORIGIN 'SUDO' )
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.8 NAME 'sudoNotBefore' DESC 'Start of time interval for which the entry is valid' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 X-ORIGIN 'SUDO' )
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC 'Group(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO' )
attributeTypes: ( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 X-ORIGIN 'SUDO' )
objectClasses: ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' DESC 'Sudoer Entries' STRUCTURAL MUST cn MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ sudoNotBefore $ sudoNotAfter $ sudoOrder $ description ) X-ORIGIN 'SUDO' )
</pre></p>
<p>Before wrapping things up, it is a good idea to also create an index of the attribute &#8216;sudoUser&#8217;. For example, if your base suffix is &#8220;<strong>dc=goldcoast,dc=com</strong>&#8220;, you can create the index for the attribute &#8216;sudoUser&#8217; by performing:</p>
<p><pre class="brush: bash;">
# dsconf create-index dc=goldcoast,dc=com sudoUser
</pre></p>
<p>And verify:</p>
<p><pre class="brush: bash;">
# dsconf list-indexes
Enter &quot;cn=Directory Manager&quot; password: 
...edited...
dc=goldcoast,dc=com           sudoUser 
...edited...
</pre></p>
<p><strong>References:</strong></p>
<ol>
<li>
<a href="http://download.oracle.com/docs/cd/E19656-01/821-1504/aalce/index.html">When Creating Custom Schema Files, Oracle Fusion Middleware Administration Guide for Oracle Directory Server</a>
</li>
<li>
<a href="http://download.oracle.com/docs/cd/E19656-01/821-1504/extend-schema-file/index.html">Extending Schema With a Custom Schema File Oracle Fusion Middleware Administration Guide for Oracle Directory Server</a>
</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/wellrounded.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/wellrounded.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/wellrounded.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/wellrounded.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/wellrounded.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/wellrounded.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/wellrounded.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/wellrounded.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/wellrounded.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/wellrounded.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/wellrounded.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/wellrounded.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/wellrounded.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/wellrounded.wordpress.com/911/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=wellrounded.wordpress.com&amp;blog=663307&amp;post=911&amp;subd=wellrounded&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://wellrounded.wordpress.com/2011/11/07/sudo-add-custom-schema-to-oracle-directory-server-enterprise-odsee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b0fedde4aaff436470ed98df59746af?s=96&#38;d=wavatar&#38;r=G" medium="image">
			<media:title type="html">swinful</media:title>
		</media:content>

		<media:content url="http://wellrounded.files.wordpress.com/2011/11/oralogo-small.gif" medium="image">
			<media:title type="html">oralogo-small</media:title>
		</media:content>
	</item>
	</channel>
</rss>
