<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0"><channel><title>!NO Moa 'O Sauce</title><link>http://www.nomoa.com/bsd/</link><description>! the echo $? chamber</description><generator>PyRSS2Gen-1.0.0</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>SSH: What it takes to get your work done</title><link>http://www.nomoa.com/bsd/dev/null/bsd/SSH_Mastery_OpenSSH_Putty..html</link><description>&lt;div class="post"&gt;
    &lt;div class="posthead"&gt;
        &lt;h1&gt;&lt;a href="http://www.nomoa.com/bsd/dev/null/bsd/SSH_Mastery_OpenSSH_Putty..html"&gt;SSH: What it takes to get your work done&lt;/a&gt;&lt;/h1&gt;
        &lt;h2&gt;11 May 2012&lt;/h2&gt;
    &lt;/div&gt;
    &lt;div class="postbody"&gt;
        &lt;p&gt;Michael W Lucas' book: SSH Mastery: OpenSSH, Putty, Tunnels and Keys.
It is good enough that I avoided buying the book, even when it was
released with funding support my favourite Open Source project (&lt;a href="http://www.openbsd.org" title="The OpenBSD project produces a FREE, multi-platform 4.4BSD-based UNIX-like operating system. Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography. "&gt;OpenBSD&lt;/a&gt; with
OpenSSH.) &lt;/p&gt;

&lt;p&gt;I was under some insane self delusion that I didn't want to be bound
by the books research, so that I can ethically 'document' my own stumbles
into SSH to share freely with others. Fortunately, the better solution, 
for users and HR administrators of System Administrators, is to
just buy this book.&lt;/p&gt;

&lt;p&gt;After recieving a blogger review copy of Michael's book, the 1st thing
I did was to hit the corporate buy button to order a legitimate
print/e-book copy for my cohort, fellow sysadmin. Why?&lt;/p&gt;

&lt;p&gt;What value is there in this book:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Guru in the room&lt;/li&gt;
&lt;li&gt;Saving Money&lt;/li&gt;
&lt;li&gt;Saving Time&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;The Guru in the room&lt;/h3&gt;

&lt;p&gt;We don't know what we don't know.&lt;/p&gt;

&lt;p&gt;The fastest path of learning I've enjoyed has been as the new kid amongst
zen masters who danced on their keyboards. Unfortunately the masters
moved on and we graduate a little higher up the ladder until &lt;a href="http://en.wikipedia.org/wiki/Peter_Principle" title="Peter Principle: employees tend to rise to their level of incompetence"&gt;we've
reached the peak of our incompetence&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The book is a good reference source, with fine examples for many features,
and like the zen masters, some of the answers is in the 'debug' sections,
how to determine whether what you think you should get, is how SSH is
seeing it.&lt;/p&gt;

&lt;p&gt;Online articles are often short, make assumptions about how OpenSSH/Putty 
works, '&lt;em&gt;script&lt;/em&gt;' a lot of commands that require version X.Y 
of this and M.N of that. Rarely are there supportive notes on how to diagnose 
the instructions, or related system has response.&lt;/p&gt;

&lt;p&gt;SSH Mastery explores, explains, provides samples, provides
debugging techniques &lt;strong&gt;so we can explore, understand, type-in the SSH commands
to see all those features at work&lt;/strong&gt;. Not the guru in the room, but
the next best thing, someone knowledgeable to go to.&lt;/p&gt;

&lt;h3&gt;Saving me money?&lt;/h3&gt;

&lt;p&gt;4 years ago I was locking down a machine in the USA (from Australia.) I'd spent a month
configuring some complicated Mail Processing system on that box, and was almost
ready for the 'live' output. The only thing left to do was formalise the lock
down of the machine.&lt;/p&gt;

&lt;p&gt;2 minutes later, I'd locked myself out with a typo in my ssh server configuration. After
ripping my hair out, I found the answer (documented in Chapter 3) and &lt;a href="
./toolkit/misc/ssh.html#sshd"&gt;published it online&lt;/a&gt; and &lt;a href="
http://serverfault.com/questions/398/why-wont-automatic-login-through-ssh-with-authorized-keys-work/11780#11780"&gt;@serverfault.com&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chapter 3: The OpenSSH Server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Leading off the book (after the general introduction to the topic, data encryption)
seems at first odd.&lt;/p&gt;

&lt;p&gt;I was hoping for a dive-in to all the magical command-line tricks to flex my
authoritarian prowess. But for a system administrator's book, it is understated
how critical it is to configure your server correctly, and how to validate 
the server is working correctly: &lt;strong&gt;debug&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;Saving me time.&lt;/h3&gt;

&lt;p&gt;There's a lot out there about OpenSSH that we all Bing/Google when the need arises. The one big item that I'm
always referring to is tunneling.&lt;/p&gt;

&lt;p&gt;For 5 years I worked on machines hidden behind layers of locked away networks requiring multiple hops 
(log onto one machine, and log from there onto another machine, then to log onto the machine
I actually need to work on.)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My Machine connects to&lt;/li&gt;
&lt;li&gt;Bastion machine to connect to&lt;/li&gt;
&lt;li&gt;Destination machine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where the above "Bastion" machine may be 2 or more intermediate machines.&lt;/p&gt;

&lt;h3&gt;Saving me.&lt;/h3&gt;

&lt;p&gt;But there's more to SSH than system administration, and there are often tight spots
where SSH can actually save you.&lt;/p&gt;

&lt;p&gt;I was in Tonga over the Christmas break when I needed to do some funds transfers on some 
accounts in Australia, but the internet awareness/security doesn't allow any transfers from
an IP Address from Tonga.&lt;/p&gt;

&lt;p&gt;Thanks to OpenSSH, Putty and socket routing, &lt;/p&gt;

&lt;p&gt;Refer to other reviews on the web for the utility of this title,
including user reviews &lt;a href="http://www.amazon.com/SSH-Mastery-OpenSSH-Tunnels-ebook/product-reviews/B006ZO9ULK"&gt;@amazon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Title: SSH Mastery: OpenSSH, PuTTY, Tunnels and Keys&lt;/p&gt;

&lt;p&gt;Author: Michael W. Lucas&lt;/p&gt;

&lt;p&gt;Publisher: Tilted Windmill Press (January 18, 2012) &lt;/p&gt;

    &lt;/div&gt;
&lt;/div&gt;
</description><guid isPermaLink="true">http://www.nomoa.com/bsd/dev/null/bsd/SSH_Mastery_OpenSSH_Putty..html</guid><pubDate>Fri, 11 May 2012 08:35:00 GMT</pubDate></item><item><title>Postfix smtp_tls_policy_maps fingerprinting</title><link>http://www.nomoa.com/bsd/dev/null/policy/postfix.smtp.tls.policy.maps.html</link><description>&lt;div class="post"&gt;
    &lt;div class="posthead"&gt;
        &lt;h1&gt;&lt;a href="http://www.nomoa.com/bsd/dev/null/policy/postfix.smtp.tls.policy.maps.html"&gt;Postfix smtp_tls_policy_maps fingerprinting&lt;/a&gt;&lt;/h1&gt;
        &lt;h2&gt;02 May 2012&lt;/h2&gt;
    &lt;/div&gt;
    &lt;div class="postbody"&gt;
        &lt;p&gt;It bothered me enough that I need to record it, and hopefully the path to a solution that
others will follow.&lt;/p&gt;

&lt;pre class="screen-output"&gt;
(delivery temporarily suspended: Server certificate not verified)
&lt;/pre&gt;

&lt;p&gt;Lesson: Document things properly, especially if it's something interesting, more so
if the technology/thing you're doing is normally not what you do, and it's already taken
you a long while to get it working properly in the first place.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Mind you, the above may be a difficult task when rushed to get a system out and the 
only way to confirm the installation is to break it apart and start from scratch&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;Scenario:&lt;/h3&gt;

&lt;p&gt;We exchange e-mail with an external organisation (duh!!) with regulatory standards that 
requires us to ensure e-mail sent to them is encrypted. We achieve this through the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Certify that the server we're connecting to is theirs by using:
&lt;ul&gt;
&lt;li&gt;using SSL certificates&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;smtp_tls_policy_maps&lt;/strong&gt; and &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;fingerprinting&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Encrypt the traffic between the two sites using TLS&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, we follow the online &lt;a href="http://www.postfix.org/TLS_README.html"&gt;Postfix TLS Support&lt;/a&gt;
and &lt;a href="http://www.postfix.org/postconf.5.html#smtpd_tls_fingerprint_digest"&gt;smtpd_tls_fingerprint&lt;/a&gt; 
documentation and have it up and running with the basic configuration:&lt;/p&gt;

&lt;p&gt;File extract: /etc/postfix/main.cf&lt;/p&gt;

&lt;pre&gt;smtp_tls_policy_maps = hash:/etc/postfix/tls_policy

&lt;/pre&gt;

&lt;p&gt;File extract: /etc/postfix/tls_policy&lt;/p&gt;

&lt;pre&gt;example.com    fingerprint
    fingerprint-digest-is-here

&lt;/pre&gt;

&lt;h3&gt;Problem:&lt;/h3&gt;

&lt;p&gt;External Organisation used a 1 year self-sign certificate, it expires (as most eventually do) and
no messages go through them. We get the below &lt;em&gt;"cryptic"&lt;/em&gt; message in our logs:&lt;/p&gt;

&lt;pre class="screen-output"&gt;
(delivery temporarily suspended: Server certificate not verified)
&lt;/pre&gt;

&lt;h3&gt;Answer:&lt;/h3&gt;

&lt;p&gt;Seems easy enough, we just need to re-do/fix our 1st step above for Certifying the connection.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Get updated certificate from remote site&lt;/li&gt;
&lt;li&gt;Update the fingerprint&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Load up the online documentation and follow it through.&lt;/p&gt;

&lt;p&gt;Oooops, it doesn't work.&lt;/p&gt;

&lt;p&gt;The logs laugh: /var/log/maillog&lt;/p&gt;

&lt;pre class="screen-output"&gt;
(delivery temporarily suspended: Server certificate not verified)
&lt;/pre&gt;

&lt;ol&gt;
&lt;li&gt;The message is not sent (deferred) with the error message "Server Certificate not verified". &lt;/li&gt;
&lt;li&gt;The message is &lt;strong&gt;never&lt;/strong&gt; sent, since the Server Certificate is &lt;strong&gt;never&lt;/strong&gt; validated. &lt;/li&gt;
&lt;li&gt;Bypass certification and send e-mail. The short-term configuration is to not require the 
&lt;strong&gt;fingerprint&lt;/strong&gt; to be 'certified'. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I'm sure I followed the steps correctly ... &lt;strong&gt;(wrong)&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;Solution:&lt;/h3&gt;

&lt;p&gt;Walk away from the documentation for a while, walk through it again with the presumption that you've screwed
everything up so you need to take all your knowledge and check the basics (verify assumptions) as you go along.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;digest format&lt;/li&gt;
&lt;li&gt;fingerprint&lt;/li&gt;
&lt;li&gt;policy file&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;Digest Format&lt;/h5&gt;

&lt;p&gt;&amp;#91;&lt;a href="http://www.postfix.org/postconf.5.html#smtp_tls_fingerprint_digest"&gt;smtp_tls_fingerprint_digest&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;Verification of an SMTP server certificate fingerprints, uses a &lt;em&gt;message digest.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Don't get trapped putting together fingerprints that are invalid, or unnecessary. Find out
which fingerprint digest is supported by your configuration, and use that.&lt;/p&gt;

&lt;pre&gt;postconf | grep fingerprint

&lt;/pre&gt;&lt;pre class="screen-output"&gt;
lmtp_tls_fingerprint_digest = md5
smtp_tls_fingerprint_digest = md5
smtpd_tls_fingerprint_digest = md5
&lt;/pre&gt;

&lt;p&gt;The above configuration output shows we're using the MD5 digest format. It should be fine,
but read the documentation about what it says may be the better choice digest for you.&lt;/p&gt;

&lt;h5&gt;Fingerprint&lt;/h5&gt;

&lt;p&gt;&amp;#91;Ref: &lt;a href="http://www.openssl.org/docs/apps/x509.html"&gt;openssl x509&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;After acquiring getting your SSL Certificate through some 'trusted' method,
generate the fingerprint for the 'trusted' certificate in the following
method.&lt;/p&gt;

&lt;pre&gt;openssl x509 -noout -fingerprint -md5 -in /etc/ssl/certs/example.pem

&lt;/pre&gt;&lt;pre class="screen-output"&gt;
MD5 Fingerprint=&lt;em&gt;fingerprint-digest-is-here&lt;/em&gt;
&lt;/pre&gt;

&lt;p&gt;After comparing the above &lt;em&gt;fingerprint-digest-is-here&lt;/em&gt; with what I have
in the &lt;em&gt;tls_policy&lt;/em&gt; file, it is obvious they don't look anything similar.&lt;/p&gt;

&lt;h5&gt;Policy File&lt;/h5&gt;

&lt;p&gt;With the above &lt;em&gt;fingerprint&lt;/em&gt;, and &lt;em&gt;digest&lt;/em&gt; we can fix
the TLS Policy table such as the below:&lt;/p&gt;

&lt;pre&gt;example.com    fingerprint
    fingerprint-digest-is-here

&lt;/pre&gt;

&lt;p&gt;Remap the file to make sure the correct hashed version is active:&lt;/p&gt;

&lt;pre&gt;# postmap /etc/postfix/tls_policy 

&lt;/pre&gt;

&lt;p&gt;Restart the server and things are coool.&lt;/p&gt;

&lt;pre&gt;postfix reload

&lt;/pre&gt;

&lt;p&gt;But isn't that what the Postfix documentation says you have to do?&lt;/p&gt;

&lt;p&gt;I guess it does, but for some reason the steps I took those days weren't the correct steps.
And now that I've rehashed the already hashed, I hopefully will not mis-read the documentation
the next time through.&lt;/p&gt;

    &lt;/div&gt;
&lt;/div&gt;
</description><guid isPermaLink="true">http://www.nomoa.com/bsd/dev/null/policy/postfix.smtp.tls.policy.maps.html</guid><pubDate>Wed, 02 May 2012 15:51:00 GMT</pubDate></item><item><title>TLS and Postfix</title><link>http://www.nomoa.com/bsd/dev/null/openbsd/smtp.tls.html</link><description>&lt;div class="post"&gt;
    &lt;div class="posthead"&gt;
        &lt;h1&gt;&lt;a href="http://www.nomoa.com/bsd/dev/null/openbsd/smtp.tls.html"&gt;TLS and Postfix&lt;/a&gt;&lt;/h1&gt;
        &lt;h2&gt;30 June 2011&lt;/h2&gt;
    &lt;/div&gt;
    &lt;div class="postbody"&gt;
        &lt;p&gt;Upgrading some of our Mail Servers to support for TLS (Transport Layer Security) 
in Postfix and apart from learning how to do it, also learned a key maxim
of programmers (readily applicable to system administrators)&lt;/p&gt;

&lt;blockquote&gt;
DO NOT PRE-OPTIMISE
&lt;/blockquote&gt;

&lt;p&gt;Wasted two days of my life, with increased anxiety during the install,
configuration process because I was trying to be too smart too early.&lt;/p&gt;

&lt;p&gt;After a Duhhh moment, I went back to the very beginning of the install
process, and did everything as per the known guides (without that little
tweak I had preconceived, and the install worked in less than an 1 hour)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My failure?&lt;/strong&gt; I got too far ahead of myself, with bright ideas, untested
of how I wanted things to work, and started modifying my plans (and
solidifying assumptions about how things &lt;strong&gt;will&lt;/strong&gt; work) before collecting
evidence for that the assumptions for each stage, were valid.&lt;/p&gt;

&lt;p&gt;My idea was for the TLS roll-out on 5 different servers (all requiring
SSL certificates) could all use one Certificate Authority. I'd made
self-signed certificates before, so presumed/guessed at an approach
for one centralised Certificate Authority. Unfortunately, instead of 
verifying my assumptions of how that can be done, I steam-rolled ahead
ass-uming some minor modifications to the process would &lt;strong&gt;just work.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create Certificate Authority (CA) key&lt;/li&gt;
&lt;li&gt;Create Certificate Signing Request (CSR) for the host&lt;/li&gt;
&lt;li&gt;Create a Certificate (CRT) from the CSR, signed by my new the CA key&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The install failed, but gave error messages hinting at problems with the
key created in my step #2, or the certificate created in step #3. After
agonising through different diagnostic processes from the various
error messages. It took 2 whole days to throw away the assumption that
caused the error, my change in how I was generating (or using a Certificate
Authority.) Arggghhhh!!!&lt;/p&gt;

&lt;p&gt;I had been blindly looking at various avenues for why Step #2 or Step #3 were
not working correctly, including trying stupid hints from random websites.&lt;/p&gt;

&lt;p&gt;The error that Postfix was throwing up said that:&lt;/p&gt;

&lt;p&gt;File extract: /var/log/maillog&lt;/p&gt;

&lt;pre class="screen-output"&gt;
warning: cannot get RSA private key from file /etc/ssl/private/server.key.pem:disabling TLS support
warning: TLS library problem: xxxxxx certificates routine xxxx key values mismatch xxxxx src/crypto/x509/x509_cmp.c:318:
&lt;/pre&gt;

&lt;ol&gt;
&lt;li&gt;Can't read the Key&lt;/li&gt;
&lt;li&gt;There is no match between the key and certificate&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;OK, the key file is there, I can see it in the file system. I can open it
up with openssl and verify that it is a valid key file by using:&lt;/p&gt;

&lt;pre&gt;sudo openssl rsa -noout -text -in /path-to/private/server.key.pem

&lt;/pre&gt;

&lt;p&gt;I could even validate that the signed certificate is a valid certificate,
likewise the Certificate Authority certificate (so far as our current
understanding tells us.) &lt;/p&gt;

&lt;pre&gt;sudo openssl req -noout -text -in /path-to/server.crt.pem
sudo openssl req -noout -text -in /path-to/private/ca.crt.pem

&lt;/pre&gt;

&lt;p&gt;I blissfully ignore the 2nd error message until I could resolve why my
Postfix server was complaining about the Server Key. The &lt;strong&gt;ass&lt;/strong&gt;umption,
it's probably an 'artifact,' an error caused by the previous error
(can't open the key.) We find all sorts of "solutions" on the web, 
which may work on other OS's, but  irrelevant for our OpenBSD install 
(most related to using 'openssl rsa -in server.key.pem -out 
server.key.rsa.pem to make sure that the key file is not password protected ?) 
Not relevant for our OpenBSD install.&lt;/p&gt;

&lt;p&gt;It was well into the third day before I found references to verifying that
a certificate is created from a key.&lt;/p&gt;

&lt;pre&gt;$ sudo openssl rsa -noout -text -in /path-to/private/server.key.pem -modulus \
    | grep ^Modulus | openssl md5
$ sudo openssl x509 -noout -text -in /path-to/server.crt.pem -modulus \
    | grep ^Modulus | openssl md5

&lt;/pre&gt;

&lt;p&gt;The use of "| openssl md5" just simplifies the comparison of the Modulus values
which are supposed to be the same if they are paired (i.e. certificate was generated
from the key.) There's also the requirement that both "public exponent" are
equal but the above Modulus comparison is a quick verification process.&lt;/p&gt;

&lt;p&gt;OK, I'm running the above command line on my self-signed certificate, and
server key. The Modulus &lt;strong&gt;DO NOT MATCH.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
What?? That doesn't make sense?
&lt;/blockquote&gt;

&lt;p&gt;I wander through comparisons of all the key &amp;amp; certificate pairs, to find 
out that the &lt;strong&gt;Modulus for my designated CA Key, matches with the 
Self-Signed Certificate.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
What?? That doesn't make sense?
&lt;/blockquote&gt;

&lt;p&gt;Obviously (duhh) there must be something wrong with my signing process. 
We trace back our implementation steps and re-do, re-test.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step #3. No that didn't work. No, don't repeat it again. Go back to&lt;/li&gt;
&lt;li&gt;Step #2 then #3. No that didn't work. No, don't repeat it again. Go back to &lt;/li&gt;
&lt;li&gt;Step #1 then #2, then #3. No that didn't work. &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
OK, something is seriously wrong!!!
&lt;/blockquote&gt;

&lt;p&gt;The 2nd error (and quick perusal into the source code) definitely indicates
that the key file is not related to the certificate. Our &lt;em&gt;Modulus&lt;/em&gt; investigations
above shows that the key/certificate pairs are not created correctly.
Could my CA ideas be the cause of my install failures?&lt;/p&gt;

&lt;p&gt;Throw that assumption away and create certificates how you've always done it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step #2 Sign the CSR using the Server Key.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Normal self-signed instructions always use the same key for the CA as well
as the Server.&lt;/p&gt;

&lt;p&gt;5 minutes later, we have Postfix TLS working as expected, and our &lt;a href="http://www.nomoa.com/bsd/comms/mail/paranoia/tls.html"&gt;documentation
is complete&lt;/a&gt;. Postfix TLS without 
dovecot, without cyrus-sasl, woohoo, too easy.&lt;/p&gt;

&lt;p&gt;Now to &lt;a href="http://www.nomoa.com/bsd/comms/mail/paranoia/tls.html#verify"&gt;verify that TLS actually encrypts&lt;/a&gt; ?&lt;/p&gt;

    &lt;/div&gt;
&lt;/div&gt;
</description><guid isPermaLink="true">http://www.nomoa.com/bsd/dev/null/openbsd/smtp.tls.html</guid><pubDate>Thu, 30 Jun 2011 16:15:00 GMT</pubDate></item><item><title>Watching over your wall</title><link>http://www.nomoa.com/bsd/dev/null/policy/watching.over.your.wall.html</link><description>&lt;div class="post"&gt;
    &lt;div class="posthead"&gt;
        &lt;h1&gt;&lt;a href="http://www.nomoa.com/bsd/dev/null/policy/watching.over.your.wall.html"&gt;Watching over your wall&lt;/a&gt;&lt;/h1&gt;
        &lt;h2&gt;10 June 2011&lt;/h2&gt;
    &lt;/div&gt;
    &lt;div class="postbody"&gt;
        &lt;p&gt;As networks continue to grow, sometimes against our wishes, sometimes with 
our full support, it becomes more important to get some overview of how
and what is moving across your network(s.)&lt;/p&gt;

&lt;p&gt;In the beginning, in a land far away, we only had a few machines wired
up and life was simple.&lt;/p&gt;

&lt;p&gt;Now, most of us have too many machines with an unknown quantity of malware
pounding on them (and subsequently on your network.) That's before
we even get to our beloved users.&lt;/p&gt;

&lt;p&gt;If you get blamed when things go bad on your network, it's time you started
taking charge of knowing what's going across your network. 
&lt;a href="http://www.michaelwlucas.com"&gt;Michael W. Lucas'&lt;/a&gt; published an insightful
book to help us with that &lt;a href="http://networkflowanalysis.com"&gt;Network Flow Analysis.&lt;/a&gt;
More importantly, for us, is that he chose to describe the solution
using tools accessible to everyone (aka Open Source.) We've finally cleaned
up some internal notes for getting the software to work well in our 
favourite os (tm) &lt;a href="http://www.openbsd.org" title="The OpenBSD project produces a FREE, multi-platform 4.4BSD-based UNIX-like operating system. Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography. "&gt;OpenBSD&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These notes augment the installation instructions from that book.
Where the human factor is important, in customisation/localisation,
interpretation, we don't do any of that here. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.nostarch.com/networkflow_mlucas.htm"&gt;Buy the book&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now you're back, follow through to find out how we put it together for 
&lt;a href="http://www.nomoa.com/bsd/toolkit/monitoring/netflow.html"&gt;Netflow with flow-tools&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's saved our bacon a number of times, we know who's packets are causing
congestion, what times congestions occur, why things occur. AND, we
can print out those meaningless charts that senior dweebs nod their
heads and just love.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.michaelwlucas.com"&gt;Michael W. Lucas&lt;/a&gt; has some war stories
where traffic flow monitoring has helped him out, and we can attest
to it's daily, weekly value.&lt;/p&gt;

&lt;p&gt;Our notes on &lt;a href="http://www.nomoa.com/bsd/toolkit/monitoring/netflow.html"&gt;Netflow with flow-tools&lt;/a&gt;&lt;/p&gt;

    &lt;/div&gt;
&lt;/div&gt;
</description><guid isPermaLink="true">http://www.nomoa.com/bsd/dev/null/policy/watching.over.your.wall.html</guid><pubDate>Fri, 10 Jun 2011 15:39:00 GMT</pubDate></item><item><title>Disk Utilisation i386 4.9</title><link>http://www.nomoa.com/bsd/dev/null/policy/disk.utilisation.html</link><description>&lt;div class="post"&gt;
    &lt;div class="posthead"&gt;
        &lt;h1&gt;&lt;a href="http://www.nomoa.com/bsd/dev/null/policy/disk.utilisation.html"&gt;Disk Utilisation i386 4.9&lt;/a&gt;&lt;/h1&gt;
        &lt;h2&gt;19 May 2011&lt;/h2&gt;
    &lt;/div&gt;
    &lt;div class="postbody"&gt;
        &lt;p&gt;Every now and then people ask how they should partition their hard disk,
this doesn't answer that question, but gives some view on how much
disk space is used up on a bare system built for compiling OpenBSD
from source.&lt;/p&gt;

&lt;p&gt;Reference OpenBSD 4.9 i386, &lt;a href="http://www.openbsd.org/faq/faq5.html"&gt;FAQ 5&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The following is a summary of disk space used on a bare install built for and
after compiling OpenBSD 4.9 i386. No packages installed.&lt;/p&gt;

&lt;table&gt;
    &lt;tr&gt;
        &lt;th&gt;path&lt;/th&gt;
        &lt;th&gt;Used&lt;/th&gt;
        &lt;th&gt;More Info&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;      &lt;td&gt;/etc&lt;/td&gt;
                &lt;td&gt;60M&lt;/td&gt;
                &lt;td&gt;Bare install, no modifications&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;/usr&lt;/td&gt;
                &lt;td&gt;6.0G&lt;/td&gt;
                &lt;td&gt;STABLE source extracted to src, xenocara, and compiled using ./obj, ./xobj, as well
                as ./rel for release files, and ./dest for pre-release files&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;/usr/src&lt;/td&gt;
                &lt;td&gt;851M&lt;/td&gt;
                &lt;td&gt;includes compiled kernel GENERIC.MP&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;/usr/ports&lt;/td&gt;
                &lt;td&gt;332M&lt;/td&gt;
                &lt;td&gt;No compiled packages, no distfiles&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;/usr/obj&lt;/td&gt;
                &lt;td&gt;1G&lt;/td&gt;
                &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;/usr/xenocara&lt;/td&gt;
                &lt;td&gt;540M&lt;/td&gt;
                &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;/usr/xobj&lt;/td&gt;
                &lt;td&gt;420M&lt;/td&gt;
                &lt;td&gt;&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$DESTDIR&lt;/td&gt;
                &lt;td&gt;2G&lt;/td&gt;
                &lt;td&gt;/usr/dest Includes cvs export for src, xenocara, and ports&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$RELEASEDIR&lt;/td&gt;
                &lt;td&gt;500M&lt;/td&gt;
                &lt;td&gt;/usr/rel Includes tgz source for src, xenocara, ports&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$CVSROOT&lt;/td&gt;
                &lt;td&gt;4.4G&lt;/td&gt;
                &lt;td&gt;CVS Tree scp'd from another server/workstation.&lt;/td&gt;
    &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$CDBUILD&lt;/td&gt;
                &lt;td&gt;1.1G&lt;/td&gt;
                &lt;td&gt;Contains pre-build CD directory and install.iso created with &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=mkhybrid&amp;sektion=8" title="OpenBSD Project Manual Pages (mkhybrid)"&gt;mkhybrid(8)&lt;/a&gt;
                (no packages) approximately 490MB each&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

    &lt;/div&gt;
&lt;/div&gt;
</description><guid isPermaLink="true">http://www.nomoa.com/bsd/dev/null/policy/disk.utilisation.html</guid><pubDate>Thu, 19 May 2011 09:27:00 GMT</pubDate></item><item><title>Preparation Pays Off - Big time</title><link>http://www.nomoa.com/bsd/dev/null/cloud/preparations.pay.off.big.time.html</link><description>&lt;div class="post"&gt;
    &lt;div class="posthead"&gt;
        &lt;h1&gt;&lt;a href="http://www.nomoa.com/bsd/dev/null/cloud/preparations.pay.off.big.time.html"&gt;Preparation Pays Off - Big time&lt;/a&gt;&lt;/h1&gt;
        &lt;h2&gt;07 April 2011&lt;/h2&gt;
    &lt;/div&gt;
    &lt;div class="postbody"&gt;
        &lt;p&gt;One of those days, when the disaster you didn't want, barges
through the door, but forward planning, preparations, testing
gets you through the day. Also known as, we and our gweeky
friends say "Ku-oool," while the rest of the family say, "uhhh,
ok, we're happy for you."&lt;/p&gt;

&lt;p&gt;We could have had a major disaster (i.e. my day ruined, as
opposed to things melting down) which were nicely averted 
because of (as said before.)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;forward planning&lt;/li&gt;
&lt;li&gt;preparations&lt;/li&gt;
&lt;li&gt;tests to verify the preparation.&lt;/li&gt;
&lt;li&gt;activate on live system&lt;/li&gt;
&lt;li&gt;what have we learned&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;The Disaster&lt;/h3&gt;

&lt;p&gt;Our PRIMARY data link provider suddenly went off the air.
More of our workers are at remote sites, than are at
the central office (where I'm sitting.) The WAN going
down means that a lot of people are not able to do their
work (or are impaired from using IT services they are
normally reliant on.)&lt;/p&gt;

&lt;div  class="imgcenter" &gt;
    &lt;img src="http://www.nomoa.com/bsd/media/images/posts/openbsd/datacenter.dependencies.png"  title="Data Center Dependencies" &gt;

&lt;/div&gt;

&lt;p&gt;The diagram indicates the level of dependence those satellite
sites have on this primary data center. Site A has a completely
independent data service, so loss of the link limits a few operational
issues for IT, but no loss of service to the business.&lt;/p&gt;

&lt;p&gt;Site's B, and C, are independent for the majority of their business
needs, but in the current situation are dependent on our Primary 
Data Center for shared services such as e-mail. Other than that,
they can operate without the WAN link.&lt;/p&gt;

&lt;p&gt;Sites D, E, and F can't work while the Primary Data Center is OFFLINE.&lt;/p&gt;

&lt;p&gt;We couldn't connect to the provider's next hop link, and
we definitely couldn't get any traffic, let alone BGP routing
information.&lt;/p&gt;

&lt;p&gt;All those nice tricks for verifying that your BGPD server
is up and running are nice, but they don't do you any good
when your 5 other sites confirm that the primary vendor's
BGP Server is &lt;strong&gt;definitely not online&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;Forward Planning ?&lt;/h4&gt;

&lt;p&gt;After years of &lt;a title="to persuade (someone) by flattery or 
pleasing talk to do what one wants; wheedle; coax"&gt;cajouling&lt;/a&gt;, 
the powers above folded and added a &lt;strong&gt;SECONDARY WAN&lt;/strong&gt; service
instead of the previous dependence we had of tunneling VPN
through an Internet ISP connection.&lt;/p&gt;

&lt;p&gt;Unfortunately, since there were budget constraints and
the original WAN Data Link service was commissioned without
regard for a secondary, we had to come up with some
mechanisms for getting the SECONDARY connected.&lt;/p&gt;

&lt;p&gt;After balancing different options with what the business
operations required and our limited resources, we decided
to configure the two systems as ACTIVE-STANDBY. One Link was ACTIVE 
(the Primary link) and the other configured as a STANDBY service. 
We could automate the switch, but given the reality of the 
infrastructure, we would meet a requirement of X hours to switch
the data between the services(i.e. go from ACTIVE-STANDBY to 
OFF-ACTIVE)&lt;/p&gt;

&lt;h4&gt;Preparations&lt;/h4&gt;

&lt;p&gt;We gradually rolled out the secondary, backup, data link using 
off-the-shelf desktops as the routing/gateways.
The routing, access policies were updated to include the
potential for routing through the secondary link.&lt;/p&gt;

&lt;p&gt;For some sites, and services, we load balanced traffic
along both data links.&lt;/p&gt;

&lt;h4&gt;TEST&lt;/h4&gt;

&lt;p&gt;All the preparations were nice and dandy, but what would 
we actually have to do to make sure things were flipped
from one service to the other? We needed to do a partial
test on the actual network instead of our test network.&lt;/p&gt;

&lt;p&gt;After some time, we just pushed through that downtime was
required and a full service test is required taking all OFFLINE 
while we routing changes, tests (of course we had to do it during 
organisation down-time, which inevitably means that IT are up at 
odd hours or working during everyone else's downtime/bedtime)&lt;/p&gt;

&lt;p&gt;Going through the preparations and controlled tests forced us 
to look at ways to minimise operator error during the process 
(controlled automation in as many bits of the process as possible.)&lt;/p&gt;

&lt;p&gt;We successfully completed the tests on a subset of the
full WAN network (site B, and D with the Primary Data Center,)
found some further points in the operation that we wanted to 
improve and went through evolving those bits of the operation.&lt;/p&gt;

&lt;p&gt;Suffice it to say, after that test, we were confident
that we could switch over from FAILED-STANDBY to FAILED-ACTIVE
well within the 2 ~ 4 hour window that was part of our
agreement with business.&lt;/p&gt;

&lt;h3&gt;Activating on LIVE System&lt;/h3&gt;

&lt;p&gt;Doing my bit sleeping during one of those interminable meetings
where you watch paint drying on the wall, or the back of your
eye-lids (depending on how lucky you are.) One of the IT team 
woke me up, seriously disturbing the meeting, to say that all
hell has broken loose. All sites were down, the WAN Link has disappeared. 
People were running trying to figure what to do next.&lt;/p&gt;

&lt;blockquote&gt;
What do I tell XYZ at Site-A?
&lt;/blockquote&gt;

&lt;blockquote&gt;
What do I tell everyone here at main office ?
&lt;/blockquote&gt;

&lt;blockquote&gt;
What, when, where, who ?
&lt;/blockquote&gt;

&lt;p&gt;I walk calmly to my desk, to find that my offsider (partner
in these things) wasn't at his desk. &lt;/p&gt;

&lt;p&gt;That's odd ?&lt;/p&gt;

&lt;p&gt;Sit myself down at the desk. OK, look at through some of the charts
generated by Smokeping, yup the primary link looks like it disappears
about *here (pointing at the screen.) The charts also show that the
secondary link is humming along just fine, although latency to Site B
is off the charts (200 ms, is that even possible?) &lt;/p&gt;

&lt;p&gt;My boss sees me working and goes to get a cup of coffee.&lt;/p&gt;

&lt;p&gt;Log onto our WAN Gateway box, and yup our BGP Server is humming along just fine,
we're advertising our LAN routes through BGP but that's all I can see (as mentioned 
earlier, the Primary linkn next hop is not responding to pings so we can't get to it
and there's no hope of trying to get BGP traffic from/through there.)&lt;/p&gt;

&lt;h4&gt;Switching from the Primary Link to the Backup Link&lt;/h4&gt;

&lt;p&gt;ACTIVE-STANDBY to FAILED-ACTIVE&lt;/p&gt;

&lt;p&gt;Using the shortcuts I've got, log onto 3 of the 6 remote sites through the
secondary data link. Site D, E, and F. Site B is not connecting on either
of its redundant active-passive gateways. Yep, BGPD is running fine
on those sites, and showing advertising but no other routing information
on those servers.&lt;/p&gt;

&lt;p&gt;Run a script on each active gateway and we are now flipped over to the secondary link.&lt;/p&gt;

&lt;p&gt;Total time to flip the link between 4 sites ? About 3 ~ 4 minutes after
sitting down at the desk.&lt;/p&gt;

&lt;p&gt;What happened to the other 3 sites? &lt;/p&gt;

&lt;p&gt;Site A, and C we haven't rolled out the secondary links (Site A is 
wired but we haven't had anyone available to go down and plug things in. 
It's also a low prioarity. Site C is only a month old and just hasn't had 
reason for the secondary link, if the link failure is prolonged then users 
can work through the User VPN or we can set up a slow tunnel through the 
Internet. &lt;/p&gt;

&lt;p&gt;Site B had the 200ms latency problem. My admin-buddy had to walk across
to that office.&lt;/p&gt;

&lt;h4&gt;Testing the Service&lt;/h4&gt;

&lt;p&gt;Spent another 30~40 minutes going through the routing validation process, 
and refining the routing et. al. (yeah, you've really got to get
a document together of these things, largely so you've actually
gone through the exercise and have a clearer experience with
what needs to be done.)&lt;/p&gt;

&lt;p&gt;Fortunately, because we have QOS Queues on our gateways, specific for
each Data Link Service, it is easy to confirm whether data
is still routed through the Failed Primary Service, or if they
are all going through the Active Secondary/Backup Service.&lt;/p&gt;

&lt;pre class="command-line"&gt;
systat queue
&lt;/pre&gt;

&lt;p&gt;We make some corrections in our queueing that were showing some traffic still
showing up on the FAILED link. Adjusted a few things here and
there that would simplify the whole process in the future.&lt;/p&gt;

&lt;h4&gt;Switch from STANDBY-ACTIVE to ACTIVE-STANDBY&lt;/h4&gt;

&lt;p&gt;Another 30 minutes passes, and the Primary Service comes back online.
Since the Primary Service provides a much much bigger Data Link than
our Secondary link, we are definitely very keen to put everything
back onto it.&lt;/p&gt;

&lt;p&gt;In two minutes, we were able to re-route all remote WAN sites to talk
to each other through the Primary Link (to ease some of the traffic
from the Secondary link) especially since this is a very minimal part
of the traffic, but let's us look at the routing issue as well as
whether the service can at least stay up for more than a few seconds.&lt;/p&gt;

&lt;p&gt;After another while, we re-route all traffic back to the Primary link.
That took another two minutes (at most.)&lt;/p&gt;

&lt;p&gt;The last switch, no-one knew about.&lt;/p&gt;

&lt;h3&gt;What have we learned&lt;/h3&gt;

&lt;p&gt;Even with the knowledge we gained from the controlled TEST, we 
gained a whole lot more knowledge when having to perform the
same process on the WHOLE network.&lt;/p&gt;

&lt;p&gt;We've identified a few more areas that we can better administer,
automate, and are in the process of updating those.&lt;/p&gt;

&lt;p&gt;Putting the effort down up front sure saved my bacon, more important
for the business, it meant that after jumping up and down that their
network connection was down, the users could sit down and get on
with work (making money for the company, serving customers et. al.)&lt;/p&gt;

&lt;h4&gt;Active - Active ?&lt;/h4&gt;

&lt;p&gt;Why aren't the Data Link's on Active-Active ?&lt;/p&gt;

&lt;p&gt;Not really worth the effort at this point (not our call)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Data Links are not equivalent, they have their different 
benefits but are not equal to make it an easy load balancing equation&lt;/li&gt;
&lt;li&gt;Doable, but with a lot of 'moving parts' that will be difficult
to maintain within our current resource constraints.
&lt;ul&gt;
&lt;li&gt;Remember that whatever knobs are tuned to get ACTIVE-ACTIVE
has to be easy and quick to switch back when one of the
services fail and we have ACTIVE-FAIL or FAIL-ACTIVE.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Where was my admin-buddy ?&lt;/h4&gt;

&lt;p&gt;Sometimes the &lt;a title="He was busting, and had to go to the toilet.
Sorry, one of those things that can't hold for anybody"&gt;call of nature&lt;/a&gt; 
is of even higher priority than your IT needs.&lt;/p&gt;

&lt;h2&gt;Summary&lt;/h2&gt;

&lt;p&gt;Smiling on the train home, 'cause I'm not working overtime tonight
(you do get overtime don't you ? (smiling because we know we don't.))&lt;/p&gt;

&lt;p&gt;Oh yeah, those six sites? They're connected using &lt;a href="http://www.openbsd.org" title="The OpenBSD project produces a FREE, multi-platform 4.4BSD-based UNIX-like operating system. Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography. "&gt;OpenBSD&lt;/a&gt; 4.8 redundant 
ACTIVE-PASSIVE gateways. Connecting to them, monitoring, managing during uptime 
and downtime are just a blast!!&lt;/p&gt;

    &lt;/div&gt;
&lt;/div&gt;
</description><guid isPermaLink="true">http://www.nomoa.com/bsd/dev/null/cloud/preparations.pay.off.big.time.html</guid><pubDate>Thu, 07 Apr 2011 17:39:00 GMT</pubDate></item><item><title>Ethicacy in Telephone Interview Answers</title><link>http://www.nomoa.com/bsd/dev/null/about/ethicacy.in.telephone.interview.answers.html</link><description>&lt;div class="post"&gt;
    &lt;div class="posthead"&gt;
        &lt;h1&gt;&lt;a href="http://www.nomoa.com/bsd/dev/null/about/ethicacy.in.telephone.interview.answers.html"&gt;Ethicacy in Telephone Interview Answers&lt;/a&gt;&lt;/h1&gt;
        &lt;h2&gt;30 March 2011&lt;/h2&gt;
    &lt;/div&gt;
    &lt;div class="postbody"&gt;
        &lt;p&gt;Aka: Googling during a phone interview&lt;/p&gt;

&lt;p&gt;This is tangentally relevant to OpenBSD, you can safely ignore it
and you're life will not have missed anything. Take the road less 
travelled.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ethics and IT&lt;/li&gt;
&lt;li&gt;An example Ethical Dilemma&lt;/li&gt;
&lt;li&gt;How many bits in a mac address&lt;/li&gt;
&lt;li&gt;In Linux, what is the default signal sent by kill&lt;/li&gt;
&lt;li&gt;Of the ps output what is the label D for&lt;/li&gt;
&lt;li&gt;Summary&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Ethics and IT&lt;/h3&gt;

&lt;p&gt;We continue to have some interesting discussions at work about the
ethicacy of a lot of things we get around to in IT. For example,
we're the guys that are brought on by various departments and HR  to
assist them in forensic type stuff which sometimes goes into
trolling through peoples archives on our backup tapes (email,
documents, etc.)&lt;/p&gt;

&lt;p&gt;The generalised 'ethos' statement in the workplace seems to be: &lt;/p&gt;

&lt;blockquote&gt;
if it's legal,  then you do it. 
&lt;/blockquote&gt;

&lt;p&gt;But we have an abundant list of recent and current Global Events 
of totally unethical behaviour dressed 'legal' as defined by the conqueror 
to not be so enthralled by such simplistic misdirections.&lt;/p&gt;

&lt;h3&gt;An example Ethical Dilemma&lt;/h3&gt;

&lt;p&gt;Our ethical dilemma, within IT, for today was a phone interview I
went through where purposeful trip-up questions were
raised. Given time, some of the questions could possibly have been
deduced, but why bother when you can easily Google/Bing to
get your answer ?&lt;/p&gt;

&lt;p&gt;Note: The field with a huge library of answers freely published
online is IT (and fields where the IT crowd are fixated with, such as
music, science fiction, and fantasy.)&lt;/p&gt;

&lt;p&gt;The questions seem to have been good questions, in some manner, 
and definitely tripped me up because I didn't know, but do the questions
reveal comparability of skills, or abilities to search the web? &lt;/p&gt;

&lt;p&gt;One of my univesity courses, an Accounting course, had an open book
final course exam (the only one I've ever been in) and this was largely
so students didn't have to memorise any of the material, but if you
didn't understand the material, there wasn't enough time to find
answers and have it relevant to the problems in the exam.&lt;/p&gt;

&lt;p&gt;Was this one of those problems ? Was my error in not asking / clarifying
whether I could use [choice of favourite search engine]?&lt;/p&gt;

&lt;p&gt;Hopefully you find the material educational in what it may be asking
and how easy it is for IT personnel to find answers on the internet 
without having to memorise things. You still have to know your stuff
to make use of the answers, but it is soo easy to find answers to
IT things on the Internet these days.&lt;/p&gt;

&lt;p&gt;Were these questions good IT questions ?&lt;/p&gt;

&lt;h3&gt;&lt;a href="http://lmgtfy.com/?q=how+many+bits+in+a+mac+address"&gt;How many bits in a mac address&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;"Urgghhh, I don't know. I recall when I read them in places, that they're
separated with colons, and theres something like four or more of them."&lt;/p&gt;

&lt;p&gt;What races through my mind: "How could I figure this out with-out Googling?"&lt;/p&gt;

&lt;p&gt;I'm talking with the interviewer that I'm trying to figure out the answer&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I knew the address numbers were in hex (0,1,2...,d,e,f) but for the life
of me I couldn't remember how many pairs there were.&lt;/li&gt;
&lt;li&gt;I flipped over my laptop to look for a mac address, (you know some of
the devices these days have it on a sticker) Nope, one of those stupid 
devices that has that sticker buried inside on top of the physical device.&lt;/li&gt;
&lt;li&gt;The laptop was on, so I got a command-prompt and tried to look for the
mac address. No go, Windows doesn't show it if the device isn't active
&lt;em&gt;(Grrrr, should have used ipconfig /all and that may have had the answer,
and I just knew there was a reason I should have installed a Unix thing
on this device, oh wait, I did and it didn't work for what I was using this
laptop for: manpage: &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ifconfig" title="OpenBSD Project Manual Pages (ifconfig)"&gt;ifconfig&lt;/a&gt; )&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;OK, I've got a phone and these things have MAC address for their wifi. 
Can't use this, 'cause I'm on the phone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Wait, ..., What's the difference between using Google/Bing and dissecting the answer
from getting an example MAC and manually calculating the # of bits ?&lt;/p&gt;

&lt;h4&gt;What does it reveal&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Have you had enough exposure in networking, especially at the command-prompt
or configuration files, where this knowledge has become ingrained.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Why don't I know this ?&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;What was it again that makes it useful to have this knowledge?
I recall some of those digits represent a unique id for the device vendor,
and then the rest is used by the vendor to 'create' a unique
ID for each physical device.&lt;/li&gt;
&lt;li&gt;Tech Trivia: Microsoft published their standard where it used the MAC
address with other items to create a GUUID for each word document
(wow, that's even more useful knowledge) so they can track the origin
of any word document around the globe.&lt;/li&gt;
&lt;li&gt;We're the l33t of computer nerds, we are a fount of knowledge of
the most trivial and irrelevant knowledge. This is just one of those
that I now know, but had not come across it in any meaningful way
before hand.&lt;/li&gt;
&lt;li&gt;Where have I had actual reason to record them? MAC Address
ACLs for squid-cache and dhcp, but obviously wasn't taking enough
interest to even remember how many digits were involved, let
alone the number of bits.&lt;/li&gt;
&lt;li&gt;MAC addresses show up on ARP, but I haven't bothered to worry about
them unless there was some conflict requiring further investigation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that was only the first question!!! Things are definitely not looking up
for my interview.&lt;/p&gt;

&lt;p&gt;We're in trouble and we haven't even passed the first step.&lt;/p&gt;

&lt;h3&gt;&lt;a href="http://lmgtfy.com/?q=In Linux, what is the default signal sent by kill"&gt;In Linux, what is the default signal sent by kill&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Urggggh, never thought of that before. I may have read it somewhere
but definitely haven't used it 'without an explicit' signal to 'know'
what to expect as a default behaviour.&lt;/p&gt;

&lt;p&gt;This one is simple enough to find from the manpage: &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=kill&amp;amp;sektion=1" title="OpenBSD Project Manual Pages (kill)"&gt;kill(1)&lt;/a&gt; Straight
there in the 1st Paragraph of the Description.&lt;/p&gt;

&lt;h4&gt;What does it reveal&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Have you had enough exposure in Unix administration where this knowledge
is ingrained.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.urbandictionary.com/define.php?term=nfi" title="No F*n Idea"&gt;NFI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Why don't I know this ?&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Have to say, I've never used the kill command without an explicit
signal. Didn't think it was the kind of command that was sane to
be launching without explicitly telling it how to behave.&lt;/li&gt;
&lt;li&gt;I guess the default is portable enough, since Linux and OpenBSD both agree
on the default behaviour (using a sample of '2' to base this simplification)&lt;/li&gt;
&lt;li&gt;I guessed at SIGHUP (-1) but that's just bias on what I try to do
first before I do the KILL(-9).&lt;/li&gt;
&lt;li&gt;Now, here lies a powerful tool not meant for most mortals. Including
me 8&amp;lt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;a href="http://lmgtfy.com/?q=Of the ps output what is the label D for"&gt;Of the ps output what is the label D for&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Urgghhh, OK, this interview is seriously becoming a disaster. Haven't
really bothered with looking at the 'labels' except to see whether the
service/app was a zombie or didn't even execute.&lt;/p&gt;

&lt;p&gt;This one took a little longer to find (had to page through two screens
to get at the answer), but it's right there in the ole manpage: &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ps&amp;amp;sektion=1" title="OpenBSD Project Manual Pages (ps)"&gt;ps(1)&lt;/a&gt; 
but look for it under the column 'state'&lt;/p&gt;

&lt;h4&gt;What does it reveal&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Have you had enough exposure in Unix Administration where this
information is ingrained?&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.urbandictionary.com/define.php?term=nfi" title="No F*n Idea"&gt;NFI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Why don't I know this ?&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Truthfully? Don't ever recall seeing this 'state' 'D' before to have 
investigated it.&lt;/li&gt;
&lt;li&gt;Obviously haven't worked on enough resource constrained systems
where the state 'D' was common enough to be noticeable.&lt;/li&gt;
&lt;li&gt;The last time I had to really worry about an under resourced machine
was with RedHat 4.0 or 4.2 and the i386 was blazingly fast, and we
had 4 x 9600Kbps zyxel fax/voice/modem hanging off the box doing 
wonders no-one had ever heard off.&lt;/li&gt;
&lt;li&gt;Well, the hosts I monitor are more single purposed, over engineered
for their purposes (because that's the only hardware you can get
these days.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After learning a little more about 'D' I'm a little more pleased with my
work environment than I was previously. There are some poor bastards
out there who either don't get enough resources, or a dealing with real
cool problems that have these 'D' issues.&lt;/p&gt;

&lt;h3&gt;Summary&lt;/h3&gt;

&lt;p&gt;If anything, I'm glad I've added to my glossary of commands, and leaves us
with this lesson:&lt;/p&gt;

&lt;p&gt;If you get a phone interview on a topic that is thoroughly covered by the Internet,
clarify with the interviewer whether you're allowed to use the Internet as a
resource, and if not, are you allowed to use other resources at your finger
tips (and voice search on your phone doesn't count!!! because my phone runs
an OS no one talks about.)&lt;/p&gt;

&lt;p&gt;There may be no ethical dilemma, just the need to clarify.&lt;/p&gt;

&lt;p&gt;8-)&lt;/p&gt;

    &lt;/div&gt;
&lt;/div&gt;
</description><guid isPermaLink="true">http://www.nomoa.com/bsd/dev/null/about/ethicacy.in.telephone.interview.answers.html</guid><pubDate>Wed, 30 Mar 2011 22:07:00 GMT</pubDate></item><item><title>Filter the Physical Interface</title><link>http://www.nomoa.com/bsd/dev/null/packet.filter/filter.the.physical.interface.html</link><description>&lt;div class="post"&gt;
    &lt;div class="posthead"&gt;
        &lt;h1&gt;&lt;a href="http://www.nomoa.com/bsd/dev/null/packet.filter/filter.the.physical.interface.html"&gt;Filter the Physical Interface&lt;/a&gt;&lt;/h1&gt;
        &lt;h2&gt;25 March 2011&lt;/h2&gt;
    &lt;/div&gt;
    &lt;div class="postbody"&gt;
        &lt;p&gt;Not that any of you would make such a disastrous error.&lt;/p&gt;

&lt;p&gt;But, apparently you need to read documentation, and re-read it every
once in a while, just in case you've forgotten why you previously
made a decision.&lt;/p&gt;

&lt;p&gt;Also known as, if you increase your management kung-fu, it may cost
you in your technical 'chops'&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.openbsd.org/faq/pf/filter.html#intro Introduction"&gt;FAQ: Packet Filter&lt;/a&gt;&lt;/p&gt;

&lt;pre class="manpage"&gt;
Packet filtering is the selective passing or blocking of data packets 
as they pass through a network interface.
&lt;/pre&gt;

&lt;p&gt;Somewhere along the line, I must have &lt;strong&gt;forgotten&lt;/strong&gt; the above FAQ entry, 
as one copy / paste followed another as we progressed from one
revision of the firewall rulesets to the next, to another OpenBSD
upgrade, to another.&lt;/p&gt;

&lt;p&gt;At some point a couple of years ago, I went through and replaced all
these silly filter rulesets that looked like:&lt;/p&gt;

&lt;pre class="config-file"&gt;
pass in on {carp0, em0}
&lt;/pre&gt;

&lt;p&gt;to the more accurate&lt;/p&gt;

&lt;pre class="config-file"&gt;
pass in on em0
&lt;/pre&gt;

&lt;p&gt;So, I must have seen the 'correct' way to do it at some point, but
all those dreams of &lt;em&gt;pass in on carp0&lt;/em&gt; kept floating around in 
my head that eventually, I came across a new feature I wanted to
try (i.e. &lt;a href="http://www.openbsd.org/faq/pf/filter.html#stateopts"&gt;Stateful Tracking Options&lt;/a&gt;)
and the late night dreams became a nightmare when I put it into
the live ruleset, and back in comes:&lt;/p&gt;

&lt;pre class="config-file"&gt;
pass in on {carp0, em0}
&lt;/pre&gt;

&lt;p&gt;Not totally fixated with the current flavour of the month science-fiction
novel, I look at that outrage and say to myself "that can't be!!!"
Promptly I delete the offending eye-sore, and we have the beautiful&lt;/p&gt;

&lt;pre class="config-file"&gt;
pass in on carp0
&lt;/pre&gt;

&lt;p&gt;Wooohooo, reset the firewall, totally ignore the test-suites
I've enacted for everyone else to perform whenever making
&lt;strong&gt;any&lt;/strong&gt; firewall ruleset changes. And, go to lunch.&lt;/p&gt;

&lt;p&gt;If you haven't figured out what happened (more to the point,
what didn't happen,) let's just say I had a lot cleaning
up, not with just the firewall rulesets, but also with
the services that weren't getting any traffic during that
'lunch break.'&lt;/p&gt;

&lt;p&gt;But, the &lt;a href="http://www.openbsd.org" title="The OpenBSD project produces a FREE, multi-platform 4.4BSD-based UNIX-like operating system. Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography. "&gt;OpenBSD&lt;/a&gt; project isn't usually dependent on the FAQ
for definitive statements on how things should be done. So, where
does it actually say that you can filter in on one thing and not
on another?&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=pfctl&amp;amp;sektion=8" title="OpenBSD Project Manual Pages (pfctl)"&gt;pfctl(8)&lt;/a&gt; documentation has this at the beginning.&lt;/p&gt;

&lt;pre class="manpage"&gt;
Packet filtering restricts the types of packets that pass through network
interfaces entering or leaving the host based on filter rules as
described in pf.conf(5).
&lt;/pre&gt;

&lt;p&gt;The &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=em&amp;amp;sektion=4" title="OpenBSD Project Manual Pages (em)"&gt;em(4)&lt;/a&gt; device driver, for a range of Intel NICS leads off with:&lt;/p&gt;

&lt;pre class="manpage"&gt;
NAME
     em - Intel PRO/1000 10/100/Gigabit Ethernet device
SYNOPSIS
     em* at pci?
&lt;/pre&gt;

&lt;p&gt;whereas the &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=carp&amp;amp;sektion=4" title="OpenBSD Project Manual Pages (carp)"&gt;carp(4)&lt;/a&gt; manpage says&lt;/p&gt;

&lt;pre class="manpage"&gt;
NAME
     carp - Common Address Redundancy Protocol
SYNOPSIS
     pseudo-device carp
&lt;/pre&gt;

&lt;p&gt;For my own edification, I record these notes, because apparently
the reading is that device drivers attached to a device is a
&lt;em&gt;network device&lt;/em&gt; and most definitely the carp interface is a
&lt;em&gt;pseudo-device&lt;/em&gt; (and as such is not a real &lt;em&gt;network device&lt;/em&gt;)&lt;/p&gt;

&lt;h4&gt;Summary&lt;/h4&gt;

&lt;p&gt;In short, note to self: remember the following.&lt;/p&gt;

&lt;p&gt;Life is organic, I make a lot of mistakes, and memory
cells fade, confuse, and outright lie about what you
remembered to have happened.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read the manual pages&lt;/li&gt;
&lt;li&gt;Read the FAQ&lt;/li&gt;
&lt;li&gt;When you're confident about your invulnerability
drink some kryptonite, and read the documentation again.&lt;/li&gt;
&lt;li&gt;Set a suite of tests to verify changes you've made to
any of your systems (make sure that current behaviour
is not negatively effected)&lt;/li&gt;
&lt;li&gt;Perform these tests, whenever you make changes.&lt;/li&gt;
&lt;li&gt;Don't make changes before lunch (or going home, unless
you've got remote access and can work on it while at
home or having dinner with the family.)&lt;/li&gt;
&lt;/ul&gt;

    &lt;/div&gt;
&lt;/div&gt;
</description><guid isPermaLink="true">http://www.nomoa.com/bsd/dev/null/packet.filter/filter.the.physical.interface.html</guid><pubDate>Fri, 25 Mar 2011 20:49:00 GMT</pubDate></item><item><title>Mitigating against Denial of Service</title><link>http://www.nomoa.com/bsd/dev/null/packet.filter/mitigate.denial.of.service.html</link><description>&lt;div class="post"&gt;
    &lt;div class="posthead"&gt;
        &lt;h1&gt;&lt;a href="http://www.nomoa.com/bsd/dev/null/packet.filter/mitigate.denial.of.service.html"&gt;Mitigating against Denial of Service&lt;/a&gt;&lt;/h1&gt;
        &lt;h2&gt;10 March 2011&lt;/h2&gt;
    &lt;/div&gt;
    &lt;div class="postbody"&gt;
        &lt;p&gt;Eventually had to get to the point of explicitly looking
at potential denial of service attacks on the firewall.&lt;/p&gt;

&lt;p&gt;For now we've implemented the following stratagem.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;meter traffic and define what is abusive behaviour, &lt;/li&gt;
&lt;li&gt;for traffic classified as abusive, put these 
IP Addresses in a bucket/table &lt;/li&gt;
&lt;li&gt;drop any existing states from &amp;lt;abusive&gt; users&lt;/li&gt;
&lt;li&gt;block any further connections from that IP Address&lt;/li&gt;
&lt;li&gt;At a later time, re-open connections from that IP Address&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your mileage may vary, but since it took almost an hour to figure out how
these things work, I'm putting it up here as a pointer to read the manuals
with some clearer understanding.&lt;/p&gt;

&lt;p&gt;Fragments: /etc/pf.conf&lt;/p&gt;

&lt;pre class="config-file"&gt;
table &amp;lt;abusers&amp;gt; {}

block drop in log quick on $external_if from &amp;lt;abusers&gt; to any

pass out quick on $dmz_if tagged INTERNET_DMZ

pass in on $external_if from any to &amp;lt;webservers&gt; \
    port https flags S/SA synproxy state \
    (max-src-nodes 50, max-src-conn 200, max-src-conn-rate 100/10, \
    overload &amp;lt;abusers&amp;gt; flush global) \
    tag INTERNET_DMZ
&lt;/pre&gt;

&lt;p&gt;OpenBSD's Packet Filter supports a number of options, to monitor
and manage the 'state' of packets as they traverse the firewall:
"&lt;a href="http://www.openbsd.org/faq/pf/filter.html#stateopts"&gt;Stateful Tracking Options&lt;/a&gt;"&lt;/p&gt;

&lt;h3&gt;Meter Traffic, Define Abusive Behaviour,&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://www.openbsd.org/faq/pf/filter.html#stateopts"&gt;Stateful Tracking Options&lt;/a&gt;
that let us meter the traffic include the sample rule shown above:&lt;/p&gt;

&lt;pre class="config-file"&gt;
pass in ... \
    ... \
    (max-src-nodes XXX, max-src-conn XXXX, max-src-conn-rate XXX/XX, \
    ...) \
    ...
&lt;/pre&gt;

&lt;p&gt;In our above example, we use the parameters &lt;strong&gt;max-src-nodes&lt;/strong&gt;, 
&lt;strong&gt;max-src-conn&lt;/strong&gt;, and &lt;strong&gt;max-src-conn-rate&lt;/strong&gt; to specify the
maximum number of connections that we will allow, before
we classify the connections as behaving abusively.&lt;/p&gt;

&lt;p&gt;You're best bet for what those settings mean, is to look it
up in the &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=pf.conf" title="OpenBSD Project Manual Pages (pf.conf)"&gt;pf.conf&lt;/a&gt; manpage and FAQ. Below
is a simplified explanatory.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;max-src-node&lt;/strong&gt; defines the maximum number of remote nodes
that may connect through this rule. For our example we know this
https service is through a very limited bandwidth, and
services have a small local client base.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;max-src-conn&lt;/strong&gt; defines the maximum number of connections
from a remote node supported by this rule. For our example,
we observe many connections for the web service from a 
single user connection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;max-src-conn-rate&lt;/strong&gt; defines, for a remote node's connection,
the maximum number of connections per second. For our
example, the metered rate is sufficient for our users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Any IP Address that breeches &lt;strong&gt;any&lt;/strong&gt; of the above boundaries
will categorise that IP Address. For a site allowing 50 max-src-nodes,
if it is under attack and your legitimate user is node #51, they will 
be blocked together with other members of the DDOS attack.&lt;/p&gt;

&lt;p&gt;Solving that particular solution, is left up to the users ingenuity.
But, there's enough flexibility in &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=pf" title="OpenBSD Project Manual Pages (pf)"&gt;pf&lt;/a&gt; to let you
deal with the above gracefully.&lt;/p&gt;

&lt;h3&gt;Abusive IP Addresses in a table&lt;/h3&gt;

&lt;p&gt;When network traffic for the above rule exceeds the set maximum
boundaries, we categorise IP Addresses exceeding these boundaries
by placing them in a PF table &amp;lt;abusers&gt;&lt;/p&gt;

&lt;pre class="config-file"&gt;
pass in ... \
    ... \
    (... , \
    overload &amp;lt;abusers&gt; ...) \
    tag INTERNET_DMZ
&lt;/pre&gt;

&lt;p&gt;The table &amp;lt;abusers&gt; will now contain IP Addresses of any remote
node that has exceeded our set boundaries.&lt;/p&gt;

&lt;h3&gt;Drop Existing States&lt;/h3&gt;

&lt;p&gt;The presumption, in this sample, is that if a remote node is abusing
connections to our site, then we need to drop all connections from 
that IP Address.&lt;/p&gt;

&lt;pre class="config-file"&gt;
pass in ... \
    ... \
    (... , \
    ... flush global) \
    ...
&lt;/pre&gt;

&lt;h3&gt;Block Connections from that IP Address&lt;/h3&gt;

&lt;pre class="config-file"&gt;
block drop in log quick on $external_if from &amp;lt;abusers&gt; to any
&lt;/pre&gt;

&lt;h3&gt;Un-Block Connections from that IP Address&lt;/h3&gt;

&lt;p&gt;We can use &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=pfctl" title="OpenBSD Project Manual Pages (pfctl)"&gt;pfctl&lt;/a&gt; to remove IP Addresses that have been
in the &amp;lt;abusers&gt; table for a set amount of time.&lt;/p&gt;

&lt;p&gt;At the command-line, we can use something like the below&lt;/p&gt;

&lt;pre class="command-line"&gt;
pfctl -t abusers -T expire 3600
&lt;/pre&gt;

&lt;p&gt;Which would transfer to a regular/scheduled check in your 
&lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=crontab" title="OpenBSD Project Manual Pages (crontab)"&gt;crontab&lt;/a&gt; to something like this.&lt;/p&gt;

&lt;pre class="config-file"&gt;
*/5       *      *      *      *      pfctl -t abusers -T expire 3600
&lt;/pre&gt;

&lt;p&gt;We now have examples of some mechanisms for monitoring and
mitigating against Denial of Service. The cool thing about the
OpenBSD packet filter solution, is that you have enough hooks
into the system that you can build upon it using &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=pfctl" title="OpenBSD Project Manual Pages (pfctl)"&gt;pfctl&lt;/a&gt; 
for a more complicated solution when your environment requires it.&lt;/p&gt;

&lt;p&gt;We also leave as an exercise, reading up on further &lt;a href="http://www.openbsd.org/faq/pf/filter.html"&gt;PF filtering&lt;/a&gt;:&lt;/p&gt;

&lt;pre class="config-file"&gt;
pass in ... \
    ... &lt;a href="http://www.openbsd.org/faq/pf/filter.html#tcpflags"&gt;flags S/SA&lt;/a&gt; &lt;a href="http://www.openbsd.org/faq/pf/filter.html#synproxy"&gt;synproxy&lt;/a&gt; state \
    ... \
    ... \
    ...
&lt;/pre&gt;

&lt;p&gt;What else do we have in OpenBSD's Packet Filter to mitigate
against Denial of Service attacks ? There's more you can look up
together with what's been alluded to above:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access Controls&lt;/li&gt;
&lt;li&gt;Rate Limiting&lt;/li&gt;
&lt;li&gt;Traffic Shaping&lt;/li&gt;
&lt;li&gt;Quality of Service&lt;/li&gt;
&lt;li&gt;Packet Re-assembly&lt;/li&gt;
&lt;li&gt;SYN Proxy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And then, there is your ingenuity to mould the above tools to your
directions. I'm sure you all got that, and more, from reading through 
the man pages (and if you didn't, please share your discovery with us?)&lt;/p&gt;

&lt;p&gt;Stay Safe.&lt;/p&gt;

    &lt;/div&gt;
&lt;/div&gt;
</description><guid isPermaLink="true">http://www.nomoa.com/bsd/dev/null/packet.filter/mitigate.denial.of.service.html</guid><pubDate>Thu, 10 Mar 2011 15:20:00 GMT</pubDate></item><item><title>smtpd_recipient_restrictions</title><link>http://www.nomoa.com/bsd/dev/null/bsd/smtpd_recipient_restrictions .html</link><description>&lt;div class="post"&gt;
    &lt;div class="posthead"&gt;
        &lt;h1&gt;&lt;a href="http://www.nomoa.com/bsd/dev/null/bsd/smtpd_recipient_restrictions .html"&gt;smtpd_recipient_restrictions&lt;/a&gt;&lt;/h1&gt;
        &lt;h2&gt;10 March 2011&lt;/h2&gt;
    &lt;/div&gt;
    &lt;div class="postbody"&gt;
        &lt;p&gt;Another case of trying to avoid the inevitable.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://spamhaus.org"&gt;spamhaus.org&lt;/a&gt; and &lt;a href="http://rfc-ignorant.org"&gt;rfc-ignorant.org&lt;/a&gt;
are an important part of your overall antispam arsenal. The only problem is
that although many of these services are free, you do need to at least:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;confirm you are working within their terms of use&lt;/li&gt;
&lt;li&gt;confirm the services are still valid&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="./gateway/proxies/postfix/proxy.instances.html"&gt;MX Proxy Extended, using Multiple Instances&lt;/a&gt;
has been updated to something that works for me. I'm sure there are better
solutions out there. But it doesn't hurt to try, or be exposed to other
methods?&lt;/p&gt;

    &lt;/div&gt;
&lt;/div&gt;
</description><guid isPermaLink="true">http://www.nomoa.com/bsd/dev/null/bsd/smtpd_recipient_restrictions .html</guid><pubDate>Thu, 10 Mar 2011 15:00:00 GMT</pubDate></item></channel></rss>
