2003-12-27 04:07:48 +01:00
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
|
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
|
|
|
<article>
|
2003-12-28 16:58:02 +01:00
|
|
|
<!--$Id$-->
|
2003-12-27 04:07:48 +01:00
|
|
|
|
|
|
|
<articleinfo>
|
|
|
|
<title>User-defined Actions</title>
|
|
|
|
|
|
|
|
<authorgroup>
|
|
|
|
<author>
|
|
|
|
<firstname>Tom</firstname>
|
|
|
|
|
|
|
|
<surname>Eastep</surname>
|
|
|
|
</author>
|
|
|
|
</authorgroup>
|
|
|
|
|
|
|
|
<pubdate>2003-12-09</pubdate>
|
|
|
|
|
|
|
|
<copyright>
|
|
|
|
<year>2001</year>
|
|
|
|
|
|
|
|
<year>2002</year>
|
|
|
|
|
|
|
|
<year>2003</year>
|
|
|
|
|
|
|
|
<holder>Thomas M. Eastep</holder>
|
|
|
|
</copyright>
|
|
|
|
|
|
|
|
<legalnotice>
|
|
|
|
<para>Permission is granted to copy, distribute and/or modify this
|
|
|
|
document under the terms of the GNU Free Documentation License, Version
|
|
|
|
1.2 or any later version published by the Free Software Foundation; with
|
|
|
|
no Invariant Sections, with no Front-Cover, and with no Back-Cover
|
|
|
|
Texts. A copy of the license is included in the section entitled
|
|
|
|
<quote><ulink url="GnuCopyright.htm">GNU Free Documentation License</ulink></quote>.</para>
|
|
|
|
</legalnotice>
|
|
|
|
</articleinfo>
|
|
|
|
|
|
|
|
<para>Prior to Shorewall version 1.4.9, rules in /etc/shorewall/rules were
|
|
|
|
limited to those defined by Netfilter (ACCEPT, DROP, REJECT, etc.).
|
|
|
|
Beginning with Shorewall version 1.4.9, users may use sequences of these
|
|
|
|
elementary operations to define more complex actions.</para>
|
|
|
|
|
|
|
|
<para>To define a new action:</para>
|
|
|
|
|
|
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>Add a line to /etc/shorewall/actions that names your new action.
|
|
|
|
Action names must be valid shell variable names as well as valid
|
|
|
|
Netfilter chain names. It is recommended that the name you select for a
|
|
|
|
new action begins with with a capital letter; that way, the name
|
|
|
|
won't conflict with a Shorewall-defined chain name.</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Once you have defined your new action name (ActionName), then copy
|
|
|
|
/etc/shorewall/action.template to /etc/shorewall/action.ActionName (for
|
2003-12-28 16:58:02 +01:00
|
|
|
example, if your new action name is <quote>Foo</quote> then copy
|
|
|
|
/etc/shorewall/action.template to /etc/shorewall/action.foo).</para>
|
2003-12-27 04:07:48 +01:00
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>Now modify the new file to define the new action.</para>
|
|
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
|
|
|
|
|
|
<para>Columns in the action.template file are as follows:</para>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>TARGET - Must be ACCEPT, DROP, REJECT, LOG, QUEUE or
|
|
|
|
<action> where <action> is a previously-defined action.
|
2003-12-28 16:58:02 +01:00
|
|
|
The TARGET may optionally be followed by a colon (<quote>:</quote>) and
|
|
|
|
a syslog log level (e.g, REJECT:info or ACCEPT:debugging). This causes
|
|
|
|
the packet to be logged at the specified level. You may also specify
|
|
|
|
ULOG (must be in upper case) as a log level.This will log to the ULOG
|
|
|
|
target for routing to a separate log through use of ulogd
|
2003-12-27 04:07:48 +01:00
|
|
|
(http://www.gnumonks.org/projects/ulogd).</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>SOURCE - Source hosts to which the rule applies. A comma-separated
|
|
|
|
list of subnets and/or hosts. Hosts may be specified by IP or MAC
|
2003-12-28 16:58:02 +01:00
|
|
|
address; mac addresses must begin with <quote>~</quote> and must use
|
|
|
|
<quote>-</quote> as a separator.</para>
|
2003-12-27 04:07:48 +01:00
|
|
|
|
|
|
|
<para>Alternatively, clients may be specified by interface name. For
|
|
|
|
example, eth1 specifies a client that communicates with the firewall
|
2003-12-28 16:58:02 +01:00
|
|
|
system through eth1. This may be optionally followed by another colon (<quote>:</quote>)
|
|
|
|
and an IP/MAC/subnet address as described above (e.g.,
|
2003-12-27 04:07:48 +01:00
|
|
|
eth1:192.168.1.5).</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>DEST - Location of Server. Same as above with the exception that
|
|
|
|
MAC addresses are not allowed.</para>
|
|
|
|
|
|
|
|
<para>Unlike in the SOURCE column, you may specify a range of up to 256
|
2003-12-28 16:58:02 +01:00
|
|
|
IP addresses using the syntax <first ip>-<last ip>.</para>
|
2003-12-27 04:07:48 +01:00
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
2003-12-28 16:58:02 +01:00
|
|
|
<para>PROTO - Protocol - Must be <quote>tcp</quote>, <quote>udp</quote>,
|
|
|
|
<quote>icmp</quote>, a number, or <quote>all</quote>.</para>
|
2003-12-27 04:07:48 +01:00
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>DEST PORT(S) - Destination Ports. A comma-separated list of Port
|
|
|
|
names (from /etc/services), port numbers or port ranges; if the protocol
|
2003-12-28 16:58:02 +01:00
|
|
|
is <quote>icmp</quote>, this column is interpreted as the destination
|
2003-12-27 04:07:48 +01:00
|
|
|
icmp-type(s).</para>
|
|
|
|
|
|
|
|
<para>A port range is expressed as <low port>:<high
|
|
|
|
port>.</para>
|
|
|
|
|
|
|
|
<para>This column is ignored if PROTOCOL = all but must be entered if
|
|
|
|
any of the following ields are supplied. In that case, it is suggested
|
2003-12-28 16:58:02 +01:00
|
|
|
that this field contain <quote>-</quote>.</para>
|
2003-12-27 04:07:48 +01:00
|
|
|
|
|
|
|
<para>If your kernel contains multi-port match support, then only a
|
|
|
|
single Netfilter rule will be generated if in this list and the CLIENT
|
|
|
|
PORT(S) list below:</para>
|
|
|
|
|
|
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>There are 15 or less ports listed.</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>No port ranges are included.</para>
|
|
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
|
|
|
|
|
|
<para>Otherwise, a separate rule will be generated for each port.</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>RATE LIMIT - You may rate-limit the rule by placing a value in
|
|
|
|
this column:</para>
|
|
|
|
|
|
|
|
<para><programlisting> <rate>/<interval>[:<burst>]</programlisting>where
|
2003-12-28 16:58:02 +01:00
|
|
|
<rate> is the number of connections per <interval> (<quote>sec</quote>
|
|
|
|
or <quote>min</quote>) and <burst> is the largest burst
|
|
|
|
permitted. If no <burst> is given, a value of 5 is assumed.
|
|
|
|
There may be no whitespace embedded in the specification.</para>
|
2003-12-27 04:07:48 +01:00
|
|
|
|
|
|
|
<para><programlisting> Example: 10/sec:20</programlisting></para>
|
|
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
<para>Example:</para>
|
|
|
|
|
|
|
|
<para><emphasis role="bold">/etc/shorewall/actions:</emphasis></para>
|
|
|
|
|
|
|
|
<para><programlisting> LogAndAccept</programlisting><emphasis
|
|
|
|
role="bold">/etc/shorewall/action.LogAndAccept</emphasis><programlisting> LOG:info
|
|
|
|
ACCEPT</programlisting></para>
|
|
|
|
</article>
|