<?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>schmichael&#039;s blog &#187; debian etch</title>
	<atom:link href="http://blog.schmichael.com/tag/debian-etch/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.schmichael.com</link>
	<description>good good study, day day up</description>
	<lastBuildDate>Wed, 16 May 2012 23:59:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Release Lenny!</title>
		<link>http://blog.schmichael.com/2008/12/27/release-lenny/</link>
		<comments>http://blog.schmichael.com/2008/12/27/release-lenny/#comments</comments>
		<pubDate>Sat, 27 Dec 2008 20:47:37 +0000</pubDate>
		<dc:creator>Michael Schurter</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian etch]]></category>
		<category><![CDATA[debian lenny]]></category>

		<guid isPermaLink="false">http://michael.susens-schurter.com/blog/?p=474</guid>
		<description><![CDATA[An article from El Reg about MySQL ends with a great quote: This is the same lesson that Debian hasn&#8217;t yet learned from Ubuntu: fast and good-enough always beats slow and correct. Release Lenny now! Update: Yay! It appears Debian &#8230; <a href="http://blog.schmichael.com/2008/12/27/release-lenny/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>An article from <a href="http://www.theregister.co.uk/2008/12/27/mysql_slowing_down/">El Reg about MySQL</a> ends with a great quote:</p>
<blockquote><p>This is the same lesson that Debian hasn&#8217;t yet learned from Ubuntu: fast and good-enough always beats slow and correct.</p></blockquote>
<p>Release <a href="http://www.debian.org/releases/lenny/">Lenny</a> now!</p>
<p><strong>Update:</strong> Yay! It appears <a href="http://master.debian.org/~secretary/gr_lenny/results.txt">Debian has voted that binary firmware blobs in the Linux kernel are GPL compatible</a> unless explicitly proven otherwise!  AFAIK this is in line with Linus&#8217;s reasoning as well.  Regardless of the &#8220;law,&#8221; end users benefit greatly from these blobs, and this means Lenny will hopefully be released much sooner than if another option had won!</p>
<p><small>The poor thing [Lenny] is already out of date (Old version of OpenOffice.org, 2 versions old on the kernel now, a version behind with Gnome, even further behind with KDE I believe, etc.)</small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schmichael.com/2008/12/27/release-lenny/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Recipe for a Transparent Linux Firewall and CherryPy Control Panel</title>
		<link>http://blog.schmichael.com/2007/11/06/recipe-for-a-transparent-linux-firewall-and-cherrypy-control-panel/</link>
		<comments>http://blog.schmichael.com/2007/11/06/recipe-for-a-transparent-linux-firewall-and-cherrypy-control-panel/#comments</comments>
		<pubDate>Tue, 06 Nov 2007 18:50:19 +0000</pubDate>
		<dc:creator>Michael Schurter</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cherrypy]]></category>
		<category><![CDATA[debian etch]]></category>
		<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">http://michael.susens-schurter.com/blog/2007/11/06/recipe-for-a-transparent-linux-firewall-and-cherrypy-control-panel/</guid>
		<description><![CDATA[At my previous job I built a transparent firewall with the help of a student. He hacked up some iptables scripts, and I hacked up a CherryPy application to control the firewall. It turned out to be pretty handy, so &#8230; <a href="http://blog.schmichael.com/2007/11/06/recipe-for-a-transparent-linux-firewall-and-cherrypy-control-panel/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="float: right; padding: 10px;"><a href="http://michael.susens-schurter.com/files/firewalladmin.png"><img alt="firewalladmin screenshot" src="http://michael.susens-schurter.com/files/firewalladmin-small.png"></a></div>
<p>At my previous job I built a transparent firewall with the help of a student.  He hacked up some iptables scripts, and I hacked up a CherryPy application to control the firewall.  It turned out to be pretty handy, so I&#8217;m finally getting around to posting it somewhere&#8230;</p>
<p><strong>Recipe:</strong> A transparent firewall to block certain IP addresses and a nice web based control panel to edit the blacklist.</p>
<p><strong>Ingredients:</strong></p>
<ul>
<li>Old computer (preferably a PIII) with 3 NICs</li>
<li><a href="http://www.debian.org/releases/etch/">Debian Etch</a> (or your Linux flavor of choice)</li>
<li>Packages: <a href="http://packages.debian.org/etch/iptables">iptables</a>, <a href="http://packages.debian.org/etch/bridge-utils">bridge-utils</a>, <a href="http://packages.debian.org/etch/python/python">Python</a>, <a href="http://packages.debian.org/etch/python/python-setuptools">setuptools</a>, CherryPy 3 (use easy_install), Genshi (use easy_install), <a href="http://packages.debian.org/etch/python/python-adns">Python-ADNS</a>, <a href="http://packages.debian.org/etch/python/python-sqlobject">SQLObject</a></li>
<li><a href="http://michael.susens-schurter.com/code/firewall-admin.tar.gz">firewall-admin.tar.gz</a> &#8211; my exceedingly creatively named firewall administration CherryPy web app</li>
</ul>
<p><strong>Directions:</strong></p>
<ol>
<li>Extract firewall-admin.tar.gz and change to the base directory.  By default its setup to be in /srv/firewall-admin</li>
<li>If you didn&#8217;t extract to <code>/srv/firewall-admin</code>, edit etc/rc.local and <em>basedir</em> in <code>firewalladmin.config</code> to reflect the current directory.</li>
<li>By default <code>firewalladmin/lib/bridge.py</code> <a href="http://www.linux-foundation.org/en/Net:Bridge">bridges</a> <em>eth1</em> and <em>eth2</em>, and <em>eth0</em> should be attached to your LAN to access SSH and the web control panel.</li>
<li>Edit firewalladmin.config to run on the IP address assigned to your administrative NIC and remember what port its set to run on.</li>
<li>Add the commands from <code>etc/rc.local</code> to your system&#8217;s existing <code>/etc/rc.local</code> script.  This will start the transparent firewall and web control panel on boot.</li>
<li>Next you&#8217;ll need to setup the database.  Edit line 28 in <code>firewalladmin/model.py</code> to set a default password and then run <code>createdb.py</code></li>
<li>You&#8217;re now ready to start the firewall and control panel simply by running <code>sudo etc/rc.local</code> (see <em>Caveats</em> below).  You can always test out just the web interface by running <code>start-firewalladmin.py</code></li>
<li>Browse to the web interface using the IP and Port setup in step 4, login using the username and password setup in step 6, and start configuring your transparent firewall!</li>
</ol>
<p>The firewall allows creating multiple blacklists (aka Categories) which can be edited/paused/deleted individually.  It has has <em>allow lists</em> (aka Whitelists) which can be used to allow specific internal IPs access to specific sites that might otherwise be blocked by a blacklist.</p>
<p><strong>Important:</strong> When a user visits a blocked site they are redirected to the IP and Port specified on line 10 of <code>firewalladmin/lib/iptables.py</code>.  We setup Apache to listen on that port and serve up a generic <em>You&#8217;ve been blocked</em> page, but you could be even more clever.  You&#8217;ll need a <code>.htaccess</code> file like the following to properly map all blocked traffic to your block page:</p>

<div class="wp_syntax"><div class="code"><pre class="htaccess" style="font-family:monospace;">RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.html [L,QSA]</pre></div></div>

<p><strong>Caveats</strong></p>
<ul>
<li>All scripts as well as the web control panel are <strong>executed as root</strong>.  This setup should only be run on dedicated hardware and not on a server with other services.</li>
<li>No test suite.  Mea culpa.</li>
<li>Little to no error handling.  You&#8217;ve been warned. <img src='http://blog.schmichael.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>Basically this is a quick hack and should not be used in the same way you use tested and maintained software.  YMMV</li>
</ul>
<p>This little setup has proved very useful at the school for augmenting their existing content filtering system, and all web traffic passes through it without trouble.  An old PIII can run a 3,000 domain blacklist at wirespeed on a 10 Mbps link while using less than 10% of the CPU.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schmichael.com/2007/11/06/recipe-for-a-transparent-linux-firewall-and-cherrypy-control-panel/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

