<?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>Techinvasion.net &#187; FreeBSD</title>
	<atom:link href="http://www.techinvasion.net/category/freebsd/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.techinvasion.net</link>
	<description></description>
	<lastBuildDate>Tue, 13 Jul 2010 15:44:15 +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>Found This Funny Banner Today!</title>
		<link>http://www.techinvasion.net/2010/06/28/found-this-funny-banner-today/</link>
		<comments>http://www.techinvasion.net/2010/06/28/found-this-funny-banner-today/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 23:05:35 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.techinvasion.net/?p=239</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.techinvasion.net/wp-content/uploads/2010/06/linuxusageamongterrorisvv8.gif"><img class="aligncenter size-full wp-image-240" title="linuxusageamongterrorisvv8" src="http://www.techinvasion.net/wp-content/uploads/2010/06/linuxusageamongterrorisvv8.gif" alt="" width="300" height="250" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.techinvasion.net/2010/06/28/found-this-funny-banner-today/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hacked Iphone goodness</title>
		<link>http://www.techinvasion.net/2007/10/30/hacked-iphone-goodness/</link>
		<comments>http://www.techinvasion.net/2007/10/30/hacked-iphone-goodness/#comments</comments>
		<pubDate>Wed, 31 Oct 2007 01:05:32 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.techinvasion.net/2007/10/30/hacked-iphone-goodness/</guid>
		<description><![CDATA[As promised here is some iPhone screenshots!!!.   ]]></description>
			<content:encoded><![CDATA[<p>As promised here is some iPhone screenshots!!!.<img src="http://www.techinvasion.net/wp-content/uploads/2007/10/20071030205555.png" alt="New Desktop theme" /><span id="more-22"></span> <img src="http://www.techinvasion.net/wp-content/uploads/2007/10/20071030205856.png" alt="Terminal installed on iphone" />  <img src="http://www.techinvasion.net/wp-content/uploads/2007/10/20071030210412.png" alt="iPhone running top" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.techinvasion.net/2007/10/30/hacked-iphone-goodness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iphone Fun</title>
		<link>http://www.techinvasion.net/2007/10/29/iphone-fun/</link>
		<comments>http://www.techinvasion.net/2007/10/29/iphone-fun/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 20:37:38 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.techinvasion.net/2007/10/29/iphone-fun/</guid>
		<description><![CDATA[I have spent the last couple weeks breaking the Iphone in every way possible. I Now have it running as a mail server. One of the great things about the iphone is that it is running mac os x leopard, which is just version 9 of the darwin kernel. That means that once you get [...]]]></description>
			<content:encoded><![CDATA[<p>I have spent the last couple weeks breaking the Iphone in every way possible. I Now have it running as a mail server. One of the great things about the iphone is that it is running mac os x leopard, which is just version 9 of the darwin kernel. That means that once you get out of the ch-rooted environment on the phone, you can install the BSD subsystem. The BSD subsystem basically just adds back all the unix tools we have come to know and love. After that it is just a matter of compiling an embedded version of apache or your web server of choice. Next you can use NFS shares to mount more available storage. I will post some pictures here of some interesting screen shots. The arm cpu in the phone is actually quite fast. This of course is all just for iphun ( pun intended) however it is nice to have shell access on the phone. I do a lot of networking for a living and it is nice to have ssh and telnet on my phone. This makes it much easier to program routers and do many other things</p>
<p><span id="more-21"></span></p>
<p>#uname -a</p>
<p><span style="font-weight: bold" class="Apple-style-span"><span style="font-weight: normal" class="Apple-style-span"></span></span>Darwin John Burns&#8217;s iPhone 9.0.0d1 Darwin Kernel Version 9.0.0d1: Wed Sep 19 00:08:43 PDT 2007; root:xnu-933.0.0.203.obj~21/RELEASE_ARM_S5L8900XRB iPhone1,1</p>
<p>Darwin#</p>
<p>Macintosh:~ John$ uname -a</p>
<p>Darwin Macintosh.local 9.0.0 Darwin Kernel Version 9.0.0: Tue Oct 9 21:37:58 PDT 2007; root:xnu-1228~1/RELEASE_PPC Power Macintosh</p>
<p><span style="font-style: italic" class="Apple-style-span"><span style="font-weight: bold" class="Apple-style-span"><span style="font-style: normal" class="Apple-style-span"><span style="font-weight: normal" class="Apple-style-span">Macintosh:~ John$</span></span></span></span></p>
<p>Very interesting to note the kernel version number on my leopard g4 vs the iphone. Anyways I am still fiddling with it, however if you want more Iphone hacks and an explanation of how to do them, please post a response to this post and I will write and upload the articles.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.techinvasion.net/2007/10/29/iphone-fun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IP Filter and FreeBSD</title>
		<link>http://www.techinvasion.net/2007/06/25/ip-filter-and-freebsd/</link>
		<comments>http://www.techinvasion.net/2007/06/25/ip-filter-and-freebsd/#comments</comments>
		<pubDate>Mon, 25 Jun 2007 05:27:21 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.techinvasion.net/?p=7</guid>
		<description><![CDATA[IPF is a very robust firewall included in FreeBSD by default. This is a statefull firewall with logging capabilities that can also be used to NAT a local network in situations where the FreeBSD box is the router. The best way to get IPF working is to compile the kernel with support built in. Although [...]]]></description>
			<content:encoded><![CDATA[<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">IPF is a very robust firewall included in FreeBSD by default. This is a statefull firewall with logging capabilities that can also be used to NAT a local network in situations where the FreeBSD box is the router. The best way to get IPF working is to compile the kernel with support built in. Although the default kernel has support through the use of loadable modules, compiling the options into the kernel provide a more flexible and robust system.</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><span id="more-7"></span></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">The first thing you want to do is download the FreeBSD source. This can be done by using the ports tree to install cvsup, and modifying the standard-supfile for your release. Once this is done you can run the following command:</font></p>
<p><strong><font face="Calibri">#<em>cvsup –g –L2 ./standard-supfile</em></font></strong></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">Once the source tree is installed you will want to add the options to the kernel source.</font></p>
<p><strong><em><font face="Calibri">#cd /usr/src/sys/conf/i386/</font></em></strong></p>
<p><strong></strong><strong><em><font face="Calibri"># ee ./GENERIC</font></em></strong></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">You will want to add the following line for a secure and efficient<span>?  </span>IPF installation.</font></p>
<p><strong><em><font face="Calibri">options IPFILTER</font></em></strong></p>
<p><strong><em><font face="Calibri"><span></span><span><br />
</span>#turn on support for </font></em></strong></p>
<p><strong><em><font face="Calibri">IP Filter</font></em></strong><strong><em><font face="Calibri">options </font></em></strong></p>
<p><strong><em><font face="Calibri">IPFILTER_LOG</font></em></strong></p>
<p><strong><em><font face="Calibri"><span></span>#Turn on logging by default </font></em></strong><strong><em><font face="Calibri">options </font></em></strong></p>
<p><strong><em><font face="Calibri">IPFILTER_DEFAULT_BLOCK<span></span></font></em></strong></p>
<p><strong><em><font face="Calibri"><span>  </span>#change state from default allow to default block</font></em></strong></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">The last command is very important as it tells the kernel to drop all packets on all interfaces by default. This means that you will have to explicitly allow all packets, even on loopback interfaces like LO</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">After these commands are entered and the file is saved you can compile the kernel by using the following commands</font></p>
<p><strong><em><font face="Calibri">#cd /usr/src</font></em></strong></p>
<p><strong></strong><strong><em><font face="Calibri">#make buildkernel KERNCONF=GENERIC</font></em></strong></p>
<p><strong></strong><strong><em><font face="Calibri">#make installkernel</font></em></strong></p>
<p><strong></strong><strong><em><font face="Calibri">#shutdown –r now</font></em></strong></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">Once the machine reboots you will have to edit the rc.conf file in order to set some configuration settings for IPF. </font></p>
<p><strong><em><font face="Calibri">#ee /etc/rc.conf</font></em></strong></p>
<p><strong></strong><strong><em><font face="Calibri">ipfilter_enable=&#8221;YES&#8221;</font></em></strong></p>
<p><strong><em><font face="Calibri"><span><br />
</span># Start ipf firewall</font></em></strong><strong></strong></p>
<p><strong><em><font face="Calibri">ipfilter_rules=&#8221;/etc/ipf.rules&#8221;</font></em></strong></p>
<p><strong><em><font face="Calibri"># loads rules definition text file</font></em></strong></p>
<p><strong></strong><strong><em><font face="Calibri">ipmon_enable=&#8221;YES&#8221;</font></em></strong></p>
<p><strong><em><font face="Calibri"># Start IP monitor </font></em></strong></p>
<p><strong><em><font face="Calibri">log</font></em></strong><strong><em><font face="Calibri">ipmon_flags=&#8221;-Ds&#8221;</font></em></strong></p>
<p><strong><em><font face="Calibri"><span></span><span></span># D = start as daemon</font></em></strong><strong><em><font face="Calibri"><span></span><span> </span></font></em></strong></p>
<p><strong><em><font face="Calibri"><span></span># s = log to syslog</font></em></strong></p>
<p><strong><em><font face="Calibri"># v = log tcp window, ack, seq</font></em></strong></p>
<p><strong></strong><strong><em><font face="Calibri"><span></span># n = map IP &amp; port to names</font></em></strong></p>
<p><strong></strong><font face="Times New Roman">If you have a LAN behind this firewall that uses the reserved private IP address ranges, then you need to add the following to enable <acronym>NAT</acronym> functionality:</font></p>
<p><strong><em><font face="Calibri">gateway_enable=&#8221;YES&#8221;</font></em></strong></p>
<p><strong><em><font face="Calibri"><span></span><span></span># Enable as LAN gateway</font></em></strong></p>
<p><strong></strong><strong><em><font face="Calibri">ipnat_enable=&#8221;YES&#8221;</font></em></strong></p>
<p><strong><em><font face="Calibri"><span> </span># Start ipnat function</font></em></strong></p>
<p><strong></strong><strong><em><font face="Calibri">ipnat_rules=&#8221;/etc/ipnat.rules&#8221;<span></span></font></em></strong></p>
<p><strong><em><font face="Calibri"># rules definition file for ipnat</font></em></strong></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">Now it is time to look at a sample firewall rule file and see how IP Filter works. <span>? </span>On a system with 1 network card, such as a web server or such.</font></p>
<p><strong><em><font face="Calibri">#cat /etc/ipf.rules</font></em></strong></p>
<p><strong><em><font face="Calibri">#######################</font></em></strong></p>
<p><strong><em><font face="Calibri">#</font></em></strong><strong><em><font face="Calibri">#loop back interface, do not restrict this interface it will break system!!!#####</font></em></strong></p>
<p><strong><em><font face="Calibri">pass out quick on lo0<br />
pass in quick on lo0</font></em></strong><tt><strong><em><span style="font-size: 10pt; line-height: 115%"></span></em></strong></tt></p>
<p><tt><strong><em><span style="font-size: 10pt; line-height: 115%">###interface rl0 internet and lan interface#####</span></em></strong></tt></p>
<p><strong><em><font face="Calibri">Pass in quick on rl0<span>  </span></font></em></strong></p>
<p><strong><em><font face="Calibri"><span></span>#needed because of implicit block in kernel</font></em></strong></p>
<p><strong></strong><strong><em><font face="Calibri">block in on rl0        </font></em></strong></p>
<p><strong><em><font face="Calibri">#without the quick command it will match this rule but check to see if it matches others<br />
block in quick on rl0 from 192.168.0.0/16 to any        </font></em></strong></p>
<p><strong><em><font face="Calibri">#anti <span></span>spoofing do not to use this if nic is on lan also<br />
block in quick on rl0 from 172.16.0.0/12 to any         </font></em></strong></p>
<p><strong><em><font face="Calibri">#anti<span> </span>spoofing do not to use this if nic is on lan also<br />
block in quick on rl0 from 10.0.0.0/8 to any </font></em></strong></p>
<p><strong><em><font face="Calibri">#anti <span></span>spoofing remember not to use this if nic is on lan also<br />
block in log quick on rl0 from 127.0.0.0/8 to any</font></em></strong></p>
<p><strong><em><font face="Calibri">#anti <span></span>spoofing loopback network<br />
block in log quick on rl0 from 20.20.20.0/24 to any       #anti <span>? </span>spoofing<br />
block in log quick on rl0 from any to 20.20.20.0/32       #anti <span></span>spoofing<br />
block in log quick on rl0 from any to 20.20.20.255/32   #anti <span> </span>spoofing<br />
pass out quick on rl0 proto tcp from 10.0.0.1 to any keep state<br />
pass out quick on rl0 proto udp from 10.0.0.1 to any keep state<br />
pass out quick on rl0 proto icmp from 10.0.0.1 to any keep state</font></em></strong></p>
<p><em><font face="Calibri">#################################################</font></em><font face="Calibri"> </font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">Now let’s break this file down one line at a time to understand what is does. Remember that we used the default block all command when we recompiled the kernel. This is secure by default because it operated on the bases that everything is blocked unless we specifically let in a packet or protocol. The first thing we have to do is tell IP Filter that it should allow everything in and out of the lo interface. Lo is the loopback interface and is used for interproccess communication. Lo is always 127.0.0.1.</font></p>
<p><strong><em><font face="Calibri">pass out quick on lo0<br />
pass in quick on lo0</font></em></strong><font face="Calibri"> </font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">The above two commands<span>?  </span>allow traffic to flow freely in and out of the loopback interface. Let me ask you a question for the sake of learning. Look at the rules below and think about what you think will happen when a user tries to connect to this web server.</font></p>
<p><strong><em><font face="Calibri">Block in on rl0 proto tcp from any to any</font></em></strong><strong></strong></p>
<p><strong><em><font face="Calibri">Pass in on rl0 proto tcp from any<span> </span>to any port = 80</font></em></strong><em><font face="Calibri"> </font></em></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri"><span> </span>Now if you are<span> </span>familiar with Cisco access-lists and other similar firewalls you may have said: the packet is a web request packet, a syn packet to be precise. This packet will match the first rule and be dropped since all www packets are tcp.</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">Won’t you be surprised when the packet skips on past the first rule and connects to your web server. In IPF a packet<span>?</span>is evaluated against 1 rule at a time from top to bottom. But the fate of the packet is decided based on the last rule it matches. If you want a packet to match only a single rule and be passed or dropped, you need to add the keyword quick to your command. Such as …</font></p>
<p><strong><em><font face="Calibri">pass out quick on lo0<br />
pass in quick on lo0</font></em></strong><font face="Calibri"> </font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">Now you may ask “Why would this behavior be useful?” This behavior is useful for many situations but let’s consider one example. In this example the computer the firewall is protecting is a FreeBSD desktop computer which hosts’ not services. So we want to block all incoming packets that have no state table entry(more on state tables later). In order to do this you have the following rule.</font></p>
<p><strong><em><font face="Calibri">block in quick on rl0</font></em></strong></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">The above command will work however it will not give you any information about the packet that was dropped. Now say for example you want to block all unsolicited packets but you also want to log any packets that are trying to carry out a spoof attack on your network. In this case the following commands would be more useful.</font></p>
<p><strong><em><font face="Calibri">block in on rl0</font></em></strong><font face="Calibri"></font></p>
<p><font face="Calibri"><strong><em>block in log quick on rl0 from 127.0.0.0/8 to any<span>          </span></em></strong></font></p>
<p><font face="Calibri"><strong><em><span></span>#anti<span> </span>spoofing loopback network</em></strong><strong><em><span style="font-size: 10pt; font-family: 'Courier New'"></span></em></strong></font><em><font face="Calibri"> </font></em></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">In this situation the packet will be dropped but if the packet is a packet from the internet masquerading as a loopback packet it will be dropped and logged. <span></span>This is why this behavior is so important, because it gives you the flexibility to have more control over your firewall with a minimum of effort.</font></p>
<p><strong><font face="Calibri">Keep State</font></strong></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">Now you will notice in our example config file above we had blocked all incoming connections. You may be asking yourself<span>?  </span>how the config works if every reply coming back is blocked. The key to that config working is in the <em>keep state</em> keyword. Let’s take a look at the following snippet of code:</font></p>
<p><strong><em><font face="Calibri">pass out quick on rl0 proto tcp from 10.0.0.1 to any keep state<br />
pass out quick on rl0 proto udp from 10.0.0.1 to any keep state<br />
pass out quick on rl0 proto icmp from 10.0.0.1 to any keep state</font></em></strong></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">You will notice in the above code that we allow all tcp, udp, and icmp packets to go to the internet. The important part of the above commands is the keep state command. What this does is tell the computer to track that tcp session and keep a table of all outgoing requests. When the packet hits the interface which is a reply to a session which we opened up. The computer will dynamically add a rule to allow this tcp stream to enter the computer. In this way all unsolicited <span>? </span>packets are dropped except those packets responding to requests initiated by you.</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">Now let’s say that you want to host an apache web server on your desktop for testing purposes. It is very simple to modify the<span>?  </span>config to allow incoming connections by adding the following line</font></p>
<p><strong><em><font face="Calibri">Pass in quick on rl0 proto tcp from any to any port = 80 flags S keep state</font></em></strong></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">Just make sure this line goes above the block in lines so that it is processed first to make sure that packet goes through. It is important to remember that this command can be modifies for any service you want to run. Here are some examples below</font></p>
<p><strong><em><font face="Calibri">Pass in quick on rl0 proto udp from any to any port = 53 keep state </font></em></strong></p>
<p><strong><em><font face="Calibri">#dns server</font></em></strong></p>
<p><strong><em></em></strong><strong><em><font face="Calibri">Pass in quick on rl0 proto tcp from any to any port = 22 flags S keep state</font></em></strong></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">It is also important to note that the <strong><em>flags S command </em></strong>only allows in lone syn flags on packets. What this means is that it will only let in the initial connection request not just any packet that is part of a stream. This helps protect against man in the middle attacks as well as keep packets that will be dropped from taking up resources in your tcp stack.</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">Back to blocking ports, there is one keyword that can help us increase the stealth of our firewall. In a typical exchange when a packet is blocked we decrement the TTL like the RFC’s say we should. But what this does is show that there is a hop here and it announces to the world that we exist. Instead of using the above rule we could rewrite it such that it does not decrement the TTL of the packet. To the rest of the world it looks as if the computer does not exist.</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">We can do this by changing the following commands from</font></p>
<p><strong><em><font face="Calibri">block in on rl0 </font></em></strong></p>
<p><strong><em></em></strong><font face="Calibri"><strong><em>block in log quick on rl0 from 127.0.0.0/8 to any</em></strong></font></p>
<p><font face="Calibri"><strong><em>#anti <span></span>spoofing loopback network</em></strong><strong><em><span style="font-size: 10pt; font-family: 'Courier New'"></span></em></strong></font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">to</font></p>
<p><strong><em><font face="Calibri">block in on rl0</font></em></strong></p>
<p><strong><em></em></strong><font face="Calibri"><strong><em>block in log quick on rl0 fastroute from 127.0.0.0/8 to any<span>  </span></em></strong></font></p>
<p><font face="Calibri"><strong><em><span></span>#anti <span></span>spoofing loopback network</em></strong><strong><em><span style="font-size: 10pt; font-family: 'Courier New'"></span></em></strong></font><font face="Calibri">? </font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">Notice I added the <strong><em>Fastroute </em></strong>keyword. This tells the firewall not to decrement TTL of a packet when it is blocked.</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">Now let me show you how to activate the rule set for IPF once you have created your file. To activate a rule set issue the following command.</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">The ipf command is used to load your rules file. Normally you create a file containing your custom rules and use this command to replace in mass the currently running firewall internal rules:</font></p>
<p><strong><em><font face="Calibri"># ipf -Fa -f /etc/ipf.rules</font></em></strong></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">-Fa means flush all internal rules tables.</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">-f means this is the file to read for the rules to load.</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">This gives you the ability to make changes to your custom rules file, run the above IPF command, and thus update the running firewall with a fresh copy of all the rules without having to reboot the system. This method is very convenient for testing new rules as the procedure can be executed as many times as needed.</font></p>
<p><font face="Calibri"><br />
</font></p>
<p style="margin: 0in 0in 10pt" class="MsoNormal"><font face="Calibri">This is just a basic introduction to IPF rules. There are many more techniques and things that can be done such as rule groups which can speed up the rule processing on large access-lists. And variable substitution which can help make writing complex rules sets easy. I will cover NAT and the various commands to monitor the firewall such as ipfstat in another installment of the how-to. I hope you enjoyed it!</font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.techinvasion.net/2007/06/25/ip-filter-and-freebsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
