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>
