<?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>coder . cl &#187; sysadmin</title>
	<atom:link href="http://coder.cl/category/sysadmin/feed/" rel="self" type="application/rss+xml" />
	<link>http://coder.cl</link>
	<description>system programmer &#38; web developer</description>
	<lastBuildDate>Thu, 29 Jul 2010 21:52:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>configuring snmptrapd</title>
		<link>http://coder.cl/2010/07/configuring-snmptrapd/</link>
		<comments>http://coder.cl/2010/07/configuring-snmptrapd/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 23:28:27 +0000</pubDate>
		<dc:creator>Daniel Molina Wegener</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://coder.cl/?p=703</guid>
		<description><![CDATA[snmptrapd(8) is a SNMP trap daemon, in other words, it captures SNMP notifications from the network and similar devices. In this post I will try to explain how to configure this daemon to allow a network server to process SNMP traps using both, embeded perl handlers for snmptrapd(8) and plain standard input &#8212; or stdin [...]]]></description>
			<content:encoded><![CDATA[<p><strong>snmptrapd(8)</strong> is a SNMP trap daemon, in other words, it captures SNMP notifications from the network and similar devices. In this post I will try to explain how to configure this daemon to allow a network server to process SNMP traps using both, embeded perl handlers for <strong>snmptrapd(8)</strong> and plain standard input &mdash; or <i>stdin</i> &mdash; handlers.</p>
<p><span id="more-703"></span></p>
<p></p>
<h3>daemon configuration</h3>
<p>The daemon is quite easy to configure, you must setup the <strong>snmptrapd.conf(5snmp)</strong> file. For this configuration, you must read your desired configuration options, such as <i>logging</i> and <i>execution</i>. For example if we have a <i>community</i> called <i>inetsnmp</i>, we can configure the file to allow traps from that community and also configure a trap handler written in perl.</p>
<pre name="code" class="bash">

# configure inetsnmp community to allow logging,
# execution of handlers and network traffic.
authCommunity   log,execute,net         inetsnmp

# perl embeded handler.
perl do "/usr/share/snmp/handler/trapdembed.pl"
</pre>
<p>This configuration is not enough, the <strong>snmptrapd(8)</strong> daemon uses <strong>hosts.allow(5)</strong> facility, so we need to add the proper rule in that file:</p>
<pre name="code" class="bash">

snmptrapd : 192.168.100.0/255.255.255.0 : allow
snmptrapd : 10.10.10.0/255.255.255.0 : allow
</pre>
<p></p>
<h3>the embeded perl handler</h3>
<pre name="code" class="perl">
#!/usr/bin/perl -w
#

# strict perl is better
use strict;
use FileHandle;
use Data::Dumper;
use NetSNMP::TrapReceiver;

# we create a sample/demo log file...
my $log = FileHandle-&gt;new(&quot;/var/log/snmptrapsample.log&quot;, &quot;a+&quot;) ||
    die &quot;Failed to open log file&quot;;

# how we process an SNMP variable
sub process_var {
    my ($var) = @_;
    my %res;
    my $name = &quot;$var-&gt;[0]&quot;;
    my ($vt, $vv) = split /: /, &quot;$var-&gt;[1]&quot;;
    $res{'oid'} = $name;
    $res{'type'} = $vt;
    $res{'value'} = $vv;
    return \%res;
}

# our default receiver
sub default_receiver {
    my ($pdu, $ivars) = @_;
    my %vars;
    $log-&gt;print(Dumper($pdu));
    foreach my $k (@{$_[1]}) {
        $vars{$k-&gt;[0]} = process_var($k);
    }
    $log-&gt;print(Dumper(\%vars));
    $log-&gt;flush;
}

# every OIDs pass through the default_receiver
NetSNMP::TrapReceiver::register(&quot;all&quot;, \&amp;default_receiver) ||
    die &quot;Failed to laod Sample Trap Receiver\n&quot;;

# status message...
print STDERR &quot;Loaded Sample Trap Receiver\n&quot;;
</pre>
<p>This <strong>perl(1)</strong> handler will allow you basically to create a handler which is capable to process SNMP notifications creating two main variables on the handler itself <i>$pdu</i> which is the reference to the <i>%pdu</i> hash and <i>%vars</i> hash. Both hashes contains the proper data to process the request as you want:</p>
<pre name="code" class="perl">

%pdu = {
    'notificationtype' =&gt; 'TRAP',
    'receivedfrom' =&gt; 'UDP: [10.10.10.1]:53951-&gt;[192.168.100.5]',
    'version' =&gt; 1,
    'errorstatus' =&gt; 0,
    'messageid' =&gt; 0,
    'community' =&gt; 'public',
    'transactionid' =&gt; 1,
    'errorindex' =&gt; 0,
    'requestid' =&gt; 1012897136
};

%vars = {
    'IF-MIB::ifDescr' =&gt; {
        'value' =&gt; 'eth0',
        'type' =&gt; 'STRING',
        'oid' =&gt; 'IF-MIB::ifDescr'
    },
    'IF-MIB::ifAdminStatus.1' =&gt; {
        'value' =&gt; '1',
        'type' =&gt; 'INTEGER',
        'oid' =&gt; 'IF-MIB::ifAdminStatus.1'
    },
    'DISMAN-EVENT-MIB::sysUpTimeInstance' =&gt; {
        'value' =&gt; '(0) 0:00:00.00',
        'type' =&gt; 'Timeticks',
        'oid' =&gt; 'DISMAN-EVENT-MIB::sysUpTimeInstance'
    },
    'IF-MIB::ifIndex.1' =&gt; {
        'value' =&gt; '1',
        'type' =&gt; 'INTEGER',
        'oid' =&gt; 'IF-MIB::ifIndex.1'
    },
    'SNMPv2-MIB::snmpTrapOID.0' =&gt; {
        'value' =&gt; 'IF-MIB::linkUp',
        'type' =&gt; 'OID',
        'oid' =&gt; 'SNMPv2-MIB::snmpTrapOID.0'
    },
    'IF-MIB::ifOperStatus.1' =&gt; {
        'value' =&gt; '1',
        'type' =&gt; 'INTEGER',
        'oid' =&gt; 'IF-MIB::ifOperStatus.1'
    }
};
</pre>
<p>Where each OID or variable, can be treated by using the <strong>NetSNMP::OID</strong> package. Fora <i>stdin</i> handler, if you don&#8217;t know about <strong>perl(1)</strong>, the difference is made on the <strong>snmptrapd.conf(5snmp)</strong> file, instead of configuring a global perl script which itself registers which OIDs will handle, you need to configure a global trap handler or each handler for each OID that you want to handle:</p>
<pre name="code" class="bash">

# configure inetsnmp community to allow logging,
# execution of handlers and network traffic.
authCommunity   log,execute,net         inetsnmp

traphandle     default           /usr/share/snmp/handler/defaultstding.py   default
traphandle     IF-MIB::linkUp    /usr/share/snmp/handler/ifuphandler.py     up
</pre>
<p>This will make your script or application to receive the OID data from <i>stdin</i> as follows:</p>
<pre>
router
UDP: [10.10.10.1]:37745->[192.168.100.5]
DISMAN-EVENT-MIB::sysUpTimeInstance 0:0:00:00.00
SNMPv2-MIB::snmpTrapOID.0 IF-MIB::linkUp
IF-MIB::ifIndex.1 1
IF-MIB::ifAdminStatus.1 up
IF-MIB::ifOperStatus.1 up
IF-MIB::ifDescr eth0
</pre>
<p>And also will require that you will enable in some manner the processing of that data as <i>plain text</i>.</p>
<p>Good luck configuring SNMP traps <img src='http://coder.cl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>



share this article at: 


	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F&amp;title=configuring%20snmptrapd&amp;source=coder+.+cl+system+programmer+%26amp%3B+web+developer&amp;summary=snmptrapd%288%29%20is%20a%20SNMP%20trap%20daemon%2C%20in%20other%20words%2C%20it%20captures%20SNMP%20notifications%20from%20the%20network%20and%20similar%20devices.%20In%20this%20post%20I%20will%20try%20to%20explain%20how%20to%20configure%20this%20daemon%20to%20allow%20a%20network%20server%20to%20process%20SNMP%20traps%20using%20both%2C%20embed" title="LinkedIn"><img src="http://coder.cl/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F&amp;title=configuring%20snmptrapd&amp;notes=snmptrapd%288%29%20is%20a%20SNMP%20trap%20daemon%2C%20in%20other%20words%2C%20it%20captures%20SNMP%20notifications%20from%20the%20network%20and%20similar%20devices.%20In%20this%20post%20I%20will%20try%20to%20explain%20how%20to%20configure%20this%20daemon%20to%20allow%20a%20network%20server%20to%20process%20SNMP%20traps%20using%20both%2C%20embed" title="del.icio.us"><img src="http://coder.cl/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F&amp;title=configuring%20snmptrapd&amp;bodytext=snmptrapd%288%29%20is%20a%20SNMP%20trap%20daemon%2C%20in%20other%20words%2C%20it%20captures%20SNMP%20notifications%20from%20the%20network%20and%20similar%20devices.%20In%20this%20post%20I%20will%20try%20to%20explain%20how%20to%20configure%20this%20daemon%20to%20allow%20a%20network%20server%20to%20process%20SNMP%20traps%20using%20both%2C%20embed" title="Digg"><img src="http://coder.cl/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F&amp;title=configuring%20snmptrapd" title="Reddit"><img src="http://coder.cl/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F&amp;t=configuring%20snmptrapd" title="Facebook"><img src="http://coder.cl/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=configuring%20snmptrapd%20-%20http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F" title="Twitter"><img src="http://coder.cl/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fcoder.cl%2F2010%2F07%2Fconfiguring-snmptrapd%2F&amp;title=configuring%20snmptrapd&amp;annotation=snmptrapd%288%29%20is%20a%20SNMP%20trap%20daemon%2C%20in%20other%20words%2C%20it%20captures%20SNMP%20notifications%20from%20the%20network%20and%20similar%20devices.%20In%20this%20post%20I%20will%20try%20to%20explain%20how%20to%20configure%20this%20daemon%20to%20allow%20a%20network%20server%20to%20process%20SNMP%20traps%20using%20both%2C%20embed" title="Google Bookmarks"><img src="http://coder.cl/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>


<br/><br/><br/><hr height="1px" width="50%" />
<div style='text-align: center !important;'><b>Copyright © 2010 Daniel Molina Wegener</b><br/><b>Atribución-No Comercial-Sin Derivadas 2.0 Chile</b><br/><a target='_new' rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/cl/"><img alt="Creative Commons License" style="border-width:0" src="/cc88x31.png" /></a></div>
<br/><hr height="1px" width="100%" />
<p><small>© Daniel Molina Wegener for <a href="http://coder.cl">coder . cl</a>, 2010. | <a href="http://coder.cl/2010/07/configuring-snmptrapd/">Permalink</a> | <a href="http://coder.cl/2010/07/configuring-snmptrapd/#comments">No comment</a><br/>Post tags: <br/></small></p>
]]></content:encoded>
			<wfw:commentRss>http://coder.cl/2010/07/configuring-snmptrapd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>integrating kontact and skype</title>
		<link>http://coder.cl/2010/02/integrating-kontact-and-skype/</link>
		<comments>http://coder.cl/2010/02/integrating-kontact-and-skype/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 01:53:25 +0000</pubDate>
		<dc:creator>Daniel Molina Wegener</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://coder.cl/?p=627</guid>
		<description><![CDATA[Kontact is my default PIM application. On its configuration we can setup a phone calling program, such as ekiga, skype and others, it just requires a small script, like the one bellow, which I have integrated with KPilot, so I can manage my contacts centered and synchronized. #!/usr/bin/env python # skype_call.py import sys import Skype4Py [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://userbase.kde.org/Kontact'>Kontact</a> is my default PIM application. On its configuration we can setup a phone calling program, such as ekiga, skype and others, it just requires a small script, like the one bellow, which I have integrated with <a href='http://cvs.codeyard.net/kpilot/'>KPilot</a>, so I can manage my contacts centered and synchronized.</p>
<p><span id="more-627"></span></p>
<pre name="code" class="python">
#!/usr/bin/env python
# skype_call.py
import sys
import Skype4Py

def main():
    if len(sys.argv) != 2:
        print "No dialup number\n"
    number = sys.argv[1]
    number = number.strip()
    for n in [' ', '+', '(', ')', &quot;\s&quot;, &quot;\t&quot;, '-']:
        number = number.replace(n, &quot;&quot;);
    number = '+' + number
    print number, &quot;\n&quot;
    skype = Skype4Py.Skype()
    skype.Attach()
    skype.PlaceCall(number)

if __name__ == '__main__':
    main()
</pre>
<p>Then, on the Kontact configuration, on the address book settings, we configure the path to our script, called <i>skype_call.py</i>, in this case located at my home directory, on my personal scripts folder.</p>
<div style='border: 1px solid #000; text-align: center; overflow: auto;'><a href='http://coder.cl/uploads/2010/02/kontact-configuration.jpg' alt='Kontact Configuration' title='Kontact Configuration' target='_blank'><img border='0' alt='Kontact Configuration' title='Kontact Configuration' src='http://coder.cl/uploads/2010/02/kontact-configuration.jpg' style='text-align: center;'></a></div>
<p>One time configured contact, you can call your contacts just by clicking on their phone numbers. Remember that skype needs the format <i>+country_code&mdash;area_code&mdash;phone_number</i>, like <i>+56 (2) 555 55 55</i>.</p>
<div style='border: 1px solid #000; text-align: center; overflow: auto;'><a href='http://coder.cl/uploads/2010/02/kontact-calling.jpg' alt='Contact Calling' title='Contact Calling' target='_blank'><img border='0' alt='Contact Calling' title='Contact Calling' src='http://coder.cl/uploads/2010/02/kontact-calling.jpg' style='text-align: center;'></a></div>
<p>Happy internet calling <img src='http://coder.cl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>



share this article at: 


	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F02%2Fintegrating-kontact-and-skype%2F&amp;title=integrating%20kontact%20and%20skype&amp;source=coder+.+cl+system+programmer+%26amp%3B+web+developer&amp;summary=Kontact%20is%20my%20default%20PIM%20application.%20On%20its%20configuration%20we%20can%20setup%20a%20phone%20calling%20program%2C%20such%20as%20ekiga%2C%20skype%20and%20others%2C%20it%20just%20requires%20a%20small%20script%2C%20like%20the%20one%20bellow%2C%20which%20I%20have%20integrated%20with%20KPilot%2C%20so%20I%20can%20manage%20my%20contacts%20" title="LinkedIn"><img src="http://coder.cl/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fcoder.cl%2F2010%2F02%2Fintegrating-kontact-and-skype%2F&amp;title=integrating%20kontact%20and%20skype&amp;notes=Kontact%20is%20my%20default%20PIM%20application.%20On%20its%20configuration%20we%20can%20setup%20a%20phone%20calling%20program%2C%20such%20as%20ekiga%2C%20skype%20and%20others%2C%20it%20just%20requires%20a%20small%20script%2C%20like%20the%20one%20bellow%2C%20which%20I%20have%20integrated%20with%20KPilot%2C%20so%20I%20can%20manage%20my%20contacts%20" title="del.icio.us"><img src="http://coder.cl/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcoder.cl%2F2010%2F02%2Fintegrating-kontact-and-skype%2F&amp;title=integrating%20kontact%20and%20skype&amp;bodytext=Kontact%20is%20my%20default%20PIM%20application.%20On%20its%20configuration%20we%20can%20setup%20a%20phone%20calling%20program%2C%20such%20as%20ekiga%2C%20skype%20and%20others%2C%20it%20just%20requires%20a%20small%20script%2C%20like%20the%20one%20bellow%2C%20which%20I%20have%20integrated%20with%20KPilot%2C%20so%20I%20can%20manage%20my%20contacts%20" title="Digg"><img src="http://coder.cl/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fcoder.cl%2F2010%2F02%2Fintegrating-kontact-and-skype%2F&amp;title=integrating%20kontact%20and%20skype" title="Reddit"><img src="http://coder.cl/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcoder.cl%2F2010%2F02%2Fintegrating-kontact-and-skype%2F&amp;t=integrating%20kontact%20and%20skype" title="Facebook"><img src="http://coder.cl/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=integrating%20kontact%20and%20skype%20-%20http%3A%2F%2Fcoder.cl%2F2010%2F02%2Fintegrating-kontact-and-skype%2F" title="Twitter"><img src="http://coder.cl/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fcoder.cl%2F2010%2F02%2Fintegrating-kontact-and-skype%2F&amp;title=integrating%20kontact%20and%20skype&amp;annotation=Kontact%20is%20my%20default%20PIM%20application.%20On%20its%20configuration%20we%20can%20setup%20a%20phone%20calling%20program%2C%20such%20as%20ekiga%2C%20skype%20and%20others%2C%20it%20just%20requires%20a%20small%20script%2C%20like%20the%20one%20bellow%2C%20which%20I%20have%20integrated%20with%20KPilot%2C%20so%20I%20can%20manage%20my%20contacts%20" title="Google Bookmarks"><img src="http://coder.cl/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>


<br/><br/><br/><hr height="1px" width="50%" />
<div style='text-align: center !important;'><b>Copyright © 2010 Daniel Molina Wegener</b><br/><b>Atribución-No Comercial-Sin Derivadas 2.0 Chile</b><br/><a target='_new' rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/cl/"><img alt="Creative Commons License" style="border-width:0" src="/cc88x31.png" /></a></div>
<br/><hr height="1px" width="100%" />
<p><small>© Daniel Molina Wegener for <a href="http://coder.cl">coder . cl</a>, 2010. | <a href="http://coder.cl/2010/02/integrating-kontact-and-skype/">Permalink</a> | <a href="http://coder.cl/2010/02/integrating-kontact-and-skype/#comments">No comment</a><br/>Post tags: <br/></small></p>
]]></content:encoded>
			<wfw:commentRss>http://coder.cl/2010/02/integrating-kontact-and-skype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gmail with fixed font</title>
		<link>http://coder.cl/2009/09/gmail-with-fixed-font/</link>
		<comments>http://coder.cl/2009/09/gmail-with-fixed-font/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 20:16:45 +0000</pubDate>
		<dc:creator>Daniel Molina Wegener</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://coder.cl/?p=241</guid>
		<description><![CDATA[On a post from Leo Soto, he explains how to setup Gmail under Firefox with fixed with fonts or monospaced fonts. I&#8217;ve extended that trick to allow the same behaviour under many Google products. I&#8217;m currently using it to display fixed with fonts in Gmail and Google Groups, for both on the message body and [...]]]></description>
			<content:encoded><![CDATA[<p>On a post from <a href="http://blog.leosoto.com/">Leo Soto</a>, he explains <a href="http://blog.leosoto.com/2009/03/fixed-width-font-on-gmail-again.html">how to</a> setup <a href="http://mail.google.com/">Gmail</a> under <a href="http://www.mozilla.org/">Firefox</a> with fixed with fonts or monospaced fonts. I&#8217;ve extended that trick to allow the same behaviour under many Google products. I&#8217;m currently using it to display fixed with fonts in <a href="http://mail.google.com/">Gmail</a> and <a href="http://groups.google.com/">Google Groups</a>, for both on the message body and text editor.</p>
<p><span id="more-241"></span></p>
<p>My current fragment of my <i>userContent.css</i>, located at my profile directory for Firefox, usually <i>~/.mozilla -&gt; firefox -&gt; <b>profile_name</b> -&gt; chrome</i>, is as follows:</p>
<pre name="code" class="css" cols="80" rows="43">
/* gmail fonts */
@-moz-document domain(mail.google.com)
{
    .gs .ii, textarea.dV {
        font-family: "Lucida Sans Typewriter" !important;
        font-size: 8pt !important;
    }

    .editable , .editable * {
        font-family: "Lucida Sans Typewriter" !important;
        font-size: 8pt !important;
    }

    .tr-field, .editable * {
        font-family: "Lucida Sans Typewriter" !important;
        font-size: 8pt !important;
    }

}

/* google groups fonts */
@-moz-document domain(groups.google.com)
{
    textarea, textarea * {
        font-family: "Lucida Sans Typewriter" !important;
        font-size: 8pt !important;
    }

    textarea.wdth100, textarea.wdth100 * {
        font-family: "Lucida Sans Typewriter" !important;
        font-size: 8pt !important;
    }

    textarea.padall5, textarea.padall5 * {
        font-family: "Lucida Sans Typewriter" !important;
        font-size: 8pt !important;
    }
}
</pre>
<p>Editing mail in fixed with fonts is great, mainly for code an similar tasks. The problem with variable with fonts is the fact that you can not setup the proper spacing or line with in chars while you are trying to preserve the <a href="http://en.wikipedia.org/wiki/Netiquete">Netiquete</a>. Sorry, and you can call me <i>old</i>, but I still think that those rules must apply to electronic communications. Also, the Netiquete was standarized: <a href="http://www.faqs.org/rfcs/rfc1855.html"><i>&quot;RFC1855 &#8211; Netiquette Guidelines&quot;</i></a>.</p>



share this article at: 


	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fgmail-with-fixed-font%2F&amp;title=gmail%20with%20fixed%20font&amp;source=coder+.+cl+system+programmer+%26amp%3B+web+developer&amp;summary=On%20a%20post%20from%20Leo%20Soto%2C%20he%20explains%20how%20to%20setup%20Gmail%20under%20Firefox%20with%20fixed%20with%20fonts%20or%20monospaced%20fonts.%20I%27ve%20extended%20that%20trick%20to%20allow%20the%20same%20behaviour%20under%20many%20Google%20products.%20I%27m%20currently%20using%20it%20to%20display%20fixed%20with%20fonts%20in%20Gm" title="LinkedIn"><img src="http://coder.cl/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fgmail-with-fixed-font%2F&amp;title=gmail%20with%20fixed%20font&amp;notes=On%20a%20post%20from%20Leo%20Soto%2C%20he%20explains%20how%20to%20setup%20Gmail%20under%20Firefox%20with%20fixed%20with%20fonts%20or%20monospaced%20fonts.%20I%27ve%20extended%20that%20trick%20to%20allow%20the%20same%20behaviour%20under%20many%20Google%20products.%20I%27m%20currently%20using%20it%20to%20display%20fixed%20with%20fonts%20in%20Gm" title="del.icio.us"><img src="http://coder.cl/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fgmail-with-fixed-font%2F&amp;title=gmail%20with%20fixed%20font&amp;bodytext=On%20a%20post%20from%20Leo%20Soto%2C%20he%20explains%20how%20to%20setup%20Gmail%20under%20Firefox%20with%20fixed%20with%20fonts%20or%20monospaced%20fonts.%20I%27ve%20extended%20that%20trick%20to%20allow%20the%20same%20behaviour%20under%20many%20Google%20products.%20I%27m%20currently%20using%20it%20to%20display%20fixed%20with%20fonts%20in%20Gm" title="Digg"><img src="http://coder.cl/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fgmail-with-fixed-font%2F&amp;title=gmail%20with%20fixed%20font" title="Reddit"><img src="http://coder.cl/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fgmail-with-fixed-font%2F&amp;t=gmail%20with%20fixed%20font" title="Facebook"><img src="http://coder.cl/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=gmail%20with%20fixed%20font%20-%20http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fgmail-with-fixed-font%2F" title="Twitter"><img src="http://coder.cl/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fgmail-with-fixed-font%2F&amp;title=gmail%20with%20fixed%20font&amp;annotation=On%20a%20post%20from%20Leo%20Soto%2C%20he%20explains%20how%20to%20setup%20Gmail%20under%20Firefox%20with%20fixed%20with%20fonts%20or%20monospaced%20fonts.%20I%27ve%20extended%20that%20trick%20to%20allow%20the%20same%20behaviour%20under%20many%20Google%20products.%20I%27m%20currently%20using%20it%20to%20display%20fixed%20with%20fonts%20in%20Gm" title="Google Bookmarks"><img src="http://coder.cl/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>


<br/><br/><br/><hr height="1px" width="50%" />
<div style='text-align: center !important;'><b>Copyright © 2009 Daniel Molina Wegener</b><br/><b>Atribución-No Comercial-Sin Derivadas 2.0 Chile</b><br/><a target='_new' rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/cl/"><img alt="Creative Commons License" style="border-width:0" src="/cc88x31.png" /></a></div>
<br/><hr height="1px" width="100%" />
<p><small>© Daniel Molina Wegener for <a href="http://coder.cl">coder . cl</a>, 2009. | <a href="http://coder.cl/2009/09/gmail-with-fixed-font/">Permalink</a> | <a href="http://coder.cl/2009/09/gmail-with-fixed-font/#comments">3 comments</a><br/>Post tags: <br/></small></p>
]]></content:encoded>
			<wfw:commentRss>http://coder.cl/2009/09/gmail-with-fixed-font/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>identifying phishing email</title>
		<link>http://coder.cl/2009/09/identifying-phishing-email/</link>
		<comments>http://coder.cl/2009/09/identifying-phishing-email/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 02:49:34 +0000</pubDate>
		<dc:creator>Daniel Molina Wegener</dc:creator>
				<category><![CDATA[rants]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://coder.cl/?p=234</guid>
		<description><![CDATA[Phishing is a criminal activity. I&#8217;ve recently received an electronic mail with one of those phishing attempts. Surely I&#8217;ve ignored since I know how to read the electronic mail headers and some other useful information that comes in electronic mails. The Wikipedia refers to it as: In the field of computer security, phishing is the [...]]]></description>
			<content:encoded><![CDATA[<p><!--:en-->
<p><i>Phishing</i> is a criminal activity. I&#8217;ve recently received an electronic mail with one of those <i>phishing</i> attempts. Surely I&#8217;ve ignored since I know how to read the electronic mail headers and some other useful information that comes in electronic mails. The Wikipedia refers to it as:</p>
<blockquote><p>
In the field of computer security, phishing is the criminally fraudulent process of attempting to acquire sensitive information such as usernames, passwords and credit card details by masquerading as a trustworthy entity in an electronic communication.
</p></blockquote>
<p><!--:--><span id="more-234"></span><!--:en--></p>
<p>This time &mdash; I usually receive those electronic mails &mdash; I&#8217;ve received an <i>important announcement</i> from a Chilean bank, but really it was a <i>phishing attempt</i>. How do I know that? It appears to be quiet real, but what is behind all those pretty and trustful words?</p>
<div style="text-align:center;">
<img src="http://coder.cl/uploads//2009/09/phishing-mail.png" alt="phishing message" title="phishing message" style="border:2px solid #000;" />
</div>
<p>The electronic have a <i>plain text format</i>. Yes! is not a binary format like <i>Micro$oft Word</i> or another kind of electronic format. This format has standard basis from the <a href="http://tools.ietf.org/html/rfc5322">RFC 5322</a>, and looks pretty similar on every message you sent and you receive. As the RFC 5322 standarizes the message format, the message format is as follows:</p>
<blockquote><p>
A message consists of header fields, optionally followed by a message body.  Lines in a message MUST be a maximum of 998 characters excluding the CRLF, but it is RECOMMENDED that lines be limited to 78 characters excluding the CRLF.  (See section 2.1.1 for explanation.) In a message body, though all of the characters listed in the text rule MAY be used, the use of US-ASCII control characters (values 1 through 8, 11, 12, and 14 through 31) is discouraged since their interpretation by receivers for display is not guaranteed.
</p></blockquote>
<p>Well, <i>message headers</i> are an important task while we are examining the message. You can view the original message by saving your email as plain text and looking at it with any text editor. Find a menu with <i>View Source</i>, <i>View Message Source</i>, <i>View Raw Message</i>, <i>Save As (&#8230;plain text)</i>, and similar options to take a look on the message source. Well, this <i>phishing</i> mail has some interesting headers, such as the <b>Received</b> header, which indicates how the mail message was received by <b>MX servers</b> or <b>mail servers</b>:</p>
<pre><code>
Received: (qmail 12145 invoked by uid 1552); 14 Sep 2009 08:38:10 -0000
Received: from virtual1.webair.com (virtual1.webair.com [216.130.161.111])
    by mail07.ifxnetworks.com with SMTP id 9f9zhdib52zaavt9vaiekajna6;
    for dmw@unete.cl;
    Mon, 14 Sep 2009 08:38:10 +0000 (GMT)
    (envelope-from monitor@santander.cl)
Received-SPF: None; receiver=mail07.ifxnetworks.com;
    client-ip=216.130.161.111; envelope-from=&lt;monitor@santander.cl&gt;;
    helo=virtual1.webair.com
X-Avenger: version=0.7.9; receiver=mail07.ifxnetworks.com;
    client-ip=216.130.161.111; client-port=2914;
    syn-fingerprint=32768:58:1:60:M1380,N,W0,N,N,T FreeBSD 4.8-5.1 (or MacOS
    X); data-bytes=0
</code></pre>
<p>My electronic mail address which received the <i>phishing mail</i>, is hosted at <i>IFX Networks</i>, so the final receiver &mdash; from top to bottom &mdash; was the <i>****.ifxnetworks.com</i> server. Electronic mail routes can be longer that this one, but you can read as final receiver from top to the initial receiver to bottom. WOW! What a surprise!, the initial client is <i>216.130.161.111</i>, let see from where comes that IP address&#8230;</p>
<pre><code>
[www@quake ~]$ geoiplookup 216.130.161.111
GeoIP Country Edition: US, United States

[www@quake ~]$ nslookup 216.130.161.111
Server:         200.62.2.180
Address:        200.62.2.180#53

Non-authoritative answer:
111.161.130.216.in-addr.arpa    name = virtual1.webair.com.
</code></pre>
<p>WOW!, the client comes from <b>USA</b>, not a Chilean sender! and matches with <i>Spam Filter</i> receiver at IFX: <i>helo=virtual1.webair.com</i>. Why a Chilean bank wants to send an important advice from foreign servers? it smells like pure <i>phishing</i>. Now let me see what are indicating the NIC servers from that domain:</p>
<pre><code>
[www@quake ~]$ whois webair.com

Whois Server Version 2.0

Domain names in the .com and .net domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.

WEBAIR.COM.<b>BR</b>.GAROTAEXECUTIVO.COM
WEBAIR.COM

</code></pre>
<p>Hhhmmm&#8230; looks like a Brazilian domain <img src='http://coder.cl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Looking at the real entry: <i>GAROTAEXECUTIVO.COM</i>.</p>
<pre><code>
Registrant:
   Executivo
   Rua: Executivo 3333
   Sao Paulo, Sao Paulo  01313000
   BR

   Registrar: DOTSTER
   Domain Name: GAROTAEXECUTIVO.COM
      Created on: 24-OCT-07
      Expires on: 24-OCT-09
      Last Updated on: 04-OCT-08

   Administrative, Technical Contact:
      Club, Executivo  postmaster@postmaster.com
      Executivo
      Rua: Executivo 3333
      Sao Paulo, Sao Paulo  01313000
      BR
      551122334455
</code></pre>
<p>Yeah! it&#8217;s a Brazilian one! Now, looking for all those URLs to make me fall in the fraudulent activity of <i>phishing</i>, where I&#8217;ve found three interesting URLs:</p>
<ul>
<li><b>hxxp://www.santander.cl/estilos/2008_08/bitmaps/santander.gif</b><br/>WOW!, it points to an image at the Chilean bank &mdash; I&#8217;ve replaced the t for x intentionally &mdash; and surely this will make some believe some people that the electronic mail is quiet real.</li>
<li><b>hxxps://www.officebanking.cl/images/porque.gif</b><br/>WOW!, it points to an URL of the same bank but using the HTTPS protocol, this will make a possible client to believe that is pointing to the real bank, since many email clients asks for the site certificate. Interesting.</li>
<li><b>hxxp://www.fpfa.esp.br/imagens/campeoes/st2.php</b><br/>WOW!, the full URL to the phishing site! I&#8217;ve not opened the URL, and I don&#8217;t know what is behind it :B</li>
</ul>
<p>The piece of code with the link to the phishing web site in the body of the message:</p>
<pre><code>
&lt;span class=&quot;style10&quot;&gt;
                                            &lt;a target=&quot;_blank&quot;
href=&quot;http://www.fpfa.esp.br/imagens/campeoes/st2.php&quot;&gt;
                        &lt;img
src=&quot;https://www.officebanking.cl/images/ingresar.gif&quot;
align=&quot;middle&quot; border=&quot;0&quot; width=&quot;65&quot;
height=&quot;21&quot;&gt;&lt;/a&gt;&lt;/span&gt;
</code></pre>
<h3>conclusions</h3>
<ul>
<li>You can not trust in banking electronic mail until you strongly verify the electronic mail.</li>
<li>You can not enter any site with your financial institution logos without verifying the URL bar.</li>
<li>Google permits to download the message source.</li>
<li>Use a good electronic mail client, for example <a href="http://www.mozillamessaging.com/en-US/thunderbird/">Thunderbird</a> has good advices on <i>spam</i> and <i>phishing</i>.</li>
<li>Certainly the <i>www.fpfa.esp.br</i> site was <a href="http://www.ccil.org/jargon/jargon_18.html#TAG365">cracked</a>, and was used for phishing activities, and I&#8217;ve blocked it in my browser.</li>
<li>Those <i>virtual1.webair.com</i> servers are widely opened to be used by <a href="http://en.wikipedia.org/wiki/E-mail_spam">spammers</a>, and I&#8217;ve added them to my blacklist.</li>
</ul>
<p><!--:--></p>



share this article at: 


	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fidentifying-phishing-email%2F&amp;title=identifying%20phishing%20email&amp;source=coder+.+cl+system+programmer+%26amp%3B+web+developer&amp;summary=Phishing%20is%20a%20criminal%20activity.%20I%27ve%20recently%20received%20an%20electronic%20mail%20with%20one%20of%20those%20phishing%20attempts.%20Surely%20I%27ve%20ignored%20since%20I%20know%20how%20to%20read%20the%20electronic%20mail%20headers%20and%20some%20other%20useful%20information%20that%20comes%20in%20electronic%20mails." title="LinkedIn"><img src="http://coder.cl/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fidentifying-phishing-email%2F&amp;title=identifying%20phishing%20email&amp;notes=Phishing%20is%20a%20criminal%20activity.%20I%27ve%20recently%20received%20an%20electronic%20mail%20with%20one%20of%20those%20phishing%20attempts.%20Surely%20I%27ve%20ignored%20since%20I%20know%20how%20to%20read%20the%20electronic%20mail%20headers%20and%20some%20other%20useful%20information%20that%20comes%20in%20electronic%20mails." title="del.icio.us"><img src="http://coder.cl/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fidentifying-phishing-email%2F&amp;title=identifying%20phishing%20email&amp;bodytext=Phishing%20is%20a%20criminal%20activity.%20I%27ve%20recently%20received%20an%20electronic%20mail%20with%20one%20of%20those%20phishing%20attempts.%20Surely%20I%27ve%20ignored%20since%20I%20know%20how%20to%20read%20the%20electronic%20mail%20headers%20and%20some%20other%20useful%20information%20that%20comes%20in%20electronic%20mails." title="Digg"><img src="http://coder.cl/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fidentifying-phishing-email%2F&amp;title=identifying%20phishing%20email" title="Reddit"><img src="http://coder.cl/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fidentifying-phishing-email%2F&amp;t=identifying%20phishing%20email" title="Facebook"><img src="http://coder.cl/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=identifying%20phishing%20email%20-%20http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fidentifying-phishing-email%2F" title="Twitter"><img src="http://coder.cl/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fcoder.cl%2F2009%2F09%2Fidentifying-phishing-email%2F&amp;title=identifying%20phishing%20email&amp;annotation=Phishing%20is%20a%20criminal%20activity.%20I%27ve%20recently%20received%20an%20electronic%20mail%20with%20one%20of%20those%20phishing%20attempts.%20Surely%20I%27ve%20ignored%20since%20I%20know%20how%20to%20read%20the%20electronic%20mail%20headers%20and%20some%20other%20useful%20information%20that%20comes%20in%20electronic%20mails." title="Google Bookmarks"><img src="http://coder.cl/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>


<br/><br/><br/><hr height="1px" width="50%" />
<div style='text-align: center !important;'><b>Copyright © 2009 Daniel Molina Wegener</b><br/><b>Atribución-No Comercial-Sin Derivadas 2.0 Chile</b><br/><a target='_new' rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/cl/"><img alt="Creative Commons License" style="border-width:0" src="/cc88x31.png" /></a></div>
<br/><hr height="1px" width="100%" />
<p><small>© Daniel Molina Wegener for <a href="http://coder.cl">coder . cl</a>, 2009. | <a href="http://coder.cl/2009/09/identifying-phishing-email/">Permalink</a> | <a href="http://coder.cl/2009/09/identifying-phishing-email/#comments">One comment</a><br/>Post tags: <br/></small></p>
]]></content:encoded>
			<wfw:commentRss>http://coder.cl/2009/09/identifying-phishing-email/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>securing apache 2.x</title>
		<link>http://coder.cl/2009/07/protecting-apache-2x/</link>
		<comments>http://coder.cl/2009/07/protecting-apache-2x/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 16:21:33 +0000</pubDate>
		<dc:creator>Daniel Molina Wegener</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://coder.cl/?p=82</guid>
		<description><![CDATA[This is not a security guide for Apache HTTP Server. Instead is a small guide that can be used as reference to protect some aspects of how the applications and pages are served. For security guides, you must look at other places. Well, I hope this approach would help a little in your administration tasks. [...]]]></description>
			<content:encoded><![CDATA[<p><!--:en-->
<p>This is not a <i>security guide</i> for <a href="http://httpd.apache.org/">Apache</a> HTTP Server. Instead is a small guide that can be used as reference to protect some aspects of <i>how the applications and pages are served</i>. For security guides, you must look at other places. Well, I hope this approach would help a little in your administration tasks. <i>All examples are not a copy/paste rules, you must think on them</i>. I&#8217;ll never give you recipes&#8230; you always must think.</p>
<p><!--:--><span id="more-82"></span><!--:en--></p>
<p></p>
<h3>anonymous version</h3>
<p>In <a href="http://httpd.apache.org/docs/2.0/">Apache 2.X</a> you can avoid of showing the server version and installed extensions, such as <i>mod_php</i>, <i>mod_perl</i> and others. This is an easy task, just add the both next directives &mdash; search for them and change their value.</p>
<pre><code>
#
# This hides the server signature on error pages.
# This means that the server version is not shown
# on error pages.
#
<a href="http://httpd.apache.org/docs/2.0/mod/core.html#serversignature">ServerSignature</a> Off

#
# This will hide the server version and installed
# modules on the response headers.
#
<a href="http://httpd.apache.org/docs/2.0/mod/core.html#servertokens">ServerTokens</a> Prod
</code></pre>
<p></p>
<h3>limit requests</h3>
<p><a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">mod_rewrite</a> is a good option to setup some filters on your server. If you enable this module, you can filter the <a href="http://en.wikipedia.org/wiki/Request_method##Request_methods">request method</a> and certain <a href="http://en.wikipedia.org/wiki/Common_Gateway_Interface">CGI enabled URLs</a>.</p>
<h4>mod_rewrite filters</h4>
<p>If you serve <i>dynamic web pages</i> using some module as <i>mod_perl</i> or <i>mod_php</i>, you can filter only the used methods on your application, in example: <tt>HEAD</tt>, <tt>OPTIONS</tt>, <tt>GET</tt> and <tt>POST</tt>, and disable other methods, such as <tt>TRACE</tt> or <a href="http://en.wikipedia.org/wiki/WebDAV">WebDAV</a> methods.</p>
<pre><code>
#
# this rule will block all request that differs from HEAD, OPTIONS,
# GET and POST
#
&lt;IfModule mod_rewrite.c&gt;
    RewriteCond     %{REQUEST_METHOD}       !^(HEAD|OPTIONS|GET|POST)$
    RewriteRule     (.*)                    [F,NS]
&lt;/IfModule&gt;
</code></pre>
<p>You can build a better <i>request block</i> using directories, in example over upload directories.</p>
<pre><code>
#
# this rule will block every request method that differs from HEAD,
# OPTIONS and GET. also it will block any request in files that do
# not have the extensions jpg, png and gif. It also works with image
# directories <img src='http://coder.cl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
#
&lt;IfModule mod_rewrite.c&gt;
&lt;Directory "/var/www/site1/upload"&gt;
    RewriteCond     %{REQUEST_METHOD}       !^(HEAD|OPTIONS|GET)$       [OR]
    RewriteCond     %{REQUEST_FILENAME}     !^.*\.(jpg|png|gif)$
    RewriteRule     (.*)                    [F,NS]
&lt;/Directory&gt;
&lt;/IfModule&gt;
</code></pre>
<p>You can play a lot with all those <a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond">RewriteCond</a> and <a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule">RewriteRule</a>. Also, you can block unwanted scripts, in example, if you are using <tt>PHP</tt> as your unique <i>dynamic language</i> to display your <i>dynamic pages</i>, you do not need to allow any <i>Perl</i> or <i>Python</i> scripts, you can block all other scripts that are unwanted on your site.</p>
<pre><code>
#
# this one will allow only PHP scripts, and also
# HTML pages and JavaScript
#
&lt;IfModule mod_rewrite.c&gt;
&lt;Directory "/var/www/site1/"&gt;
    RewriteCond     %{REQUEST_METHOD}       !^(HEAD|OPTIONS|GET|POST)$       [OR]
    RewriteCond     %{REQUEST_FILENAME}     !^.*\.(php|html|htm|js)$
    RewriteRule     (.*)                    [F,NS]
&lt;/Directory&gt;
&lt;/IfModule&gt;
</code></pre>
<p>And yet, there are a lot of useful rules that you can apply, just think on them to fit your needs. Well, also you can enable <i>Apache</i> to allow only preprocessed URLs, in example if you are using some kind of wrapper to deny <i>direct access</i> to all PHP scripts, why, because our application is a <a href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a> based application.</p>
<pre><code>
#
# we deny access to all kind of scripts on our system
#
&lt;IfModule mod_rewrite.c&gt;
&lt;Directory "/var/www/site1/"&gt;
    RewriteCond     %{REQUEST_METHOD}       !^(HEAD|OPTIONS|GET|POST)$          [OR]
    RewriteCond     %{SCRIPT_FILENAME}      !^.*\.(jpg|png|gif|html|htm|js)$    [OR]
    RewriteCond     %{REQUEST_FILENAME}     ^.*\.(py|pl|cgi|php|php3|shtml)$
    RewriteRule     (.*)                    [F,NS]
#
# we allow jpg, png, gif, js and html
#
    RewriteCond     %{SCRIPT_FILENAME}      !^.*\.(jpg|png|gif|html|htm|js)$    [OR]
    RewriteRule     (.*)                    $1                                  [PT]

#
# and then we redirect all requests to the /index.php script <img src='http://coder.cl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
# possibly the main controller on our application
#
    RewriteCond     %{REQUEST_METHOD}       !^(HEAD|OPTIONS|GET|POST)$
    RewriteRule     (.*)                    /index.php?$1                       [PT]
&lt;/Directory&gt;
&lt;/IfModule&gt;
</code></pre>
<p>You can play a lot with <i>mod_rewrite</i> rules and customize your application to allow users to have <i>normal</i> and <i>browser based</i> access to your application.</p>
<p></p>
<h4>limit by location</h4>
<p>Two helpful directives are <a href="http://httpd.apache.org/docs/2.0/mod/core.html#limit">Limit</a> and <a href="http://httpd.apache.org/docs/2.0/mod/core.html#limitexcept">LimitExcept</a>. Those directives can allow you to limit the request method for certain <a href="http://httpd.apache.org/docs/2.0/mod/core.html#location">Location</a>.</p>
<pre><code>
#
# this will block other request method
# than HEAD GET POST OPTIONS, under Location
#
&lt;Location /&gt;
    &lt;Limit HEAD GET POST OPTIONS&gt;
        Order allow,deny
        Allow from all
    &lt;/Limit&gt;
    &lt;LimitExcept HEAD GET POST OPTIONS&gt;
        Order deny,allow
        Deny from all
    &lt;/LimitExcept&gt;
&lt;/Location&gt;
</code></pre>
<p></p>
<h3>third party modules</h3>
<p>Well here you have a list of modules that you can use. All of them will help you on protecting your application</p>
<ul>
<li><a href="http://www.modsecurity.org/">mod_security</a></li>
<li><a href="http://www.zdziarski.com/projects/mod_evasive/">mod_evasive</a></li>
<li><a href="http://software.othello.ch/mod_clamav/">mod_clamav</a></li>
</ul>
<p></p>
<h3>disable unused modules</h3>
<p>Make deep review on how many modules are you using. If you are not using certain module, just remove it from your configuration. In example, many sites have enabled the <i>dav_module</i> and <i>dav_fs_module</i>, when they really don&#8217;t need them. This will reduce all possible bugs that can be remotely attacked and will reduce the memory and processor usage <img src='http://coder.cl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p></p>
<h3>on what can&#8217;t help?</h3>
<p>Surely, there a lot of <i>&quot;responsibility of the user&quot;</i> issues on those those modules and rules can not help. In example, weak passwords, buggy applications, weak validations and wrong handled user privileges.</p>
<p>I&#8217;ve found an interesting paper on this topic, about the <i>user authentication</i> issue. It&#8217;s written by <a href="http://www.mit.edu/">MIT</a> researchers. Here is the <i>abstract</i> bellow.</p>
<blockquote><p>
Client authentication has been a continuous source of problems on the Web. Although many well studied techniques exist for authentication, Web sites continue to use extremely weak authentication schemes, especially in non enterprise environments such as store fronts. These weaknesses often result from careless use of authenticators within Web cookies. Of the twenty seven sites we investigated, we weakened the client authentication on two systems, gained unauthorized access on eight, and extracted the secret key used to mint authenticators from one.</p></blockquote>
<blockquote><p>
We provide a description of the limitations, requirements, and security models specific to Web client authentication. This includes the introduction of the interrogative adversary, a surprisingly powerful adversary that can adaptively query a Web site.</p></blockquote>
<blockquote><p>
We propose a set of hints for designing a secure client authentication scheme. Using these hints, we present the design and analysis of a simple authentication scheme secure against forgeries by the interrogative adversary. In conjunction with SSL, our scheme is secure against forgeries by the active adversary.</p></blockquote>
<p>And here is the link to <a href="http://pdos.csail.mit.edu/papers/webauth:tr.pdf">download it</a>. I hope that all of those topics would help on your <i>Web Site</i> maintenance and development&#8230; And yet I know that I don&#8217;t cover some other issues, but that&#8217;s because I know that you can search for <i>proper research</i> and do <i>security labs</i> on your application <img src='http://coder.cl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><!--:--></p>



share this article at: 


	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fcoder.cl%2F2009%2F07%2Fprotecting-apache-2x%2F&amp;title=securing%20apache%202.x&amp;source=coder+.+cl+system+programmer+%26amp%3B+web+developer&amp;summary=This%20is%20not%20a%20security%20guide%20for%20Apache%20HTTP%20Server.%20Instead%20is%20a%20small%20guide%20that%20can%20be%20used%20as%20reference%20to%20protect%20some%20aspects%20of%20how%20the%20applications%20and%20pages%20are%20served.%20For%20security%20guides%2C%20you%20must%20look%20at%20other%20places.%20Well%2C%20I%20hope%20this%20ap" title="LinkedIn"><img src="http://coder.cl/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fcoder.cl%2F2009%2F07%2Fprotecting-apache-2x%2F&amp;title=securing%20apache%202.x&amp;notes=This%20is%20not%20a%20security%20guide%20for%20Apache%20HTTP%20Server.%20Instead%20is%20a%20small%20guide%20that%20can%20be%20used%20as%20reference%20to%20protect%20some%20aspects%20of%20how%20the%20applications%20and%20pages%20are%20served.%20For%20security%20guides%2C%20you%20must%20look%20at%20other%20places.%20Well%2C%20I%20hope%20this%20ap" title="del.icio.us"><img src="http://coder.cl/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcoder.cl%2F2009%2F07%2Fprotecting-apache-2x%2F&amp;title=securing%20apache%202.x&amp;bodytext=This%20is%20not%20a%20security%20guide%20for%20Apache%20HTTP%20Server.%20Instead%20is%20a%20small%20guide%20that%20can%20be%20used%20as%20reference%20to%20protect%20some%20aspects%20of%20how%20the%20applications%20and%20pages%20are%20served.%20For%20security%20guides%2C%20you%20must%20look%20at%20other%20places.%20Well%2C%20I%20hope%20this%20ap" title="Digg"><img src="http://coder.cl/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fcoder.cl%2F2009%2F07%2Fprotecting-apache-2x%2F&amp;title=securing%20apache%202.x" title="Reddit"><img src="http://coder.cl/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcoder.cl%2F2009%2F07%2Fprotecting-apache-2x%2F&amp;t=securing%20apache%202.x" title="Facebook"><img src="http://coder.cl/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=securing%20apache%202.x%20-%20http%3A%2F%2Fcoder.cl%2F2009%2F07%2Fprotecting-apache-2x%2F" title="Twitter"><img src="http://coder.cl/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fcoder.cl%2F2009%2F07%2Fprotecting-apache-2x%2F&amp;title=securing%20apache%202.x&amp;annotation=This%20is%20not%20a%20security%20guide%20for%20Apache%20HTTP%20Server.%20Instead%20is%20a%20small%20guide%20that%20can%20be%20used%20as%20reference%20to%20protect%20some%20aspects%20of%20how%20the%20applications%20and%20pages%20are%20served.%20For%20security%20guides%2C%20you%20must%20look%20at%20other%20places.%20Well%2C%20I%20hope%20this%20ap" title="Google Bookmarks"><img src="http://coder.cl/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>


<br/><br/><br/><hr height="1px" width="50%" />
<div style='text-align: center !important;'><b>Copyright © 2009 Daniel Molina Wegener</b><br/><b>Atribución-No Comercial-Sin Derivadas 2.0 Chile</b><br/><a target='_new' rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/cl/"><img alt="Creative Commons License" style="border-width:0" src="/cc88x31.png" /></a></div>
<br/><hr height="1px" width="100%" />
<p><small>© Daniel Molina Wegener for <a href="http://coder.cl">coder . cl</a>, 2009. | <a href="http://coder.cl/2009/07/protecting-apache-2x/">Permalink</a> | <a href="http://coder.cl/2009/07/protecting-apache-2x/#comments">No comment</a><br/>Post tags: <br/></small></p>
]]></content:encoded>
			<wfw:commentRss>http://coder.cl/2009/07/protecting-apache-2x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>easy web services with pyxser</title>
		<link>http://coder.cl/2009/05/pyxser-10r-and-webservices/</link>
		<comments>http://coder.cl/2009/05/pyxser-10r-and-webservices/#comments</comments>
		<pubDate>Mon, 11 May 2009 03:37:27 +0000</pubDate>
		<dc:creator>Daniel Molina Wegener</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[pyxser]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://coder.cl/?p=76</guid>
		<description><![CDATA[Working with Web Services is not an easy task. We must know about XML, WSDL and some other technologies and also the framework that we are using. In this article I will try to demonstrate how easy is the task of sending objects through Web Services. First of all I&#8217;m using SOAPpy as my Web [...]]]></description>
			<content:encoded><![CDATA[<p><!--:en-->
<p>Working with <i>Web Services</i> is not an easy task. We must know about <b>XML</b>, <b>WSDL</b> and some other technologies and also the framework that we are using. In this article I will try to demonstrate how easy is the task of sending objects through <i>Web Services</i>. First of all I&#8217;m using <a href='http://soapy.sourceforge.net/'>SOAPpy</a> as my <i>Web Services</i> framework and the second element in the recipe is <a href='http://coder.cl/software/pyxser/'>pyxser</a> my Python-Object to XML serializer and deserializer.</p>
<p><!--:--><span id="more-76"></span><!--:en--></p>
<p>A single web service that should receive an <i>XML string</i>, now can convert that input into a <i>Python Object</i>. Let&#8217;s see the server code under <i>SOAPpy</i> framework <img src='http://coder.cl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<pre name="code" class="python" cols="80" rows="43">
#!/usr/bin/env python
#
#
import pyxser as ser
from testpkg.sample import *
import SOAPpy

def hello(request):
    ### so we take the input string as xml and we deserialize it
    req = ser.unserialize(obj = request, enc = &quot;ascii&quot;)
    ### we create a response object
    reqo = TestAnotherObject()
    ### we assign equal .first_element properties
    reqo.first_element = req.first_element
    ### we set a custom .second_element property
    reqo.second_element = &quot;client&quot;
    ### we serialize the response object
    rep = ser.serialize(obj = reqo, enc = &quot;ascii&quot;, depth = 0)
    ### we return back the response object as xml string
    return rep

### create the server
server = SOAPpy.Server.SOAPServer((&quot;localhost&quot;, 8888))
### register the hello function
server.registerFunction(hello)

print &quot;Starting server...&quot;
### and let server run...
server.serve_forever()
</pre>
<p>The code above show a single server with one operation <i>hello()</i>. The <b>pyxser</b> serializer can not serialize/deserialize classes declared in the <i>__main__</i> module. So we declare a class in an external module <i>testpkg.sample</i> with the code bellow.</p>
<pre name="code" class="python" cols="80" rows="43">
__all__ = [
    'TestAnotherObject']

class TestAnotherObject:
    first_element = &quot;123&quot;
    second_element = &quot;456&quot;
    def __str__(self):
        return repr(self.__dict__)
    def __repr__(self):
        return repr(self.__dict__)
</pre>
<p>This module contains our serialization target <i>data transfer object</i>. Now, at the client side, we have a complete support to send and receive objects using pyxser <img src='http://coder.cl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<pre name="code" class="python" cols="80" rows="43">
#!/usr/bin/env python
#
#
#

import pyxser as ser
import sys, httplib
from testpkg.sample import *
import SOAPpy

HELLOWS_NS = &quot;http://localhost/hellows/&quot;

def GetHello():
    ### we create a request object
    reqo = TestAnotherObject()
    ### we set the object properties as we need
    reqo.first_element = &quot;client&quot;
    reqo.second_element = &quot;server&quot;
    ### we serialize the object using pyxser
    hstr = ser.serialize(obj = reqo, enc = &quot;ascii&quot;, depth = 0)
    ### we create a SOAP proxy to our server
    server = SOAPpy.SOAPProxy(&quot;http://localhost:8888/&quot;)
    ### we call the server method and we get the xml string
    resp = server.hello(hstr)
    ### we convert the response xml into a python object and
    ### return it!
    return ser.unserialize(obj = resp, enc = &quot;ascii&quot;)

if __name__ == &quot;__main__&quot;:
    ### then we can manipulate the object easily
    newobj = GetHello()
    print newobj.first_element[0:2]
</pre>
<p>We can do more expertize work with pyxser. You can try using <i>WSDL</i>, and importing the complete pyxser 1.0 XML Schema as follows&#8230;</p>
<pre name="code" class="xml" cols="80" rows="43">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;
&lt;wsdl:definitions xmlns:soap=&quot;http://schemas.xmlsoap.org/wsdl/soap/&quot;
        xmlns:tns=&quot;http://www.example.org/Hello/&quot;
        xmlns:wsdl=&quot;http://schemas.xmlsoap.org/wsdl/&quot;
        xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
        xmlns:pyxs=&quot;http://projects.coder.cl/pyxser/model/&quot; name=&quot;Hello&quot;
        targetNamespace=&quot;http://www.example.org/Hello/&quot;&gt;
        &lt;wsdl:types&gt;
                &lt;xsd:schema targetNamespace=&quot;http://www.example.org/Hello/&quot;
                        xmlns:soap=&quot;http://schemas.xmlsoap.org/wsdl/soap/&quot;
                        xmlns:tns=&quot;http://www.example.org/Hello/&quot;
                        xmlns:wsdl=&quot;http://schemas.xmlsoap.org/wsdl/&quot;
                        xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
                        xmlns:pyxs=&quot;http://projects.coder.cl/pyxser/model/&quot;&gt;
                        &lt;xsd:import
                                namespace=&quot;http://projects.coder.cl/pyxser/model/&quot;
                                schemaLocation=&quot;pyxser-1.0.xsd&quot; /&gt;
                        &lt;xsd:element name=&quot;obj&quot; /&gt;
                &lt;/xsd:schema&gt;
        &lt;/wsdl:types&gt;
        &lt;wsdl:message name=&quot;HelloRequest&quot;&gt;
                &lt;wsdl:part element=&quot;tns:obj&quot; name=&quot;request&quot; /&gt;
        &lt;/wsdl:message&gt;
        &lt;wsdl:message name=&quot;HelloResponse&quot;&gt;
                &lt;wsdl:part element=&quot;tns:obj&quot; name=&quot;response&quot; /&gt;
        &lt;/wsdl:message&gt;
        &lt;wsdl:portType name=&quot;Hello&quot;&gt;
                &lt;wsdl:operation name=&quot;Hello&quot;&gt;
                        &lt;wsdl:input message=&quot;tns:HelloRequest&quot; /&gt;
                        &lt;wsdl:output message=&quot;tns:HelloResponse&quot; /&gt;
                &lt;/wsdl:operation&gt;
        &lt;/wsdl:portType&gt;
        &lt;wsdl:binding name=&quot;HelloSOAP&quot; type=&quot;tns:Hello&quot;&gt;
                &lt;soap:binding style=&quot;document&quot;
                        transport=&quot;http://schemas.xmlsoap.org/soap/http&quot; /&gt;
                &lt;wsdl:operation name=&quot;Hello&quot;&gt;
                        &lt;soap:operation
                                soapAction=&quot;http://www.example.org/Hello/Hello&quot; /&gt;
                        &lt;wsdl:input&gt;
                                &lt;soap:body use=&quot;literal&quot; /&gt;
                        &lt;/wsdl:input&gt;
                        &lt;wsdl:output&gt;
                                &lt;soap:body use=&quot;literal&quot; /&gt;
                        &lt;/wsdl:output&gt;
                &lt;/wsdl:operation&gt;
        &lt;/wsdl:binding&gt;
        &lt;wsdl:service name=&quot;Hello&quot;&gt;
                &lt;wsdl:port binding=&quot;tns:HelloSOAP&quot; name=&quot;HelloSOAP&quot;&gt;
                        &lt;soap:address location=&quot;http://www.example.org/&quot; /&gt;
                &lt;/wsdl:port&gt;
        &lt;/wsdl:service&gt;
&lt;/wsdl:definitions&gt;
</pre>
<p>So we can use integrate our Python web services by calling with other platforms and let the other platforms know the pyxser serialization model to allow us to develop more complex Web Services&#8230;</p>
<p>Certainly the pyxser package comes with with both standard and C14N XML schemas, and both standard and C14N XML DTDs &mdash; or document type definitions &mdash; so you can use them in your Web Services development.</p>
<p><!--:--></p>



share this article at: 


	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fcoder.cl%2F2009%2F05%2Fpyxser-10r-and-webservices%2F&amp;title=easy%20web%20services%20with%20pyxser&amp;source=coder+.+cl+system+programmer+%26amp%3B+web+developer&amp;summary=Working%20with%20Web%20Services%20is%20not%20an%20easy%20task.%20We%20must%20know%20about%20XML%2C%20WSDL%20and%20some%20other%20technologies%20and%20also%20the%20framework%20that%20we%20are%20using.%20In%20this%20article%20I%20will%20try%20to%20demonstrate%20how%20easy%20is%20the%20task%20of%20sending%20objects%20through%20Web%20Services.%20" title="LinkedIn"><img src="http://coder.cl/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fcoder.cl%2F2009%2F05%2Fpyxser-10r-and-webservices%2F&amp;title=easy%20web%20services%20with%20pyxser&amp;notes=Working%20with%20Web%20Services%20is%20not%20an%20easy%20task.%20We%20must%20know%20about%20XML%2C%20WSDL%20and%20some%20other%20technologies%20and%20also%20the%20framework%20that%20we%20are%20using.%20In%20this%20article%20I%20will%20try%20to%20demonstrate%20how%20easy%20is%20the%20task%20of%20sending%20objects%20through%20Web%20Services.%20" title="del.icio.us"><img src="http://coder.cl/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcoder.cl%2F2009%2F05%2Fpyxser-10r-and-webservices%2F&amp;title=easy%20web%20services%20with%20pyxser&amp;bodytext=Working%20with%20Web%20Services%20is%20not%20an%20easy%20task.%20We%20must%20know%20about%20XML%2C%20WSDL%20and%20some%20other%20technologies%20and%20also%20the%20framework%20that%20we%20are%20using.%20In%20this%20article%20I%20will%20try%20to%20demonstrate%20how%20easy%20is%20the%20task%20of%20sending%20objects%20through%20Web%20Services.%20" title="Digg"><img src="http://coder.cl/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fcoder.cl%2F2009%2F05%2Fpyxser-10r-and-webservices%2F&amp;title=easy%20web%20services%20with%20pyxser" title="Reddit"><img src="http://coder.cl/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcoder.cl%2F2009%2F05%2Fpyxser-10r-and-webservices%2F&amp;t=easy%20web%20services%20with%20pyxser" title="Facebook"><img src="http://coder.cl/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=easy%20web%20services%20with%20pyxser%20-%20http%3A%2F%2Fcoder.cl%2F2009%2F05%2Fpyxser-10r-and-webservices%2F" title="Twitter"><img src="http://coder.cl/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fcoder.cl%2F2009%2F05%2Fpyxser-10r-and-webservices%2F&amp;title=easy%20web%20services%20with%20pyxser&amp;annotation=Working%20with%20Web%20Services%20is%20not%20an%20easy%20task.%20We%20must%20know%20about%20XML%2C%20WSDL%20and%20some%20other%20technologies%20and%20also%20the%20framework%20that%20we%20are%20using.%20In%20this%20article%20I%20will%20try%20to%20demonstrate%20how%20easy%20is%20the%20task%20of%20sending%20objects%20through%20Web%20Services.%20" title="Google Bookmarks"><img src="http://coder.cl/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>


<br/><br/><br/><hr height="1px" width="50%" />
<div style='text-align: center !important;'><b>Copyright © 2009 Daniel Molina Wegener</b><br/><b>Atribución-No Comercial-Sin Derivadas 2.0 Chile</b><br/><a target='_new' rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/cl/"><img alt="Creative Commons License" style="border-width:0" src="/cc88x31.png" /></a></div>
<br/><hr height="1px" width="100%" />
<p><small>© Daniel Molina Wegener for <a href="http://coder.cl">coder . cl</a>, 2009. | <a href="http://coder.cl/2009/05/pyxser-10r-and-webservices/">Permalink</a> | <a href="http://coder.cl/2009/05/pyxser-10r-and-webservices/#comments">No comment</a><br/>Post tags: <br/></small></p>
]]></content:encoded>
			<wfw:commentRss>http://coder.cl/2009/05/pyxser-10r-and-webservices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>i&#8217;ve changed my gpg keys&#8230;</title>
		<link>http://coder.cl/2009/02/ive-changed-my-gpg-keys/</link>
		<comments>http://coder.cl/2009/02/ive-changed-my-gpg-keys/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 13:08:17 +0000</pubDate>
		<dc:creator>Daniel Molina Wegener</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://coder.cl/?p=60</guid>
		<description><![CDATA[I&#8217;ve changed my GPG keys. Take the new ones&#8230; -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Key Type:...........RSA Key Length:.........4096 Signing Algorithm:..SHA512 Cipher Algorithm:...AES-256 Entropy Used:.......HW-RNG Passphrase Length:..25-up chars Valid Keys: pub 4096R/98E0EE4D 2009-02-20 uid Daniel Molina Wegener (Developer) pub 4096R/67B3A7BB 2009-02-20 uid Daniel Molina Wegener (Developer) pub 4096R/8F9B167B 2009-02-20 uid Daniel Molina Wegener (Developer) Revoked [...]]]></description>
			<content:encoded><![CDATA[<p><!--:en-->
<p>I&#8217;ve changed my GPG keys. Take the new ones&#8230;</p>
<p><!--:--><span id="more-60"></span><!--:en--></p>
<pre><code>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Key Type:...........RSA
Key Length:.........4096
Signing Algorithm:..SHA512
Cipher Algorithm:...AES-256
Entropy Used:.......HW-RNG
Passphrase Length:..25-up chars

Valid Keys:
pub   4096R/98E0EE4D 2009-02-20
uid                  Daniel Molina Wegener (Developer)

pub   4096R/67B3A7BB 2009-02-20
uid                  Daniel Molina Wegener (Developer)

pub   4096R/8F9B167B 2009-02-20
uid                  Daniel Molina Wegener (Developer)

Revoked Keys:
pub   4096R/A8F10DE3 2009-02-18 [revocada: 2009-02-20]
uid                  Daniel Molina Wegener (Developer)

pub   1024D/32C7B9FA 2009-02-18 [revocada: 2009-02-20]
uid                  Daniel Molina Wegener (Developer)

pub   4096R/DF22B3AF 2009-02-18 [revocada: 2009-02-20]
uid                  Daniel Molina Wegener (Developer)

pub   1024D/4B0608C4 2007-02-06 [revocada: 2009-02-18]
uid                  Daniel Molina Wegener (Developer)
uid                  [jpeg image of size 2663]

pub   1024D/41696C3C 2007-02-06 [revocada: 2009-02-18]
uid                  Daniel Molina Wegener (Developer)
uid                  [jpeg image of size 2663]

pub   1024D/F5CEDD61 2007-10-27 [revocada: 2009-02-18]
uid                  Daniel Molina Wegener (Developer)
uid                  [jpeg image of size 2997]

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (FreeBSD)

iQIcBAEBCgAGBQJJn3Q1AAoJEHxqfq6Y4O5NjF4QAJF2Nnnnb2rPP7Oy++U3hF3u
Tud8Yx2wLjSHCb94pM0AYgi/bVFYBQhUx0tN1TDx/WcsXpbkYvVMiV+4z/IjyL2P
zdFqSFp9igE3daYc4ScmrUY0bw+A/ZS5mcgNE2zKuPKD4Vu8rLwpf4JfJ5BKy/Mo
u8QIQNECOSJcPCZn4HQZA07CZcyRpGnCeDQVxiUQtpJSmSHEVoyiCMd3jMxDxYVH
glby39MXjKE1tnlYeC6DqV7bdGnATYrRoaTfRtowj/XRDmOtg117exTCkBQ5FYLd
oUXKxkSimUIlqLtTfLv+DCJDD0x1m5OCAQjXhtgjcCx1uzOdojpR40+/3dyaNKz4
SJ/Yf69fNnk2/TAikSMyrojZ5aZuAHY4XV6RUtqPbv2mmdLNoEBbQE8hSG+Bd0cm
Wf5/twfRl+85jvaa5niJZEBMJM8Y3leo++3lJQnlkrXMgJD4AFzCMU0V7c6iMCsQ
TVxPOkQT/ZPSWIv37dhEhJTekPVKrBxlhzY/Wii91Zrm08LDRz6CHPCRcyl8r9Gc
PJ2DTPOoWnLDSku56TFLCMPquTlHFgut76Uh+lIr1Gp6xX0XnoYTr279YRQL1JsD
JCrv4fhy3Q/WSbfYKhuV2x6ECST7WUK3GCbYlK20YDQS/0kkwbuGzX/dzwPOezdG
VjBUtFIMGwwOJWM3Rj7p
=yksm
-----END PGP SIGNATURE-----
</code></pre>
<p><!--:--></p>



share this article at: 


	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fcoder.cl%2F2009%2F02%2Five-changed-my-gpg-keys%2F&amp;title=i%27ve%20changed%20my%20gpg%20keys...&amp;source=coder+.+cl+system+programmer+%26amp%3B+web+developer&amp;summary=I%27ve%20changed%20my%20GPG%20keys.%20Take%20the%20new%20ones...%0D%0A%0D%0A%0D%0A-----BEGIN%20PGP%20SIGNED%20MESSAGE-----%0D%0AHash%3A%20SHA512%0D%0A%0D%0A%0D%0A%0D%0AKey%20Type%3A...........RSA%0D%0AKey%20Length%3A.........4096%0D%0ASigning%20Algorithm%3A..SHA512%0D%0ACipher%20Algorithm%3A...AES-256%0D%0AEntropy%20Used%3A.......HW-RNG%0D%0APassph" title="LinkedIn"><img src="http://coder.cl/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fcoder.cl%2F2009%2F02%2Five-changed-my-gpg-keys%2F&amp;title=i%27ve%20changed%20my%20gpg%20keys...&amp;notes=I%27ve%20changed%20my%20GPG%20keys.%20Take%20the%20new%20ones...%0D%0A%0D%0A%0D%0A-----BEGIN%20PGP%20SIGNED%20MESSAGE-----%0D%0AHash%3A%20SHA512%0D%0A%0D%0A%0D%0A%0D%0AKey%20Type%3A...........RSA%0D%0AKey%20Length%3A.........4096%0D%0ASigning%20Algorithm%3A..SHA512%0D%0ACipher%20Algorithm%3A...AES-256%0D%0AEntropy%20Used%3A.......HW-RNG%0D%0APassph" title="del.icio.us"><img src="http://coder.cl/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcoder.cl%2F2009%2F02%2Five-changed-my-gpg-keys%2F&amp;title=i%27ve%20changed%20my%20gpg%20keys...&amp;bodytext=I%27ve%20changed%20my%20GPG%20keys.%20Take%20the%20new%20ones...%0D%0A%0D%0A%0D%0A-----BEGIN%20PGP%20SIGNED%20MESSAGE-----%0D%0AHash%3A%20SHA512%0D%0A%0D%0A%0D%0A%0D%0AKey%20Type%3A...........RSA%0D%0AKey%20Length%3A.........4096%0D%0ASigning%20Algorithm%3A..SHA512%0D%0ACipher%20Algorithm%3A...AES-256%0D%0AEntropy%20Used%3A.......HW-RNG%0D%0APassph" title="Digg"><img src="http://coder.cl/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fcoder.cl%2F2009%2F02%2Five-changed-my-gpg-keys%2F&amp;title=i%27ve%20changed%20my%20gpg%20keys..." title="Reddit"><img src="http://coder.cl/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcoder.cl%2F2009%2F02%2Five-changed-my-gpg-keys%2F&amp;t=i%27ve%20changed%20my%20gpg%20keys..." title="Facebook"><img src="http://coder.cl/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=i%27ve%20changed%20my%20gpg%20keys...%20-%20http%3A%2F%2Fcoder.cl%2F2009%2F02%2Five-changed-my-gpg-keys%2F" title="Twitter"><img src="http://coder.cl/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fcoder.cl%2F2009%2F02%2Five-changed-my-gpg-keys%2F&amp;title=i%27ve%20changed%20my%20gpg%20keys...&amp;annotation=I%27ve%20changed%20my%20GPG%20keys.%20Take%20the%20new%20ones...%0D%0A%0D%0A%0D%0A-----BEGIN%20PGP%20SIGNED%20MESSAGE-----%0D%0AHash%3A%20SHA512%0D%0A%0D%0A%0D%0A%0D%0AKey%20Type%3A...........RSA%0D%0AKey%20Length%3A.........4096%0D%0ASigning%20Algorithm%3A..SHA512%0D%0ACipher%20Algorithm%3A...AES-256%0D%0AEntropy%20Used%3A.......HW-RNG%0D%0APassph" title="Google Bookmarks"><img src="http://coder.cl/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>


<br/><br/><br/><hr height="1px" width="50%" />
<div style='text-align: center !important;'><b>Copyright © 2009 Daniel Molina Wegener</b><br/><b>Atribución-No Comercial-Sin Derivadas 2.0 Chile</b><br/><a target='_new' rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/cl/"><img alt="Creative Commons License" style="border-width:0" src="/cc88x31.png" /></a></div>
<br/><hr height="1px" width="100%" />
<p><small>© Daniel Molina Wegener for <a href="http://coder.cl">coder . cl</a>, 2009. | <a href="http://coder.cl/2009/02/ive-changed-my-gpg-keys/">Permalink</a> | <a href="http://coder.cl/2009/02/ive-changed-my-gpg-keys/#comments">No comment</a><br/>Post tags: <br/></small></p>
]]></content:encoded>
			<wfw:commentRss>http://coder.cl/2009/02/ive-changed-my-gpg-keys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>preventing os guessing</title>
		<link>http://coder.cl/2009/02/preventing-os-guessing-a-success/</link>
		<comments>http://coder.cl/2009/02/preventing-os-guessing-a-success/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 02:01:18 +0000</pubDate>
		<dc:creator>Daniel Molina Wegener</dc:creator>
				<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://coder.cl/?p=59</guid>
		<description><![CDATA[Today I was experimenting with the FreeBSD TCP Stack Parameters with one target in mind: to prevent os guessing through classical port scanners. One of the most classic scanner — the one that appeared in the The Matrix movie as a h4x0r tool — brings me the next piece of output on a Wintendo machine: [...]]]></description>
			<content:encoded><![CDATA[<p><!--:en-->Today I was experimenting with the FreeBSD <em>TCP Stack Parameters</em> with one target in mind: to prevent os guessing through classical <em>port scanners</em>. One of the most classic scanner — the one that appeared in the <em>The Matrix</em> movie <del>as a <em>h4x0r</em> tool</del> — brings me the next piece of output on a <em>Wintendo</em> machine:</p>
<p><!--:--><span id="more-59"></span><!--:en--></p>
<pre><code>
Device type: general purpose
Running: Microsoft Windows 2000|2003|XP|Vista
Too many fingerprints match this host to give specific OS details
</code></pre>
<p>With the FreeBSD <em>default parameters</em>, it brings me the next piece of output with some basic <em>pf</em> and <em>ipfw</em> rules:</p>
<pre><code>
Device type: general purpose
Running: FreeBSD 7.X
OS details: FreeBSD 7.0-RELEASE, 7.1-RELEASE
</code></pre>
<p>But I&#8217;ve successfully prevented the <em>OS guessing</em> from this tool by modifying the stack parameters and random number generation parameters on my machine:</p>
<pre><code>
Retrying OS detection (try #2) against quake (XXX.XXX.XXX.XXX)
Host quake (XXX.XXX.XXX.XXX) appears to be up ... good.
All 80 scanned ports on quake (XXX.XXX.XXX.XXX) are filtered
Too many fingerprints match this host to give specific OS details
TCP/IP fingerprint:
...
</code></pre>
<p>Well, I think that this is a success over this kind of tools. The next and easy to put settings on third party software, such as <em>Apache Web Server</em>, are a merely token on the way securing the operating system.</p>
<p><strong>BSD</strong> guys can use the <em>blackhole feature</em> plus some <em>random number generation parameters</em> to prevent the <em>OS guessing</em>&#8230; Linux guys seems to need some patches and third party tools, I&#8217;m trying to figure on how to apply similar rules in <em>WRT</em> distributions by using the iptables features. Only then I, will release some tips or a well documented paper.<br />
<!--:--></p>



share this article at: 


	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fcoder.cl%2F2009%2F02%2Fpreventing-os-guessing-a-success%2F&amp;title=preventing%20os%20guessing&amp;source=coder+.+cl+system+programmer+%26amp%3B+web+developer&amp;summary=Today%20I%20was%20experimenting%20with%20the%20FreeBSD%20TCP%20Stack%20Parameters%20with%20one%20target%20in%20mind%3A%20to%20prevent%20os%20guessing%20through%20classical%20port%20scanners.%20One%20of%20the%20most%20classic%20scanner%20%E2%80%94%20the%20one%20that%20appeared%20in%20the%20The%20Matrix%20movie%20as%20a%20h4x0r%20tool%20%E2%80%94%20bri" title="LinkedIn"><img src="http://coder.cl/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fcoder.cl%2F2009%2F02%2Fpreventing-os-guessing-a-success%2F&amp;title=preventing%20os%20guessing&amp;notes=Today%20I%20was%20experimenting%20with%20the%20FreeBSD%20TCP%20Stack%20Parameters%20with%20one%20target%20in%20mind%3A%20to%20prevent%20os%20guessing%20through%20classical%20port%20scanners.%20One%20of%20the%20most%20classic%20scanner%20%E2%80%94%20the%20one%20that%20appeared%20in%20the%20The%20Matrix%20movie%20as%20a%20h4x0r%20tool%20%E2%80%94%20bri" title="del.icio.us"><img src="http://coder.cl/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcoder.cl%2F2009%2F02%2Fpreventing-os-guessing-a-success%2F&amp;title=preventing%20os%20guessing&amp;bodytext=Today%20I%20was%20experimenting%20with%20the%20FreeBSD%20TCP%20Stack%20Parameters%20with%20one%20target%20in%20mind%3A%20to%20prevent%20os%20guessing%20through%20classical%20port%20scanners.%20One%20of%20the%20most%20classic%20scanner%20%E2%80%94%20the%20one%20that%20appeared%20in%20the%20The%20Matrix%20movie%20as%20a%20h4x0r%20tool%20%E2%80%94%20bri" title="Digg"><img src="http://coder.cl/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fcoder.cl%2F2009%2F02%2Fpreventing-os-guessing-a-success%2F&amp;title=preventing%20os%20guessing" title="Reddit"><img src="http://coder.cl/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcoder.cl%2F2009%2F02%2Fpreventing-os-guessing-a-success%2F&amp;t=preventing%20os%20guessing" title="Facebook"><img src="http://coder.cl/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=preventing%20os%20guessing%20-%20http%3A%2F%2Fcoder.cl%2F2009%2F02%2Fpreventing-os-guessing-a-success%2F" title="Twitter"><img src="http://coder.cl/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fcoder.cl%2F2009%2F02%2Fpreventing-os-guessing-a-success%2F&amp;title=preventing%20os%20guessing&amp;annotation=Today%20I%20was%20experimenting%20with%20the%20FreeBSD%20TCP%20Stack%20Parameters%20with%20one%20target%20in%20mind%3A%20to%20prevent%20os%20guessing%20through%20classical%20port%20scanners.%20One%20of%20the%20most%20classic%20scanner%20%E2%80%94%20the%20one%20that%20appeared%20in%20the%20The%20Matrix%20movie%20as%20a%20h4x0r%20tool%20%E2%80%94%20bri" title="Google Bookmarks"><img src="http://coder.cl/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>


<br/><br/><br/><hr height="1px" width="50%" />
<div style='text-align: center !important;'><b>Copyright © 2009 Daniel Molina Wegener</b><br/><b>Atribución-No Comercial-Sin Derivadas 2.0 Chile</b><br/><a target='_new' rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.0/cl/"><img alt="Creative Commons License" style="border-width:0" src="/cc88x31.png" /></a></div>
<br/><hr height="1px" width="100%" />
<p><small>© Daniel Molina Wegener for <a href="http://coder.cl">coder . cl</a>, 2009. | <a href="http://coder.cl/2009/02/preventing-os-guessing-a-success/">Permalink</a> | <a href="http://coder.cl/2009/02/preventing-os-guessing-a-success/#comments">No comment</a><br/>Post tags: <br/></small></p>
]]></content:encoded>
			<wfw:commentRss>http://coder.cl/2009/02/preventing-os-guessing-a-success/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
