Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Mar 2003 00:36:44 +0200
From:      Giorgos Keramidas <keramida@ceid.upatras.gr>
To:        Brian Henning <b1henning@hotmail.com>
Cc:        freebsd-questions@FreeBSD.ORG
Subject:   Re: firewall revisited
Message-ID:  <20030305223644.GA29314@gothmog.gr>
In-Reply-To: <OE14i67EKRuYDlrjbud000010a0@hotmail.com>
References:  <OE14i67EKRuYDlrjbud000010a0@hotmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2003-03-05 09:32, Brian Henning <b1henning@hotmail.com> wrote:
> Hello-
> currently my rc.conf is set up like this for my gateway router.
> gateway_enable="YES"
> firewall_enable="YES"
> firewall_type="OPEN"
> natd_enable="YES"
> natd_interface="rl1"     # natd -interface rl1, public interface
> natd_flags=""            # sysctl net.inet.ip.forwarding=1
>
> how can i have the script /etc/ipfw.rules run instead of
> /etc/rc.firewall. can i change
> firewall_type="OPEN" to firewall_type="" and create the entry
> firewall_script="/etc/ipfw.rules"?

Why are you confused?

That depends on what you're trying to do and what the contents of
/etc/ipfw.rules are.  There are currently the following ways to set up
a completely custom set of firewall rules:

1. Rewrite /etc/rc.firewall

   This can easily be done, if you replace /etc/rc.firewall with your
   custom script.  This isn't recommended though since you'd have to
   carefully track all changes to the official version of the
   rc.firewall script and merge any interesting stuff back to your
   version of the script.

2. Add a new firewall "type" to rc.firewall

   Copying one of the existing firewall types you cann easily add a
   new one, and make sure that it loads all (and only) the ipfw(8)
   rules that you want.  This can be difficult to keep up to date
   after changes to the rc.firewall script, but not as difficult to
   keep up to date as option #1.

3. Write your own version of a firewall script

   Copy `rc.firewall' to a new script (i.e., `rc.firewall.local') and
   make your changes to the new script.  Then set firewall_script to
   point to the new script in `/etc/rc.conf'.  For example:

	% cat /etc/rc.firewall.local
	fwcmd="/sbin/ipfw"
	${fwcmd} -q flush
	${fwcmd} add 1 pass ip from any to any

	% grep firewall_script /etc/rc.conf
	firewall_script="/etc/rc.firewall.local"

   This is a fairly nic way of doing things, but it doesn't work
   correctly if you want to tweak the way ipfw(8) is called by
   settings things like firewall_quiet="YES" in your `rc.conf' file.
   Mostly because the logic for all those firewall_xxx options is
   implemented as part of the existing `rc.firewall' script.

4. Create a ruleset file, and point rc.firewall to it

   You can always write your own set of firewall rules, without a
   ${fwcmd} prefix, and save it to a file, i.e. `/etc/ipfw.rules'.
   This is a plain text file that contains *only* firewall rules.
   No shell commands.  You can use `#' for comments (as shown in the
   sample file below):

	% cat /etc/ipfw.rules
	flush
	add allow ip from any to any

   Then you just need to make sure that your `rc.conf' contains the
   following two lines:

	firewall_enable="YES"
	firewall_type="/etc/ipfw.rules"

   The firewall_type value is the *FULL* path to the ruleset file.  It
   is important to include the leading `/' character.  This way,
   ipfw(8) will know that this is the path of a rule file and not the
   name of a command (like `add' in `ipfw add ...').

   This is the way I usually prefer setting ipfw(8) up.  For various
   reasons.  One of them is that my firewall rules are not lost in
   between the lines of some shell script that I don't remember I have
   edited.  Another reason is that having made no changes to the
   original `rc.firewall' script, there is no need to take care for
   merging changes later with mergemaster(8).

Phew.  This was long.

- Giorgos


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030305223644.GA29314>